LogiWiki
logi_wiki
http://logi.wiki/index.php/Main_Page
MediaWiki 1.40.0
case-sensitive
Media
Special
Talk
User
User talk
LogiWiki
LogiWiki talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Campaign
Campaign talk
Module
Module talk
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Shiny
Shiny talk
Main Page
0
63
7686
7680
2024-08-30T01:00:51Z
CBax
996
/* Welcome to Logi.Wiki */
7686
wikitext
text/x-wiki
=='''Welcome to Logi.Wiki'''==
This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions. <br>
== '''We now have a Discord! Please [https://repo.doslabelectronics.com/misc/logicord.html click here] for the invite link.''' ==
<strong><span style="color:red">If you need any help</span></strong>, contact @cbax on discord or visit the [https://doslabelectronics.com/contact DosLab Electronics contact form]. [https://www.facebook.com/profile.php?id=100082550894310 David Roberts] is also available on Facebook, you can tag him in the [https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Repair Community] group. PLEASE SEND ME ANY FEEDBACK OR SUGGESTIONS YOU HAVE TO MAKE WIKI BETTER!
<br />
=='''Categories'''==
{| class="wikitable sortable" style="width:100%;"
|- style="vertical-align:top;"
| style="width:33%;border:none;" |{{#categorytree:Mac|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:iPhone|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:iPad|mode=all|depth=0}}
|- style="vertical-align:top;"
| style="width:33%;border:none;" |{{#categorytree:Troubleshooting_Guide|mode=all|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:Game_Consoles|mode=all|depth=0}}
| style="width:33%;border:none;" |
|}
=='''All pages'''==
{{Special:AllPages}}
=='''Recent Contributions'''==
{{Special:RecentChanges|limit=15|days=7}}
=='''Top Users'''==
{{Special:ContributionScores/10/180}}
==Special Thanks==
Special thanks to Jonathan Zufi for his [http://iconicbook.com Iconic Book]! Its a cover to cover treasure for any Apple lover.
[[File:Iconic Book 1.jpg|800x800px]]
9xcgefc15bj7xfq90lpturci3j1sacq
1 TODO
0
694
3153
2930
2020-10-10T15:19:06Z
Chrisb
1
/* Chris */
3153
wikitext
text/x-wiki
==Martin==
#security audit
#robots.txt file (https://www.mediawiki.org/wiki/Manual:Robots.txt) (https://en.wikipedia.org/robots.txt) needs to be done after short URLs https://support.google.com/webmasters/answer/6062598?hl=en
#setup sitemap on schedule
#JSON-LD
#contributors page with link-backs
==Chris==
#Iconic book
#1 year cookies
#Sync crontab
#More MySQL tuning https://www.linode.com/docs/databases/mysql/how-to-optimize-mysql-performance-using-mysqltuner/
#IP and hostname at bottom
#Gluster
#SQL replication
#Allow Overrides /var/www in script (copy Apache conf?)
#Short URLs in testVM
#Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]] (images and created pages)
pke19eo2ufr1z2619hmp5q650zqvzoq
820-00165 Boot Up Diagram
0
330
807
2020-03-25T22:11:37Z
Chrisb
1
Chrisb moved page [[820-00165 Boot Up Diagram]] to [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]]: Expanded scope
807
wikitext
text/x-wiki
#REDIRECT [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]]
08azksrnfuv7867icn6i532uicqwrts
820-00165 Pulsing
0
2
6200
5476
2021-10-23T01:25:33Z
Vlad
520
added a case I had today with pulsing voltages every 5 seconds on 820-00165 I had today. Might be helpful
6200
wikitext
text/x-wiki
Pulsing every 2 seconds is typically SPI ROM communication issue.
Pulsing once or twice can be sensor issue, try SMC bypass and double check charger circuit current sensing (resistance between pin 17/18 and 27/28 of U7100).
There can also be an issue with some power rails such as a short to ground on S3/S0 rail.
One thing that can happen is the DDR voltage regulator boost test point gets eaten away, that will cause single but longer spike.
There are a few other things such as issue with U1950 and PCH HSIO switch. Don't remember the exact symptoms they cause though.
So yeah, can be a lot of things. Inspect very carefully the board for any corrosion, broken traces or test points…
And never forget J6100. (no need to destroy it everytime, but at least inspect and clean it)
Probably power cycling when U1930 is on the board.
(if U1930 is not on the board, the CPU will not start so SPI ROM won't matter)
Usually communication issue with SPI ROM
If you have an oscilloscope you can check for activity on BIOS CS# pin also 2ms is no communications around 200ms is success. There should be intermittent bursts after that.
ME: 8.2v on an Air PPBUS means no SMC right? I've got a board that was supposedly liquid damaged by the end user. Board is really dirty but no signs of corrosion anywhere. I have no green light on charger. I'm tracking through the amazing 00165 diagram. I have 3.42 at SMBUS_SMC_5_G3_SDA and SCL. SMC_RESET_L is 3.3 What am I missing in the SMBUS 5 comm? Junk under SMC or bad SMC? Also of note, SDA and SCL stay high. There is no clock or data that I can see.
no SYSCLK_CLK25M_SB either. I'm not sure when that comes in.
"Junk under SMC or bad SMC?" → most likely
Thanks. 25Mhz is when the PCH wakes up?
On this board it doesn't even matter as it's only used for some peripherals. The PCH has its own 24MHz crystal (that does matter in S0 state)
'''Louis Rossmann''': CPU_VCCST_PWRGD area being low would cause 500 ma then 24 ma, spiking three times, then dead.
'''Piernov''': Check if CPU VCore pulses too. If it doesn't, check for a pulse on ALL_SYS_PWRGD and PM_PCH_SYS_PWROK.
If CPU VCore pulses, you most likely have an issue with SPI ROM, or SPI resistors and traces (or stuff on J6100).<br />If CPU VCore and PM_PCH_SYS_PWROK don't pulse, but ALL_SYS_PWRGD does, you have an issue with U1950 circuit.
==Case==
===Pulsing once / Quarter fan spin / Full S0===
Board turns on to a full S0 state then shutdown. Might occasionally turn on, works in SMC-Bypass mode. Was discussed many times on Rossmann' forum no solution known until recently.
Reason: SMC is attempting to start but then aborting and shutting itself down. If PP3V3_S5_AVREF_SMC is not present, SMC shits itself and shuts down. PP3V3_S5_AVREF_SMC Line should be 3.3V when on with MOhms to ground when off.
Resolution: Look for crap on U5110-pin 8, C5020, C5021, C5125, and C5126 - anything connecting PP3V3_S5_AREF_SMC to ground (GND_SMC_AVSS). Also, be sure all traces coming out of the SMC look okay and that no test points have been dissolved - test continuity on either side to double check anything that looks questionable. If SMC reset works, U5110 is probably okay and does not need to be replaced, but it's not a difficult chip to swap from a donor. Finally, there could be crap under SMC. [[Diode mode BGA continuity check|Continuity to SMC]] pin can be checked in diode mode if you remove U5110. Be sure to test the other items listed here before doing something drastic like reflowing your SMC.
===Pulsing twice===
'''Nobluesky''': 820-00165-A. Refurb Apple.<br />
Green->Orange, no reaction pwrbutton. Oscillates twice between 300-500mA, then 2-3 times 15-22 then settles at 22mA<br />
Pin 4 bios solder starved. Pin 9&10 U7501 dirty<br />
CPU_VCORE res to gnd 17.8 Ohms. No short between PPBUS and VCORE (12M)<br />
'''piernov''': If it goes up to 500mA then CPU VCore should at least come up at some point (so SLP_S4# necessarily comes up as well). Try SMC bypass.<br />
'''Nobluesky''': fan starts twice for 1s with 5s pause inbetween. Subsequent presses generate one 1s spin, not two. VCORE turns on for a split second.<br />
'''piernov''': Check charging circuit current sensing<br />
'''Nobluesky''': R7121 & R7122 are 10.6 10.4 Ohms. No broken path. No short. R7152 0.4 and R7151 2.9 Ohms. Not the ISL.<br />
Missing enable on pin4 and S4_PWR_EN.<br />
'''piernov''': you're not missing S4 since CPU VCore comes up.<br />
'''Nobluesky''': What makes Vcore and rails come down again... Checking for shorts again on S4, maybe I missed something.<br />
'''neola''': current sense I might say<br />
'''piernov''': Yes, current sensing can cause that. And some other stuff such as an event happening on a power rail later in the power sequence. Maybe even EFI.<br />
'''neola''': SMC_PBUS_VSENSE is a signal you might want to look at<br />
'''piernov''': PPBUS_G3H and PPDCIN_G3H voltage sensing should be disabled when starting in SMC bypass mode (although I'm not 100% sure of that)<br />
'''Nobluesky''': Seeing it doesn't come on with SMC bypass, the issue is deeper. Gonna get a dirty SPI rom<br />
'''piernov''': You can check the usual signals at the end of the power sequence like SYSPWROK, VCCST_PGOOD, PLTRST#… And the PCH HSIO rail, IIRC it doesn't have a power good signal associated with it but can be causing issues.<br />
'''Nobluesky''': PLT_RESET_L "blinking" on too.<br />
'''Nobluesky''': Known good EFI, no change. No fan spin. With SMC bypass, quarter fan spin two times.
All subsequent presses on power button give another quarter fan spin.
As a reminder, EFI CS pin looks like this (and stays up afterwards, there is no more communication after that, so I trucated it).<br>
[[File:CS pin 820-00165.jpg|thumb]]
'''piernov''': @Paul L Daniels fixed his with the USC.<br>
'''ChrisB''': Did you check all SPI resistors @Nobluesky? Traces?<br>
'''Nobluesky''': SPI resistors all good. Traces too of course. I swapped U6101 already.<br>
'''piernov''': Or an issue on one of the SPI ROM line when trying to work in Quad SPI mode maybe.<br>
'''Nobluesky''': Okay, not the SMC.<br>
'''ChrisB''': Maybe PCH issue. It was basically bootlooping as soon as the PCH got power right?<br>
'''Nobluesky''': Yes.
=== '''Pulsing every five seconds''' ===
Had a case with all voltages pulsing every 5 seconds. In my case it was failed R1275<br />
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
82tg2a7xj1m0sjpnyev7o37sbxq138h
820-00165 RAMCFG straps right configurations
0
2267
7092
7091
2024-04-29T23:02:28Z
MaxShevelev
1008
7092
wikitext
text/x-wiki
As many people may noticed, the RAMCFG straps configuration provided with Apple schematics is not 100% correct.
I've attempted to collect the right configurations taken from the real 820-00165-A boards that I have on hand.
{| class="wikitable"
|+
!Vendor
!Size
!CFG0
!CFG1
!CFG2
!CFG3
|-
|
|
|<small>R2053:L<br>R1611:H</small>
|<small>R2052:L<br>R1635:H</small>
|<small>R2051:L<br>R1636:H</small>
|<small>R2050:L<br>R1631:H</small>
|-
|Hynix
|4Gb
|'''L'''
|'''L'''
|'''L'''
|'''L'''
|-
|Hynix
|8Gb
|'''H'''
|'''L'''
|'''L'''
|'''H'''
|-
|Samsung
|4Gb
|'''L'''
|'''H'''
|'''L'''
|'''L'''
|-
|Samsung
|8Gb
|
|
|
|
|-
|Elpida
|4Gb
|
|
|
|
|-
|Elpida
|8Gb
|'''H'''
|'''H'''
|'''H'''
|'''L'''
|-
|Micron
|4Gb
|
|
|
|
|-
|Micron
|8Gb
|'''H'''
|'''H'''
|'''L'''
|'''H'''
|-
|Hynix
|16Gb
|
|
|
|
|-
|Samsung
|16Gb
|
|
|
|
|-
|Elpida
|16Gb
|
|
|
|
|-
|Micron
|16Gb
|
|
|
|
|}
Please contribute to fill in the missing data.
0le21z1f1vp761r2flzyo1z0u2pvels
820-00928 no image on lcd
0
1935
5735
5733
2021-04-12T14:27:45Z
Chrisb
1
5735
wikitext
text/x-wiki
'''<big>THIS PAGE IS INCOMPLETE. THERE ARE MANY TROUBLESHOOTING STEPS TO ELIMINATE OTHER POSSIBLE ISSUES. THIS IS ONLY ONE POSSIBLE CAUSE OF NO IMAGE ON LCD.</big>'''
Board boot with chime sound but nothing on internal lcd.
Disconnect lcd to force external display, image ok on external display.
Change MUX chip U9850 ( nxp 6142e ), all good.
[[Category:Mac]]
nj5axrnm98gg3quyp45uooiv16p6md2
820-01055 Keyboard and Trackpad
0
2004
6214
6213
2021-11-10T23:05:38Z
Nobluesky
182
typo fix #2
6214
wikitext
text/x-wiki
==MacBook Air Retina 13" 2020 - 820-01055==
The MacBook Air Retina 13" 2020 with board number 820-01055 has the T2 Chip. I've made a new discovery about serialisation.
A 820-01055 came to me water damaged, no sign of life.
I opened the board and saw that the trackpad got pretty wet.
A lot of corrosion on the connector, the flex cable was burned and some chips on the trackpad looked ugly.
The MacBook works as long as I unplug the trackpad/keyboard flex.
I changed the trackpad for a new one, I bought a new flex cable, the MacBook works but... I can't : Press Q (A for Qwerty keyboard), D, all the Function keys.
So I bought a new keyboard... took everything out of the case and changed it with the new one => Same problem.
Asking on the Discord someone gave me a clue : There is a T2 chip on this model so there must be some serialisation....
So I took off the ST32F103B6 chip from the original trackpad - WARNING : it's an underfilled chip be careful. I took off the same chip from the new trackpad and put the Original ST32F103B6 on the New trackpad - WARNING : Protect everything around this chip with kapton tape and be careful. Then I got a working MacBook Air with working keyboard and trackpad. One last thing I wanted to try is the daughter board 820-02005-A. This board get the connection for keyboard, keyboard backlight, and trackpad link. This board also has two chips for keystrokes and some others related to keyboard. When I put a new daughter board on this MacBook, I lost the FN keys...
===In Conclusion===
MacBook Air 13" 2020 (820-01055) have some T2 serialisation on keyboard and trackpad :
You can change just the keyboard without issues.
You can't just change the trackpad, nor the daughter board.
If you need to change the trackpad, you need to have with you the original ST32F103B6 chip that came from the original trackpad.
If you need to change the daughter board, you need to have with you the 4BRT chip that came from the original daughter board.
For the moment I don't know if there is a way to dump some chips in order to reprogram them more easily because swapping ST32F103B6 is dangerous.
liowlkpaewo48n2oxv8h0d99r2m5mbg
820-01055 Power On Sequence
0
598
5308
1247
2020-12-07T14:22:58Z
Chrisb
1
Changed redirect target from [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]]
5308
wikitext
text/x-wiki
#REDIRECT [[T2 and CD3217 Power on Sequence]]
886kc6m30vtc32z6n63hstdsq19uipe
820-01598 Power on Sequence
0
620
5307
1282
2020-12-07T14:22:37Z
Chrisb
1
Changed redirect target from [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]]
5307
wikitext
text/x-wiki
#REDIRECT [[T2 and CD3217 Power on Sequence]]
886kc6m30vtc32z6n63hstdsq19uipe
820-2850
0
1812
5315
5312
2020-12-08T23:54:23Z
Chrisb
1
Redirected page to [[A1286/A1297 Common Issues#2010]]
5315
wikitext
text/x-wiki
#REDIRECT [[A1286/A1297 Common Issues#2010]]<br />
1wys7ywbs1c9uih7y2og2ot2evlu56g
820-3115 Common Issues
0
9
529
9
2020-02-02T11:07:19Z
Piernov
10
Category Mac MacBook MacBook Pro
529
wikitext
text/x-wiki
One beep every 5 seconds
Check RAM and slot first!!
Hi, check and compare pch smbus connections R5201/R5200 diode mode, continuity and resistors value. Anything on the SMbus may cause the one beep error. More often the led backlight. If diode mode is low try removing R9753/R9757 and see if diode mode on smbus come back to normal value.
[[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]]
dyss98soap5q0a0hha8uojav08rehf1
820-3437-B With Multiple Sensor Issues
0
2080
6306
6216
2021-12-15T14:12:12Z
Chrisb
1
Chrisb moved page [[820-3437-B multiple sensor issues]] to [[820-3437-B With Multiple Sensor Issues]] without leaving a redirect: Title Formatting
6216
wikitext
text/x-wiki
'''The problem:-'''
70% CPU usage when idle, machine slow, need to hold power button for power up, however, sometimes the system still fails to power.
ASD faulting sensors (IC0R, ID0R, IM3C, ISDC, PB1R, PC0R, PDTR, PPBR, PSDC, VC1C, VCS0, VP0R). Device takes 0.06MAh.
'''Issues found/fixed:-'''
PBUS_S0_VSENSE missing - Q5500 Pin 3 via severely corroded. Ran jumper to R5503 Pin 1 to restore, issues persist.
C5021 turned into 1Ω. Capacitor replaced, issues resolved, and ASD passed diagnostics.
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
34ejmuuisxmjclv3wh62cpm38ae58c0
A1237 HDD/SSD
0
1826
5425
2021-01-03T15:49:53Z
Piernov
10
Created page with "The MacBook Air Original (Early 2008) A1237 uses 1.8" IDE drives with ZIF connector as a storage device. The HDD are slow, not reliable and start getting expensive as working..."
5425
wikitext
text/x-wiki
The MacBook Air Original (Early 2008) A1237 uses 1.8" IDE drives with ZIF connector as a storage device.
The HDD are slow, not reliable and start getting expensive as working ones go rarer.
There are some 1.8" IDE SSD available on Aliexpress, but they are still expensive for what they are (more than $50 for 64GB).
One solution could be to use an mSATA to IDE ZIF adapter board, but unfortunately this does not work. They use JMicron JM20330 controller, and it does not seem to be recognized at all on the MacBook Air Original.
Another solution is to use an SD card inside an SD to CF adapter, and plug that adapter into a CF to 1.8" IDE ZIF adapter and this actually works. Both adapter should cost less than $12 in total, and then you can get a good SDXC 64GB card for less than $18, so you get 64GB of Flash storage for less than $30.
Note that the MacBook Air Late 2008/Mid 2009 A1304 uses SATA drives so this method will not work.
<youtube>AOGhTUJiUz4</youtube>
7dryjrunsev9ulzuzwlpog7robuopxr
A1278 Common Issues
0
96
530
189
2020-02-02T11:07:40Z
Piernov
10
Category Mac MacBook MacBook Pro
530
wikitext
text/x-wiki
== 2009 ==
== 2010 ==
== 2011 ==
== 2012 ==
HDD cable has a high failure rate, substitute a 2011 cable.
RAM slot closest to KB fails from mechanical stresses and causes intermittent RAM issues.
[[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]]
jovbr5u3f4185yatp1fsmxxj1sikccd
A1286/A1297 Common Issues
0
95
6938
6937
2023-09-28T09:14:39Z
Alex6337
28
Restructured page to have main common issues and less common issues.
6938
wikitext
text/x-wiki
== Common Issues ==
=== 2008-2009 ===
* '''820-2330, 820-2390, 820-2532, and 820-2610'''
** C7771 loses capacitance and lowers the voltage. This can cause green light but no power or some random instabilities. It can cause no power with only 0.3V on the MCP standby rail, but could also cause some random instabilities
** 820-2523 and 820-2533 are not affected
=== 2010 ===
* '''820-2850'''
** C9560 loses capacitance and lowers the voltage. This can cause intermittent crashing especially when switching graphics processors. It can also cause no video.
** '''820-2849 is not affected by this problem.'''
=== 2011 ===
* '''820-2914, 820-2915'''
** AMD GPU fails due to thermal issues. Bypassing is the only way to fix. Check [[Demux]] page for more info.
=== 2012 ===
* '''820-3330'''
== Less Common Issues ==
=== 2008-2009 ===
* To be completed
=== 2010 ===
* '''820-2850'''
** '''Intermittent green lines''' on black background, '''and pink lines''' on white backgrounds (menu backgrounds). Problem with GMUX soldering (U9600 - LFXP2-5E Microcontroller), probably due to a drop. '''MUST BE CONFIRMED''' by pressing on U9600 with your finger. The problem varies with pression on the chip (disappear and reappear with pression on the chip).
*** Reflow did not work. Reballing is required.
*** Video of @piernov showing the problem : https://www.youtube.com/watch?v=TrtilbAfmy8&ab_channel=piernov
*** 820-2849 could be affected too... (after all, it's the same chip...)
=== 2011 ===
* '''820-2914, 820-2915'''
** To be completed
=== 2012 ===
* '''820-3330'''
** To be completed
<br />
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Pro]]
6uuiup162m5n4pd5k99xoeakqvs62ag
A1286 Common Issues
0
100
212
2019-11-23T14:57:32Z
Chrisb
1
Chrisb moved page [[A1286 Common Issues]] to [[A1286/A1297 Common Issues]]: Including similar issues with 17" MBP
212
wikitext
text/x-wiki
#REDIRECT [[A1286/A1297 Common Issues]]
812kskn46u562uv8zhpecw1rkob9xmi
A1311/A1312 Inverter
0
46
1351
532
2020-06-16T20:26:50Z
Chrisb
1
1351
wikitext
text/x-wiki
(NEEDS REVISION, using oscilloscope without an isolation transformer) Failing inverters seem to have more than a 3v amplitude on the input and output rails of the inverter. Input on a good inverter is steady at 12.4V with less than 2V amplitude. Output may vary with model and brightness. 2010 A1312 was measured at 40V.
A1311 2009 V267-701<br>
1x 35V 270uF 8mm x 16mm x 4mm<br>
2x 100V 33uF 8mm x 12mm x 4mm<br><br>
A1311 2011 V267-707<br>
1x 25v 270uF 8mm x 16mm x 4mm<br>
2x 100V 33uF 8mm x 12mm x 4mm<br><br>
A1312 2009 V267-601<br>
2x 35V 270uF 8mm x 16mm x 4mm<br>
2x 63V 120uF 8mm x 19mm x 4mm<br><br>
A1312 2010 V267-602<br>
2x 35V 270uF 8mm x 16mm x 4mm<br>
2x 63V 120uF 8mm x 19mm x 4mm<br><br>
A1312 2011 V267<br>
2x 35V 470 uF 10mm x 16mm x 5mm<br>
3x 100V 47 uF 10mm x 13mm x 5mm
For all the input caps use 35V 470uF low ESR caps. [https://www.mouser.com/ProductDetail/661-EKZH350E471MJ16S Mouser link]<br>
for the output caps use either 63V 120uF or 100V 47uF low ESR caps depending on the original output V requirements [https://www.mouser.com/ProductDetail/661-EKYB630E121MH20D Mouser 63V link] [https://www.mouser.com/ProductDetail/661-EKYA101E470MJC5S Mouser 100V link]
[[Category:Mac]]
[[Category:iMac]]
p9xabmvke4s3ecye8evm2k85f6x6ghv
A1311/A1312 Power Supply
0
658
5203
1352
2020-11-06T15:54:50Z
Piernov
10
Category Mac,iMac
5203
wikitext
text/x-wiki
The unibody iMacs have an AC power supply that can fail due to heat over time. If you scope the 12V output you will see quite a bit of noise and ripple. Be sure to use a digital ground, the chassis ground might give unexpected results. Also be sure to scope with the screen connected, the additional load of the screen causes some of the instability. This instability can cause the disappear backlight to go out intermittently or total. You may also see bulging caps.
There are two types of power supplies.
TBD: list caps needed for both PS
[[Category:Mac]]
[[Category:iMac]]
t951lr7lwlqaqbugsyx81qcc6894v0q
A1347 2010-2012 common issues
0
1342
5549
2972
2021-02-07T17:45:21Z
Chrisb
1
5549
wikitext
text/x-wiki
== Shorted Tantalum Polymer Capacitors ==
Tantalum Polymer Capacitors on the 5V rails can become short. These capacitors are for USB 5v line. if they become short then the mac mini will not turn on.
remember capacitors polarity. check the green circled caps for short.
the value of the cap is 150UF, 6.3v, Case B2.
https://uk.farnell.com/panasonic/6tpg150mzg/cap-150uf-6-3v-tant-polymer/dp/2982731
=== '''2010 820-2577''' ===
[[File:mac mini 2010.jpg|center|thumb]]
=== '''2011 820-3059''' ===
[[File:mac mini 2011 5v.jpg|thumb|center]]
=== '''2012 820-3228''' ===
[[File:macmini 2012 cap.jpg|thumb|center]]
== '''Quarter Fan spin.''' ==
=== ''No water damage.'' ===
In most cases a quarter fan spin on in this year is a corrupted EFI chip. You will need to dump the proper bios of the year and model into the Mac Mini. De-Soldering the original Bios chip and reprogramming it will help resolve the issue. (be sure to follow the guide on [[/EFI#EFI ME Cleaning|cleaning the ME region]])
[[Category:Mac mini]]
7dtg7ijiojg49v4xj0dc9kgr9wobz24
A1347 2010-2014 Power Supply Voltage Test
0
1337
2956
2944
2020-10-04T20:13:24Z
Chrisb
1
2956
wikitext
text/x-wiki
<br />Mac Mini Power supply rarely dies. A technician should test the power supply before ordering a new replacement power supply.
A working power supply will show 11.90 to 12v on a multimeter.
[[File:a1347 power supply 01.jpg|center|thumb]]
[[File:a1347 power supply 02.jpg|center|thumb]]
[[Category:Mac mini]]
2tt9a18mf2lemr24zwfdaz3mpg9f3wv
A1347 SATA/SDD Flex Cable
0
1871
5536
5535
2021-02-02T19:59:17Z
Alan.l
19
Alan.l moved page [[A1347 compatible Parts]] to [[A1347 SATA/SDD Flex Cable]]
5535
wikitext
text/x-wiki
[[File:NbecTDBRsudat45Z2.jpg|center|frameless|700x700px]]
'''2014'''
821-1501-A : Upper bay SATA Flex Cable
821-00010-A : Lower Bay SSD Flex Cable
'''2012'''
821-1501-A : Upper bay SATA Flex Cable
821-1500-A : Lower Bay SATA Flex Cable
'''2011'''
821-1346-A : Lower Bay SATA Flex Cable
821-1347-A : Upper bay SATA Flex Cable
54-2119-02-BP (OWC) : Upper bay SATA Flex Cable
'''2010'''
821-0894-A : Lower Bay SATA Flex Cable
[[Category:Mac mini]]
gitwxb6jebyl6fewthxv2uk4rftakem
A1347 compatible Parts
0
1875
5537
2021-02-02T19:59:17Z
Alan.l
19
Alan.l moved page [[A1347 compatible Parts]] to [[A1347 SATA/SDD Flex Cable]]
5537
wikitext
text/x-wiki
#REDIRECT [[A1347 SATA/SDD Flex Cable]]
s2gskvm9x8x2k3halvnl9r1q0hs5pzp
A1398 Common issues
0
4
7120
7082
2024-06-07T17:06:54Z
Francis
4
/* M2012-E2013 (820-3332) */
7120
wikitext
text/x-wiki
==Mid 2012-Early 2013 (820-3332)==
The MacBook Pro may appear to turn off. The fans will still spin and caps lock will still work. The internal and external displays will cut off at the same time. The external display will cut off with the internal disconnected. You may be able to reproduce the issues by tapping on the logic board The cause is that the GPU is losing power due to flexing and brittle solder around U8900 (GPU Buck converter). Solder U8900 with an iron and leaded solder. Triple check all joints under a scope.
==Late 2013-Mid 2014 (820-3662, 820-3787)==
Screen off with computer on, or crashing: Sounds like the FDMF6808 chips are failing and causing black screening. You can try fixing this by replacing all 3 of them with NEW FDMF6708 or FDMF3030 chips from a reputable source like Mouser or Digikey. Possible software fix linked [https://www.reddit.com/r/mac/comments/9pyort/apple_macbook_pro_sudden_crash_fix_for_models/ here]
'''If you have dedicated graphics on your board then the above fix has a pretty low success rate.'''
If you have internal graphics, aka no separate graphics chip on your board then the above fix success rate is very good.
([https://boards.rossmanngroup.com/threads/820-3787-cpu-fets-what-are-the-number-of-the-pieces-to-replace.56630/#post-56640 source])
Additional notes : Symptoms are very unlikely to be a screen or screen cable issue. If you’re not getting image when this happens, then it’s not related to backlight either. Very very small chance it’s a GPU/CPU issue unless the fail is major. The FDMF chips issue arises from the board flexing. The chips tend to fail and cause the device to not wake from sleep/randomly shut down due to CPU VCore dropping out. Machine will stay on but basically never wake from sleep at times. If you’ve never messed with microsoldering before, I would recommend sending it to someone who has experience fixing this issue. If you have done board repair, then this repair is a little tedious so you want to make sure you get GOOD chips as the ones claimed to be new in China often end up being sanded down garbage to look new.
==2015 dedicated graphics (820-00163, 820-00426)==
'''These boards absolutely require a good charged battery to fully boot into macOS.''' As usual it's not uncommon to get 2 or 3 bad batteries in a row so make sure you are using a known good one, one that for sure works with others 15" 2015 DG boards.
With a bad battery or no battery, the machine will reboot during or at the end of macOS boot. In this case disconnecting the touchpad often allows it to boot fully since it causes throttling and lowers the overall power consumption of the machine.
==Additional insight from Tim @TCRS Circuit regarding dedicated GPU L2013-2015 and also U8900==
The question was : Do you still have good success rate with mosfets on dedicated GPUs A1398?<br>
<youtube>F11FKJf422A</youtube>
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Pro]]
cvlxz0m8k4fh6ibgdo6j5rw5t6st6at
A1418/A1419 Power Supply
0
82
534
177
2020-02-02T11:09:00Z
Piernov
10
Category Mac iMac
534
wikitext
text/x-wiki
== A1418 ==
== A1419 ==
All graphs with display off and iMac on. Please note that the 12V rail can appear stable when these power supplies are failing. Pulsing on pin 1 and pin 3 being high seem to be signs of the power supply failing.<br>
<br>
12V<br>
[[File:A1419 12V Good.png|thumb|A1419 P 12V Good]]
[[File:A1419 12V Shutting Down.png|thumb|A1419 12V Shutting Down]]
Pin 1: PWR_BTN_R (Pulled up to PP3V42_G3H)<br>
[[File:A1419 Power Pin 1 Good.png|thumb|A1419 Power Pin 1 Good]]
[[File:A1419 Power Pin 1 Shutting Down.png|thumb|A1419 Power Pin 1 Shutting Down]]
Pin 2: Ground<br>
Pin 3: SMC_ACDC_ID_R (Pulled up to PP3V3_S0)<br>
[[File:A1419 Power Pin 3 Good.png|thumb|A1419 Power Pin 3 Good]]
[[File:A1419 Power Pin 3 Shutting Down.png|thumb|A1419 Power Pin 3 Shutting Down]]
Pin 4: TSNS_ACDC_N<br>
[[File:A1419 Power Pin 4 Good.png|thumb|A1419 Power Pin 4 Good]]
[[File:A1419 Power Pin 4 Shutting Down.png|thumb|A1419 Power Pin 4 Shutting Down]]
Pin 5: TSNS_ACDC_N<br>
[[File:A1419 Power Pin 5 Good.png|thumb|A1419 Power Pin 5 Good]]
[[File:A1419 Power Pin 5 Shutting Down.png|thumb|A1419 Power Pin 5 Shutting Down]]
Pin 6: Ground<br>
Pin 7: BURSTMODE_EN_R_L (Pulled up to PP3V3_S4)<br>
[[File:A1419 Power Pin 7 Good.png|thumb|A1419 Power Pin 7 Good]]
[[File:A1419 Power Pin 7 Shutting Down.png|thumb|A1419 Power Pin 7 Shutting Down]]
[[Category:Mac]] [[Category:iMac]]
3wfldc6e3ooz5xmd4z0dqccrcbymn2y
A1466 RAMCFG straps right configurations
0
2268
7059
2024-03-05T17:02:50Z
MaxShevelev
1008
MaxShevelev moved page [[A1466 RAMCFG straps right configurations]] to [[820-00165 RAMCFG straps right configurations]]: Misspelled title
7059
wikitext
text/x-wiki
#REDIRECT [[820-00165 RAMCFG straps right configurations]]
cpslq7uygg8s3c8lvgmt2qd0fw734es
A1466 RAMCFG straps right configurations.
0
2266
7055
7052
2024-03-05T16:48:52Z
MaxShevelev
1008
Blanked the page
7055
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
A1502 Common Issues
0
1426
3140
3139
2020-10-09T02:42:38Z
Chrisb
1
3140
wikitext
text/x-wiki
== Flickering Display ==
Liquid will often corrode the [[PP3V42_G3H]] probe point near the hall sensor on the board. It will cause the screen to fade in and out as it is tripping the SMC_LID circuit. Since this point always has power it will corrode away. Instead of removing the sensor board and running a jumper wire underneath, you can run a wire from the trace to the capacitor on the sensor board as shown:
[[File:A1502 Sleep Sensor 1.png|800x800px]]
[[File:A1502 Sleep Sensor 2.png|800x800px]]
== No Keyboard and/or Trackpad not working. ==
This can include the power button not turning on the MacBook Pro. The Trackpad cable often goes bad due to the bend in the cable. It can have no outward appearance of wear. Replace the cable and it will often solve the keyboard and/or trackpad not working.
p8oz4wbp4cyatyqj1zixobhbgpkob1u
A1706/A1708 TConn Backlight Pinout (FlexGate)
0
622
6786
6605
2023-03-17T00:31:47Z
Pedro147
26
Rossmann typo - Louis hates that :)
6786
wikitext
text/x-wiki
[[File:Backlight Flex Failure.jpg|thumb|Flexgate on a MacBook Pro 2016|link=https://logi.wiki/index.php/File:Backlight_Flex_Failure.jpg]][[File:Flexgate with microscopy.png|none|thumb|800x800px|Flexgate on backlight side]]
[[File:TCON Testpoints.png|none|thumb|600x600px|There are many testpoints behind wide flex cable including feedback. these are especially useful when you troubleshoot display after replacing connector. ]]
[[File:A1706-1708 Backlight Pinout.jpg|800x800px]]
[[File:A1706 A1708 Backlight Flex Pinout.jpg|800x800px]]
<br />
[[File:Camera Flex.jpg|800x800px|Internals of the Camera flex]]
=====NOTE *=====
- Here is a very useful video by Phuket My Mac (Julien) on this FlexGate repair https://www.youtube.com/watch?v=JLrKuK7IK3I
*- This type of repair might be used as a temporary solution or as a cheap alternative to display replacement with restricted warranty. If done unproperly it might cause short circuit on the backlight line which will damage the logicboard. For obvious reasons we as repair community recommend to educate customer about replacement program and to help them with free-of-charge replacement. It is known that many devices which are not listed in Apple Replacement Programm are still being serviced which clearly proves that highly likely there is "under the table" replacement programm for all flexgate-affected devices and each particular case is regulated by Apple Genius/his manager. Reliabilty of any sort of flexgate repair is higly questionable for two reasons: 1. even if done properly, soldered cable will be moved every day and it will break eventually, or insulation will be worn off and backlight power might be shorted to ground or to feedback lines causing more damage than just displa replacement. No repair store can really perform 1000-2000 automated bends to check if this method lasts long enough, reliable and safe to perform. 2. There are 4 cables between LCD assembly and T-Con. All of them are prone to fail. You cant repair every single one of them. If backlight fails - Camera cable is next one to fail. You fix the camera cable and the next candidate is data cable, both of them, in random manner (see 2018-2019 macbook flexgate "pink lines" issue)
- Here is a more permenent solution offered by La Clinica de la Manzana (Joseph) on this FlexGate repair <br><br><youtube>https://youtu.be/a2QSHlcMfxw</youtube><br>
===Pink bars issue===
[[File:Macbook Pinkbars (Flexgate).png|none|frame|Pinkbars Flexgate might be caused by physical damage on flex cable, possibly caused by dust or sand on display edge.(Photos sourced from Louis Rossmann's Discord #mac-repair, user WGACA#3685)]]
<br />
===Testing and repair equipment===
[https://aliexpress.com/item/1005001860231489.html Tcon Test cable]
[[File:Working tcon Testcable (Intel only).png|none|frame|Working tcon Testcable (Intel only) PN 921-00738-02]]
[https://aliexpress.com/item/33017803880.html? Backlight + Camera cable repair kit] <br />
qjw1qzbehr5vnfypiin0qrzano7h362
A1707 Boot Up Sequence
0
209
612
2020-02-02T17:30:39Z
Chrisb
1
Chrisb moved page [[A1707 Boot Up Sequence]] to [[CD3215 Bootup Sequence]]
612
wikitext
text/x-wiki
#REDIRECT [[CD3215 Bootup Sequence]]
ji6gs76et6gmqdag5hzg7x8tkc4651e
A1708 SSD
0
1820
5848
5847
2021-05-18T16:26:35Z
Chrisb
1
5848
wikitext
text/x-wiki
#REDIRECT [[ Apple SSD connectors and adapters list#Gen.5%20OEM%20Compatibility]]First you should check if the machine is affected by https://support.apple.com/13-inch-macbook-pro-solid-state-drive-service
About compatibility between 2016/2017:
https://beetstech.com/blog/apple-proprietary-ssd-ultimate-guide-to-specs-and-upgrades
<nowiki>After extensive testing with every Gen. 5A drive we could get our hands on, it appears that 128GB SSDs with part numbers beginning with 656-0074 and 256GB SSDs with part numbers beginning with 656-0076 are only compatible with the model A1708 laptops from the Mid 2017 release.</nowiki>
Note that the SSD_BOOT_L/SSD_PWR_EN_L circuit is different between 820-00875 (2016) and 820-00840 (2017). Only the schematics for 820-00875 is available, in this one U8640/R8645 are populated while R8641/R8642 are not. On the 820-00840 it's the opposite.
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Pro]]
hysdoorlkfgkl1voxxd2d5co4n3i5bu
A1993 2018-2020 Power Supply Voltage Test
0
1340
2955
2943
2020-10-04T20:13:02Z
Chrisb
1
2955
wikitext
text/x-wiki
Mac Mini Power supply rarely dies. A technician should test the power supply before ordering a new replacement power supply.
A working power supply will show 11.90 to 12v on a multimeter.
[[File:A1993 Power Supply Voltage Test 01.jpg|thumb|center]]
[[File:A1993 Power Supply Voltage Test 02.jpg|thumb|center]]
[[Category:Mac mini]]
i4dxp82cyjz0hppg8kvjhs02r04krgc
ACMT
0
726
1553
2020-08-28T16:45:15Z
Chrisb
1
Created page with "This is a helpful training guide to assist with passing your Apple Certified Mac Technician exam. Much of this information is directly from the training courses offered. Kee..."
1553
wikitext
text/x-wiki
This is a helpful training guide to assist with passing your Apple Certified Mac Technician exam. Much of this information is directly from the training courses offered. Keep in mind, this information is based off of the ACMT 2018/2019 training and is updated annually in some cases through Apple. We will try our best to update this as needed.
If you see any errors, please let us know.
Happy training!
=='''ESD - Electro Static Discharge'''==
ESD - When two objects made of dissimilar materials rub against each other, excess electrical charge (static electricity) builds up on one object and simultaneously is removed from the other object. Over time, this friction causes some objects to have electrostatic charge relative to surrounding objects. When this charge finds a means of equalizing, it will do so. In some cases, it discharges to ground. In other cases, it might discharge to an ungrounded object with a different charge level.
Examples -
Shoes rubbing against carpet when walking.
Getting out of a car with fabric car seats.
A person’s body against the air as that person moves.
Experiences:
A shock emitted when touching a door knob or other metal object.
A shock or crackling of static electricity when removing clothing from a dryer.
A shock emitted when touching another person with a lower static charge.
ESD as low as 10 volts can damage integrated circuits such as logic boards. In contrast, you will only feel a static shock if it is in the range of thousands of volts. You can be damaging the equipment you work on without know it.
ESD damage is difficult to identify because a microscopic part of the integrated circuit is usually impacted by the discharge. It might affect the component immediately or it might show itself only as an intermittent failure at a later time.
Myths:
*Wireless “grounding” work - not true - must be hard-wire grounded.
*They are no longer an issue. Components are now too well shielded to be an issue.
*RAM and logic boards are only components not shielded.
Some tools claim to be ESD compliant - but are not.
===Precautions===
#'''Handle all components by edges -''' non-conductive edges, avoid touching any edge connectors on any circuit boards and assemblies, avoid touching or handling any components on the surfaces of these boards and assemblies. Never handle or pick up any circuit board by its components such as heat sink. Hard drives and optical drives are included. Avoid touching gold contacts or gold springs inside of the iPhone.
#Ground yourself - ground yourself and the equipment you are working on to an earth or building ground. Use grounded conductive workbench mat and a grounding wrist strap, and ground the equipment to the mat.
#Make sure you are not grounded when you work on plugged-in equipment or when you are working with or around an energized power supply or logic board.
#Do not place components on metal surfaces such as filing cabinet or the outside of a metal-shielded ESD storage bag. Always place unshielded components on a grounded ESD mat. Metal surfaces can hold a static charge that will damage sensitive electronic parts.
#Do not touch anyone who is working on ESD-sensitive circuits or circuit boards of any kind. If you touch that person, there is a potential risk of your electrostatic discharge running through the tech to the components.
#Use ESD storage bags - transportation, storage, and handling of boards and assemblies with circuit boards on them. The best type of bags to use have a metallic coating on the outside that will block any exterior static charges. When you are ready to leave your bench and take a board to a storage place, put the component in a static-shielding bag. Leave all Apple replacement modules in their ESD-safe packaging until you need them. Do not open up a service part’s packaging until you are grounded at your ESD-compliant workstation. Otherwise you risk rendering the part DOA. If the ESD bag you are using has any holes or worn areas, get rid of it and use a new one. Punctured surfaces lose the ability to block ESD. When sending Known Bad Boards back to Apple, always use the packing that came with the replacement part to prevent further damage.
#Avoid synthetic materials such as polyester, plastic, vinyl - can retain a static charge that are not dissipated by simple connection to ground. Do not wear synthetic fabrics or bring such items as foam coffee cups into the work area. Packing foam from shipments should NOT be left in the work area.
#Regulate humidity - maintain a relative humidity of 70-90% in your work area. This lessens static charges but is NOT a replacement for properly grounded work area.
#Use additional protection - An ionized air generator helps neutralize the charge with surrounds nonconductors. An ionized air generator is not a replacement because it cannot provide total protection against ESD damage. Static charges frequently cause ESD damage before the neutralizing process of the ionized air generator eliminates the charge.
#Clean ESD mats regularly - at least once a week, best practice is daily. Use a cleaner designed specifically for ESD mats or the mats will not ground equipment placed on them.
===ESD Compliant Work Station===
#Conductive workbench and ground cord - provides a safe place on which to set sensitive components and equipment. Consists of these elements: Layer of conductive mesh sandwiched between rubber layers, 1 megohm resister in grounding connector on mat, “soapy” film on surface of mat allows charge to drain away. (Cleaners for ESD mats restore the “soapy” film - do not use solvent cleaners on ESD mats)
#Wrist strap with a built in 1-megohm resister and ground cord - grounds you allowing you to safely touch static-sensitive components without discharging static electricity into them. Alternately a heel strap may be used.
#Static-safe storage bags - place them in static-safe bags as they are removed. These bags prevent build up of static electricity on the component itself. Also protects the component from being touched by someone who is not properly grounded.
#Ground polarity tester - verifies proper grounding of power outlets.
====Setting up compliant work area:====
#Remove all synthetic materials from work area - retain charges that is not readily dissipated - includes foamed plastics, polyester clothing, and vinyl.
#Verify that you have a properly grounded electrical supply - user polarity checker on the a/c outlet you will be using to ground the workstation and tech. Follow instructions included with tester to interpret the results.
#Attach workbench mat to ground. Once polarity checker results are good, set up ESD workbench mat by attaching it to the ground of your electrical outlet.
#Connect ESD wrist strap (or use ESD heel strap) - connect to the ESD mat or separate grounded connector. Check instructions that came with ESD equipment for proper use. When wearing the wrist strap, you must be sure the metal section of the strap interior is touching your skin.
#Heel strap - if using you will need a grounded floor mat in front of your workbench. This mat is used along with the ESD mat on top of the workbench. The setup details depend on the specific products used.
Once the work area is properly set up, equipment is grounded by the ESD mat or shielding in an ESD static bag. The technician is grounded by an ESD wrist strap or a heel strap combined with a grounded floor mat.
Additional ESD compliant tools are black stick, ESD tweezers, capton tape, ESD small parts organizer box, screwdrivers, etc.
===Key Points===
*Static electric charge is generated by everyday activities such as walking or getting in and out of a car.
*Electrostatic discharge occurs when objects or people with a high electric charge touches a non-grounded object.
*The amount of voltage it takes to damage an integrated circuit is below human perception (as little as 10 volts).
*ESD damage can cause immediate issues or intermittent failure at a later time.
*You should be aware of common ESD myths and how to address them with other techs.
*Practice the 10 Apple ESD prevention guidelines.
*Before servicing a product, create an ESD-compliant workstation.
<br />
==Safety First==
Apple’s definition of a safety issue: anything customers report that includes a safety keyword such as fire or injury. Apple products have potential for cutting, overheating, electrical shock, or fire.
If a customer claims that an Apple product caused personal injury and/.or property damage, you should always document this as a safety issue, even if mistaken or misrepresent issues as safety issues.
Important to recognize and report safety issues quickly and efficiently - equally important to describe the device’s condition and sequence of events/actions that led to event. Detailed documentation helps establish a pattern of events that may lead to product design changes in the future and rewrite documentation and support solutions to address potential issues. Clear records establish accountability and prevents customer from making damage claims based on denial. If an unsafe device is returned to the warehouse rather than processed as a safety issue, some customers may claim Apple tried to destroy evidence or ignored a safety issue.
==='''Safety keywords:'''===
Certain key words your customer may use when describing an issue should alert you to a potential safety issue.
It is important to be on alert for these descriptions during your interactions. Here are some examples:
{| class="wikitable"
|
*Acid
*Allergy, Allergic*
*Bleed
*Bump, Bumps, Bumpy*
*Burn
*Cut
*Fire, Flame
*Hive, Hives*
*Irritation, Irritated*
|
*Itch, Itching, Itchy*
*Leak
*Liquid
*Melt
*Rash*
*Reaction*
*Red, Redness*
*Sharp
|
*Shock
*Soft (As in "The plastic case feels soft.")
*Sore, Sores, Soreness*
*Smoke
*Spark
*Splotches, Splotchy*
*Swell, Swelling, Swollen*
|}
Words marked with an asterisk (*) are associated with skin irritation.
If you hear these words, or if your own inspection reveals that the device or product may be unsafe, be cautious and treat this issue as a safety issue. If you think there may be a product safety issue follow the required 3 actions:
*Document the reported issue clearly and using the objective terms as a safety issue in GSX
*Create a GSX Safety Escalation
*In response to your escalation, Apple will provide direction on how to proceed.
Use the right vocal tone, body language and word choice when interaction with a safety issue.
====Key Points====
*A safety issue is anything a customer reports that contains key safety words or injury.
*It is important to document safety issues with enough detail to allow for careful examination and potential design and documentation changes.
*It is important to listen to key safety words when a customer reports an issue and to document and escalate safety issues.
*Position safety issues with customers in a professional yet collaborative way.
===Embedded Battery Safety===
'''[https://apple.com/batteries apple.com/batteries]'''
Embedded batteries are in portable computers and devices. Design allows for thinner and lighter designs while maintaining battery life.
Cell packs - parts of a battery that are recharged, hold energy, and provide power to the portable computer or device. Cell packs could be punctured or damaged during repair or testing because they are not shielded by a protective enclosure or cover.
Case Assemblies with battery - some portable macs, built into the case assembly (bottom or top). Replacing a defective battery in these will require replacing entire case assembly. Never attempt to separate or remove the battery on built in.
If you notice something unusual (odor, swelling, discoloration, deformity, overheating), disconnect and stop using the battery. Follow the safety guidelines in this training course.
Use care when handling the battery or case assembly with built in. Damage to battery may result in an unexpected, undesired event such as thermal event. Always work on embedded batteries at a workstation that has properly set up.
*Do not subject lithium batteries or lithium battery-powered devices to high levels of force. (may deform, cause mechanical short, or break protection circuit built in to battery - may result in overheating or thermal runaway)
*Do not puncture, strike or crush lithium batteries or lithium battery powered devices. Avoid breaking the battery cell wall or containment structure.
*Do not expose to high temps.
*Do not expose to liquids
*Use non-conductive tools (use only those that are made from, or covered with, a non-conductive material only).
*Properly connect the battery in the device, charger, or testing equipment. Batteries have specified and marked postive/negative terminals. Wrong connection will cause it to charge incorrectly, abnormal chemical reactions leading to leakage, overheating, or thermal runaway. Do not force if it does not fit.
*Be sure to recharge the battery with the specified battery charger and a/c adapter.
*Do not recharge batteries where the temp may become high
*Discharge battery only in an approved device. (May damage the battery, reduce life expectancy, or cause event. Can be discharged at a temp range between -20 C to 60 C. Outside of this temp may affect optimal battery performance and reduce life expectancy)
*Do not short circuit the battery. Do not carry or store with metal objects - may short positive/negative terminals resulting in event.
*Do not directly solder batteries. Heat will melt the insulator, damaging the exhaust valve and the protection mechanism leading to event.
*Do not disassemble or modify. Lithium batteries have a gas exhaust vent and built in protection mechanism to prevent accidents. The protection circuit module provided with battery packs is not to be used as a shut-off switch.
*Remove batteries from a device that will not be used for an extended period of time. Discharge battery to about 50%. Battery state-of-charge should be no less than 50% prior to long-term storage. If you plan too tore for longer than 6 months, charge to 50% every 6 months. If voltage goes too low during storage, battery may require at least 20 mins of charging with adapter before use.
*Do not use batteries that work only for an extremely short period of time. Lithium batteries have finite life spans.
*If something unusual is noticed, stop using battery. Unusual odor, overheats, vents, sparks, is discolored, deformed or reacts unusually in any way during use, recharging or storage, remove it from device or battery charger and discontinue use.
*Do not force a battery into a box.
*Store batteries in original protective cases. Place only one lithium battery in each box.
*Minimize box stacking (stacking on top of each other).
==='''Workstation Setup'''===
Must meet the following criteria - non-flammable ESD compliant work bench, 2 ft or .6m away from paper/combustable materials, within 20 ft or 6.1m of fireproof safety cabinet. 8-10 cups of clean, dry untreated sand in a quick pour container within arm’s reach, ideally located in area with adequate ventilation. Safety lgasses, lens cleaning wipes, ESD bags, cut resistant gloves, nitrile gloves, heat resistant gloves, brush/dustpan, trashcan. Details found in article OP685. Use battery protective cover whenever opening mac. Immediately disconnect device battery. No metal objects around soft cells of batteries. (Clay or dirt are not recommended)
Use only Apple approved tools to remove/replace batteries or case assemblies containing batteries. Required tools vary from product to product.
Battery covers on portables - prevents unintended contact with the battery surface from items such as loose parts, tools, and screws. Attach protective cover immediately after opening the computer (removing the bottom case), before beginning battery removal, prior to installing a replacement battery, when preparing to package a battery for shipment. Some computer models covers are equipped with tabs, adhesive, magnetic or plastic clips to secure to battery. Protect the exposed cells at all times. Use the correct battery cover for the product. Never use the wrong cover, worn, torn, or damaged covers. Cover part numbers are in GSX. Only remove immediately before installing computers bottom case. (Make sure to inspect battery for any damage/debris, pay attention to any dents, dots, or scratches as these may cause thermal events with prolonged battery use). Covers can be reused as long as free of dust, dirt, and damage.
===Verify cosmetic condition===
of the cells when performing service on 2010 and later MBA, 2015 and later MB 12”, all MBP with retina displays. Be sure there is sufficient lighting in the area. View battery from about one foot away. Avoid accidental damage to cell packs when measuring cosmetic issues.
If dents or dots exceed these guidelines on MacBook Air (Late 2010 and later) and all MacBook Pro with Retina display computers, replace the battery/case assembly with battery.
Dents/Dots
{| class="wikitable"
|Diameter
|Total Number of Dents/Dots
|-
|Less than or equal to 0.5mm
|<nowiki>-</nowiki>
|-
|Greater than 0.5mm,equal to or lesser than 1.0mm
|10 or less
|-
|Greater than 1.0mm,equal to or lesser than 1.5mm
|6 or less
|-
|Greater than 1.5mm,equal to or lesser than 2.0mm
|3 or less
|}
Depth of any dent or dot should not be greater than half the diameter of the dent or imprint. (ex. Dent 1mm wide should not exceed .5mm deep)
Scratches
{| class="wikitable"
|Diameter
|Total Number of Scratches
|-
|Less than or equal to 15mm
|5 or less
|-
|Greater than 15mm,
equal to or lesser than 30mm
|3 or less
|-
|Greater than 30mm,
equal to or lesser than 40mm
|2 or less
|}
If scratches exceed these guidelines, replace the battery/case assembly with battery.
<br />
===Swollen battery===
Expanded enclosure - device’s enclosure has separated/bulging/split apart due to expanded/swollen battery. Device may still turn on and work as expected. Not usually a safety concern. Swelling may indicate end-of-life for older batteries or batteries with very few remaining charging cycles. Electrolyte has been fully consumed and no liquid remains inside the pouch. The gas present in the swollen pouch is likely carbon dioxide (an inert gas).
<br />
===Thermal runaway -===
cell appears to be suddenly and quickly swelling in real time.
Do not over tighten screws when replacing a battery. Turn until finger tight. Over tightening may cause irreparable damage to battery pack.
<br />
*Do not reuse or reinstall a loose battery or battery that has been removed.
*Do not pry battery if tabs break
*Stop if there is any resistance removing the battery.
*Replace entire phone if battery is dented, punctured, swollen or otherwise damaged.
Never attempt to transport or ship a battery or case assembly with battery without battery cover. Reuse the battery cover that ws included with new battery when returning to apple. Always use tape to seal boxes never staples.
Only properly trained personnel should handle hot batteries, venting batteries, leakage event, or thermal event.
<br />
===Hot batteries===
- when battery temp rises above 60C or 140F. Clear work bench of any materials/debris. Unplug computer’s power adapater (battery should immediately start to cool). Put on heat resistant gloves/safety glasses. Pick up battery/case assembly, and place in fire proof safety cabinet for at least 2 hours. If not easily removed, place entire unit in cabinet. If battery does not cool significantly in 2 hours, increased likelihood of thermal event.
<br />
===Venting batteries===
swollen or damaged batteries have greater likelihood. Gases may have an organic-like odor (similar to anti freeze) and may irritating to mucous membranes and respiratory system. May or may not be an expelling noise. Do not attempt to handle a venting battery. Leave it on the bench and evacuate for 15 mins. Note any unusual odors upon reentering room. If odors are strong or irritating in any way leave for another 15 mins. If no odors, put on nitrile or latex gloves and safety glasses. Prepare a disposal bag such as ESD or Ziploc). Clear work bench. Unplug power adapter. Place battery or entire case assembly in bag and seal bag. Put the bag containing battery in yellow fire-proof safety cabinet and notify management.
<br />
===Leakage Event===
- no more than a few drops of free liquid contained in embedded cells. Usually likely excess liquid came from another source when seen. Regardless of source - immediately eliminate any ignition source or debris near/around leaking battery/device. Clear work bench. Prepare a resealable plastic bag (DO NOT USE ESD). Put on nitric gloves and safety glasses. Pick up battery/case assembly and place in bag. Place in fire-proof safe temporarily. Wipe down affected area with water. Use an ESD mat cleaning solution on affected area. Notify management.
<br />
===Thermal Event===
- Batteries with charge below 25% are unable to produce. Battery begins to smoke, emit sparks or soot, hear hissing or popping sounds. Smother immediately with plenty of clean, dry sand, dumped all at once. Never water or fire extinguisher. The faster you pour sand, the faster the thermal runaway will stop. If you cannot dump the sand right away, the reaction is self-limiting and should be done in 30 seconds or so. Cell may continue to emit smoke for another minute or two afterwards. Leave room for 30 minutes or let cell rest for 30 mins. Once the reaction has been smothered and battery has cooled, put on heat resistant gloves and safety glasses. Remove the product and any debris from sand. Place items in cabinet for at least 2 hours min. Report any injuries or ill feelings. Sweep up sand and pour back in dispenser for reuse. Add more sand if necessary. Wipe down affected area with water. Use ESD mat cleaning solution on affected area. Dispose of damaged battery/device and any debris removed from sand according to usual waste/recycling protocols. Do not ship. Order more sand from vendor. Notify management.
===Practice Questions===
Question 1:
If you notice something unusual, discoloration, deformity, or overheating of a battery, what is the first precaution to take?
Your answer: Disconnect and stop using the battery.
Correct.
Question 2:
When servicing portable computers or iOS devices with embedded batteries, what should be your primary concern?
Your answer: Your own safety and the safety of those around you
Correct.
Question 3:
Which of the following describes a proper workstation on which to service devices with embedded batteries? (SELECT THREE)
Your answer: ESD safe and non-flammable work bench, 8-10 cups of sand in quick pour container within arm's reach and At least 2 feet (0.6m) away from paper and or other combustible materials
Correct., Correct. and Correct.
Question 4:
Which of the following is used to prevent items such as loose parts, tools, and screws from unintended contact with the actual battery surface on a portable computer?
Your answer: Battery cover
Correct.
Question 5:
When a battery’s temperature rises above its safe operating temperature (60° C/140° F), it can be potentially hazardous. If this were to occur, which of the following steps should a technician take after clearing the workbench of any materials or debris?
Your answer: Put on heat-resistant gloves and safety glasses.
Correct.
Question 6:
If you notice a battery is venting gases (not thermal runaway), or if you notice unusual odors coming from the battery or device, which step should you take first?
Your answer: Leave it on the bench and evacuate the room for 15 minutes.
Correct.
Question 7:
After opening a device, you see a few drops of liquid around an embedded battery. You clear the work bench of any materials and debris and put on both nitrile gloves and safety glasses. What should you do next?
Your answer: Pick up the battery and place it in a resealable, plastic disposal bag (such as Ziploc®).
Correct.
Question 8:
What is the most effective means of stopping a battery that is undergoing thermal runaway?
Your answer: Smother it immediately with plenty of clean, dry sand, dumped all at once.
Correct.
Question 9:
In the event that electrolyte from a leaking embedded battery makes contact with your skin, which of the following first aid procedures should you take?
Your answer: Flush skin with cool running water.
Correct.
===Key Points===
*Embedded batteries are used in many Apple products and require special tools/handling
*Always use correct safety tools and ensure workstation meets requirements.
*Use the Apple-approved tools described in service guide to remove/replace batteries
*Verify the cosmetic condition of battery cells
*Use great care and correct techniques when removing/replacing
*Know the correct specific response and equipment to address specific battery scenarios.
==Service Fundamentals==
==='''Asking Questions'''===
*Four probing skill steps: Position, Permission, Probe, Check for understanding
Position - the skill of explaining what you want to do and why. Helps the customer understand why they should provide you with the info you are requesting.
Permission - You wait for the customer to give you consent before starting to ask questions. Might be non-verbal (nod) or verbal (“Yes”)
*Is that Ok?
*May I go ahead?
*Will that work?
*Is that alright?
Probe is a question or other request for information. Types are either open probes or closed probes. Open probes encourage to respond freely, closed probes limit response to yes/no/specific answer.
Check for Understanding - Verify understanding by reflecting or rephrasing (not repeating) what the customer said.
Position, Permission and Probe
"With your agreement (permission), I would like to ask you a couple of questions so that I can understand your Apple Watch issue (position)." "I see you have brought your iPhone for repair today (position). May I ask you a few questions to begin with so I can fully understand the issue? (permission)"
{| class="wikitable"
|'''Open Probes'''
|'''Closed Probes'''
|-
|How are you backing up now?
|Which AirPod is not working?
|-
|Why is that important to you?
|Did it work yesterday?
|-
|Describe the sound it made.
|What version of iOS is running?
|-
|What kinds of things do you use your Mac for?
|When did you last restart the device?
|-
|What did you do next?
|Were you on the Internet at the time?
|}
====Key Points====
*Reflection is not repeating - use phrases such as let me understand, what I’m hearing is, Did I get that right?
*Repeating exactly what customer says is frustrating.
====Key Points #2====
*Position your question, ask permission to ask it, probe politely for the best information.
*Use open questions to encourage customer to respond freely
*Use closed questions to gain specific information
*Use reflecting skills to check your understanding
==='''Interpersonal Skills'''===
Body Language = words/vocal tones are power communication tools. You are already communicating nonverbally before even speaking. Your attitude and personality may be judged before customer even meets you. It is your responsibility to keep an open mind when it comes to reading customer body language. Avoid assumptions. (No arms crossed, no eye contact, facing away from customer when speaking, making facial expressions)
Accurately documenting what customer is explaining without customer thinking you are texting on an iPad or doing other work on a computer. Position what you are doing so customers understand that they still have your full attention. Ex. I am going to take some notes as you describe them if that is ok. You still have my full attention.
Pay attention to facial expressions - look for smiles, frowns, furrowed brows. Be mindful of your own expressions.
Asking “Does that make sense” may force a yes and make customer afraid of sounding foolish. Instead say “How does that feel?” Allows customer to participate on a human level and freedom to express concerns.
Word value - Spoken words may have a specific meaning but tone, body language, inflection can change the value or the way the customer interprets your words.
Denotation and Connotation - Denotation refers to literal meaning of a work. Connotation refers to the idea or feeling of a word based on context or experiences. Ex. Crash - immediately draws negative feelings (car crash, crashing Mac) based on previous experiences with the word. Using the word “crash” implies physically broken, data loss, and expensive repairs. Instead, use “The application is having a hard time opening itself” or “The app is not behaving as expected and is unresponsive.”
Intonation - not what you say but the way you say it.
Warm Welcome - One chance to make a first impression. Apple calls this the “Warm Welcome.” Interpersonal skills are most important here because they set the tone for the remainder of interaction. Give full attention, use customers name, and use open/inviting body language. Prioritize the customer over the issue when beginning an interaction.
Fond Farewell - Make sure customers leaves with positive and lasting final impression. Make sure issue is resolved, invite them to return for other services, offer ownership opportunities when appropriate, finish notes either before farewell or after they leave, use customer name to help maintain rapport.
Over the phone - loses the advantage of face to face interaction and reading body language. Answer the phone call with a smile. Pace speech - briskly enough to be confident but slow enough to be understood. Too slow - boring, bored. Too fast - nervous, impatient. Do not interrupt what the caller is saying. Reflect your understanding back to customer.
*Find a quiet location with minimal distractions to make customer calls. Pause music if needed.
*Always conduct yourself as if customer is in the repair areas.
*Prepare with a script in case you have to leave a voicemail. Make sure messages are clear, concise and complete.
*Avoid calling customers early in the morning or late at night.
*Announce to other employees that you are about to make a call and keep distractions to a minimum.
====Key Points====
*You are already communicating nonverbally before you even speak to a customer
*Tone or pitch of voice can change the connotation
*You get only one chance to make a first impression using a Warm Welcome
*A Fond Farewell involves making sure the issue is resolved. Invite for additional services and offer ownership opportunities when appropriate.
*Be mindful of pacing, not interrupting, recapping and having a smile in your voice when on the phone.
==='''Providing Solutions'''===
Telling a customer their device needs repair may make them distressed because - you failed to meet their expectations (may have expected replacement over repair), may be reluctant to part with device, may be reluctant to pay for repairs.
Position repair so that the customer understands the issue and partners with you in finding a solution. Stay positive and focus on outcome of repair. Choose words carefully. A good repair recommendation always provides some way forward.
“Stop Words” hijack a conversation - they shift customer focus to defensive side. Avoid using words such as damaged, failed, warning, abuse, you have (accusatory) or misuse.
Best Practices for recommending new products instead of repairing.
*Start with a limited number of options
*ONLY FOR APPLE CERT PURPOSES - NOT SHINY!! A recommendation for a new product, upgrade, or extra service is often the best solution for the customer if the service goal is providing the best possible solution for the customers need…………..
*The key to having your suggestions accepted is positioning - how you phrase your recommendation. Be empathetic, agreeable, and supportive.
*Put yourself in the customer’s shoes. They expected a quick fix with loa or no cost.
*Present the new solution as an opportunity. The focus moves from the cost and concentrates on enhanced performance, new features, etc.
*Setting expectations at check-ins is important. Should be part of the relationship not a shock. Additionally, let customers know as soon as possible if repair costs are expensive or complex. Prepare them with I am not sure this can be repaired, this is not looking hopeful, generally this much water damage is quite serious, etc.
When to refuse service
*A device that has been modified by an unauthorized service provider using non-Apple parts.
*A device with non-covered accidental damage.
*A device with no serial number
*A legacy device we are no longer servicing
*A customer has misperceptions about the products and services offered.
When refusing service, explain why and offer options. Never simply shut them down.
====Key Points====
*Avoid using stop words or phrases.
*Be empathetic, agreeable, and supportive when offering recommendations
*Explain why and immediately say what you CAN do when positioning refusals.
==='''Educational Opportunities'''===
Cornerstones of Adult learning
*Training is a partnership - collaborate with the training, add opinions, participate
*Learn only what they do - learn by performing the task.
*Think like a student - have true empathy. That’s right!
*Lead learning out - do not give information as if they know nothing, do not insult intelligence. Respect, ask leading questions which lead to correct conclusions.
Lead Learning out -
*Leverages prior knowledge or skills already in place
*Building on top of the foundation that the learner supplies and allowing them to be a member of the partnership.
*Asking smart questions that the learner can answer correctly so they feel part of process and true collaborator.
*Goes hand in hand with asking the learner to be an active participant and responsible for their own learning.
*Does not involve interrogation, intimidation.
*Helps make connections
*Deepens the student’s role in the learning partnership
*Asks for students input first and validate if correct.
*If the student is likely to get the answer correct, asking is more powerful than telling.
Best Practices
*Do not do what the student should do
*Sit next to but not uncomfortably close to student
*The word “there” has no meaning to the student. Use anchors like it’s next to, is above, it is the bright red box, etc.
*Do not say “no” or “wrong” Instead use “Try again.”
*Do not use “just” as it implies the task is too easy, demeaning to customer.
*Divide screen real estate into nine “ marker” sections. Top left, dead center, bottom center etc.
Use analogies to better explain.
Assess the customers level of technical competence
*Use probing skills - avoids over simplifying or talking down
*Use clear simple language - do not use complex words when you do not have to
*Explain features and their benefits
*What, why, and next steps.
Correcting a customer - Use the phrase “Turns out” - corrects without blaming or making look foolish. Avoid the words no, wrong. Other good ones - As it happens…, What really happens, I can see how you would think that but as it turns out…..
====Key Points====
*Lead learning out mean leveraging knowledge or skills already in place.
*Let the customer handle device while you instruct
*Do not use complicated technical terms or terms that are over-simplified.
*Use appropriate phrases for letting a customer know they are wrong.
*Use analogies to better explain a concept
==='''Partnering with the customer'''===
Under-promise but over-deliver - be completely honest even is afraid the truth will upset the customer. Set realistic expectations. Disappointment definition is expectations not met. Make the customer a collaborator, not adversary. Use neutral, non-inflammatory language. Set generous margins in terms of time and effectiveness. If a part arrives sooner than you had set expectation for, you are the hero. Use conservative language to set expectations. Ex. Can, may, might, possible, likely, unlikely, maybe. Do not use promise, on my honor, never fails, guaranteed, always, never.
Empathy is the ability to understand and share feelings of another. Not to pity. Builds rapport. Three steps - Acknowledge their point of view, align and let them know you are on their side, assure to let them know you are willing to fix the problem and take care of concerns.
Feel, felt, found. Use in your statements, I can understand how you feel, I felt a lot of pressure when that happened to me, I found that this helped tremendously. Avoid saying I know how you feel and instead say I understand how you feel.
Apologizing -It is appropriate to apologize if there was a misunderstanding about a situation or the customer is having a difficult time. Do not apologize for the business, the technology, or your manager.
Try replacing an apology with an appreciation - thank you for your patience, thanks for giving us a second chance, thanks for taking the time out of your day to come in.
Inflammatory phrases that can upset a customer - avoiding responsibility, refusals, getting confrontational, being inappropriately positive.
Avoiding responsibility examples not to say - I am not authorizes to override the cost of the replacement, ringing you out is not my job as I am a technician - find someone on the sales floor, that is not how it works - if you give me a 128GB phone, I have to replace it with another 128 not a 256.
Refusals examples not to say - Unfortunately, you did not get AppleCare+, I cannot make an exception for your accidental damage, I did not say we would not charge you, I said we would replace the device not how much it cost.
Getting confrontational examples not to say - you need to calm down before I get security involved, I bet you are frustrated (if the customer did not say he was frustrated this could allow him to be), You are wrong - your iPhone only has one speaker on the bottom, STOP SHOUTING (yelling to customer). If you find you are unable to maintain composure ask to step away from the situation and gather your thoughts.
Inappropriately positive examples not to say - Your phone shattered, great, we can get that fixed today. Liquid damage, awesome, we have options for your. In other words, being overly excited that you know the solution without showing empathy for the customers emotions first.
Emotionally Hijacked customers - when customer has emotions that are out of your control. You can use all of the available empathy skills, but the customer was upset before you even began the interaction. May be unrelated - personal loss, worried about being late, got in an accident on way over, etc. Cannot help but channel their emotions to the issue in front of them. Can make you feel personally attacked.
*Stay calm, speak more quietly than the customer and remember to breathe.
*Show genuine empathy and keep reinforcing you are there to help them.
*Try to find a way to say you’re right and so endorse the customer.
*Describe how the specific behavior is affecting you and your ability to continue the conversation. (only used in extreme situations)
*Propose an approach that refocuses the discussion.
Five Step Approach in Action:
*Speak Calmly
*Acknowledge issue
*Align
*Empathy and ask to address behavior (language, attitude, etc.)
*Permission to ask questions and suggest a resolution, ask for approval.
If personal safety is a factor, make the customer aware you would like to include manager in conversation. Partner with the manager, take a break after incident to refocus. Emotional scenes are stressful and should not be dismissed.
====Key Points====
*Cautious words and phrases help set accurate customer expectations.
*Empathy is key to customer satisfaction as it helps you align with the customer and helps avoid conflict with the customer.
*Acknowledge, align, and assure to demonstrate empathy.
*Use apologies appropriately.
*Five step anger method - stay calm, show genuine empathy, try to find a way to say you’re right, describe how the specific behavior is affecting you, propose an approach that refocuses the discussion.
==='''Documenting Customer Interactions'''===
Case notes - remarks and recommendations techs make during troubleshooting. Describe what the customer said, any tests performed and their results, observations made during a physical examination. May also include a suggested resolution. Good notes are essential because:
*Accurately detail device issues to the customer
*Direct the next tech who works on the repair
*Build a permanent and complete customer repair history
*Apple engineers use the data to improve products and customer service.
*Act as legal documents
Apple repair centers can only see the Work Authorization portion of a repair case. If the initial notes are poor, the repair center may have a difficult time reproducing the issue or validating the customers concern. Ultimately leads to repeat repairs, repeat visits, and decrease in satisfaction.
Negatively affect Turnaround Time (TAT) and Customer Satisfaction (CSAT).
Poor case notes do not accurately describe the issue, are not helpful for the next tech, can cause repetition of troubleshooting and wasted time, can lead to contacting the customer for clarification.
Good notes include:
*What info did the customer supply?
*What did customer see, hear, smell?
*Has the customer ever seen this happen before?
*How was the issue verified?
*Tests ran and results
*What info did the device itself supply?
*What resolution was reached or recommendation?
*Write full descriptions and use declarative phrases.
Clear, concise case notes:
*Stick to facts and are objective.
*Use “customer reports” when quoting customer
*Use neutral terms when describing emotional elements
*Clear, declarative statements
*List troubleshooting steps and results using Action/Result format
*Find a balance between including complete details yet make entries easy to read.
*Avoid all but standard acronyms, emojis, abbreviations, and tech jargon.
*Document cosmetic condition using objective descriptions/measurements while avoiding subjective terms such as good, fine, perfect condition, normal wear/tear.
*Set up next tech for success
*Professional, avoid inappropriate language
*Tell a story with beginning, middle, end
*Provide answers that make sense and do not lead to more questions
*Proofread notes before saving, avoid typos.
====Key Points====
*Clear concise notes are essential because they accurately detail device issues to customer, direct the next tech, build permanent and complete repair history, engineers use data to improve, act as legal documents.
*Complete case notes negatively affect TAT and CSAT.
*Effective notes describe completely the interaction and your subsequent actions.
==='''Resource Fundamentals'''===
Excel as a tech by using all available Apple resources
*Resource usage allows you to provide informed and procedurally correct solutions to customers
*Resource documents are updated regularly so it is better to look up relevant information than it is to memorize it.
*Using resources helps you work smarter, not harder
*Using resources provides a model for customers to resolve their own issues.
Apple Support Site ('''[https://support.apple.com support.apple.com]''')
*How-to articles
*Tech specifications
*Support Communities
*User manuals
*Downloads
*Troubleshooting articles
*Service and repair options
Global Service Exchange (GSX) - key service resource available only to Apple authorized techs currently employed at Apple Authorized Service Facilities. Used by Apple internal support groups, AASP, carrier technicians, self-servicing accounts (SSA), and other groups of techs who service Apple products.
*Internal versions of public articles
*Standard Operating Procedures articles
*Visual and Mechanical Inspection (VMI) guides
*Service Guides
*Integrated Troubleshooting charts
*Service Videos
*Escalations
====Key Points====
*Apple Support site is powerful customer facing resource
*Apple support articles are available to both techs and customer, are a valuable resource when searching for troubleshooting and installation instructions.
*GSX is key service resource
*GSX contains confidential support articles and service info, only techs are able to assess.
==Introduction to Service Guides==
==='''Global Service Exchange'''===
- GSX - web-based system used by AASPs, wireless carriers, self-service businesses, and education customers. Used for creating repairs, ordering service inventory, using tech/operational procedures, researching repair history, and requesting reimbursement from Apple for warranty repairs.
Service Guide
Troubleshooting section
- provides high-level info that includes - links to specific VMI guide to determine warranty coverage (iOS and Mac), Micro-Inspection procedure to determine modifications (iOS), common software troubleshooting procedures (iOS), general troubleshooting including troubleshooting theory (Mac), quick check procedures including resetting NVRAM and SMC (Mac), recovering lost firmware password (Mac).
Symptom charts
- isolate unlikely causes, apply quick checks, follow deep dive flow charts.
Quick Check
- quick, non-invasive checks prior to Deep Dive.
Deep Dive
- flow chart guides through systematic troubleshooting steps to find issue and corrective actions to take. Based on the Yes/No answer to questions. Usually taken once the device has been checked in.
Take Apart
- designed to help tech repair/replace parts within a unit. Organized by part, starting with external housing and working towards logic board and other internal parts. Beginning of this section - find general info about the product such as cable types, tool requirements, procedure notes.
First Steps
- should be performed before repair has begun. In some cases will include other part removal such as bottom cover removal before beginning repair. Always complete First Steps before beginning repair.
Tools
- listed in Take Apart - required tools for specific repair in question.
Steps for removal/reassembly
Follow exactly. Reassembly steps may not be provided and would need to follow in reverse order.
Views - designed to help you identify parts, screws, and physical location of component. Most include exploded view of all parts and screw chart.
===Key Points===
*Always use the latest Service Guide when servicing a given device.
*The Quick Check and Deep Dive sections help techs troubleshoot devices efficiently and accurately.
*Be sure to follow the First Steps section before attempting to complete the repair in question.
==Apple ID==
Apple ID is user name that can be used for everything customers do with Apple in macOS, iOS, watchOS, and tvOS. Customer uses an email address to create an account for an Apple Service they create their Apple ID. Same ID lets them access Apple’s other services.
Created from '''[https://appleid.apple.com appleid.apple.com]''' or when setting up a new device or when sign into iTunes or iCloud for the first time.
Needed to create an Apple ID:
*A valid email address (serves as user name)
*A strong password
*Three security questions and answers (verify identity, reset the password)
*Date of birth
==='''Support References'''===
If an Apple ID is created through the iTunes Store, iBooks Store, or App Store, credit card information may be needed. See Apple Support article, [https://support.apple.com/HT204034 HT204034 - Create or use your Apple ID without a payment method] for alternate payment methods. Other available resources are:
*[https://apple.com/support/appleid apple.com/support/appleid]
*[http://support.apple.com/HT204053 HT204053 - Sign in with your Apple ID on a new device]
*[http://support.apple.com/HT203993 HT203993 - Create and start using an Apple ID]
To [https://support.apple.com/en-us/HT204316 use an Apple ID with a service such as iTunes, iBooks, App store, or the Mac app store], sign-in is required. The examples below show you how to sign into iTunes in macOS and iOS.
==='''How do you manage your Apple ID?'''===
Because Apple ID is used across all devices and services, it is important to keep the account information up to date. By signing in to My Apple ID, customers can:
*'''Update Apple ID email address''' to make sure it is an address in use frequently
*'''Change the password''' to help maintain account security
*'''Reset security questions''' to make sure they are easy to remember but hard for others to guess
*'''Add a rescue email address''' to help reset security questions if they are ever forgotten
*'''Add additional email addresses''' to make it easier to communicate and share
*'''View and edit devices''' associated with this Apple ID
*'''Edit payment details''' for this Apple ID
==='''What if you forget your Apple ID?'''===
If you have forgotten your Apple ID username or password, go to iforgot.apple.com for recovery options.
==='''Support References'''===
Apple Support has numerous articles focused on Apple ID. The following Support Articles contain additional information on managing or troubleshooting Apple ID issues:
*[https://support.apple.com/explore/managing-apple-id Managing your Apple ID]
*[http://support.apple.com/HT202667 HT202667 - Change your Apple ID]
*[http://support.apple.com/HT201354 HT201354 - If you forgot your Apple ID]
*[http://support.apple.com/HT201356 HT201356 - About your Apple ID email addresses]
*[http://support.apple.com/HT204071 HT204071 - What to do after you change your Apple ID email address or password]
==='''Two-step verification'''===
[http://support.apple.com/HT204152 Two-step verification] is an additional security feature for Apple ID that requires using a trusted device for identity verification.
*The first step is to enter the Apple ID and password.
*The second step is to enter a verification code that is sent to a trusted device.
Two-step verification is configured at appleid.apple.com in the Security section.
==='''Two-factor authentication'''===
[http://support.apple.com/HT204915 Two-factor authentication] is similar in approach to two-step verification. It is a security feature for Apple ID that also requires customers to verify their identity using a trusted device. However, two-factor authentication provides a more streamlined approach than two-step verification. It also has different system requirements, one of which is a Mac running El Capitan or later and iTunes 12.3 or later. If two-factor authentication is [http://support.apple.com/HT205075 available for an Apple ID], it can be configured in iCloud Preferences.
Best Practice
While troubleshooting, you may isolate a user’s issue to his or her Apple ID. You should help users resolve issues with their existing Apple IDs, instead of creating new ones. Creating a new Apple ID for a user who already has one can confuse the user and cause the creation of multiple iTunes and App Store accounts.
You can quickly and easily find answers to Apple ID questions using Apple's Support website, [http://support.apple.com/apple-id support.apple.com/apple-id].
===What iOS features require an Apple ID?===
*App, iTunes, and iBooks Stores
*Apple Music
*Apple Pay
*Game Center
*iCloud
*iMessage
*Find My Friends
*Find My iPhone
===What services do customers use that would indicate that they already have an Apple ID?===
*Apple Developer programs
*Apple Music
*Apple Online Store
*Apple Retail services and programs
*Apple Store app
*Apple Support Communities
*Apple TV
*App Store
*Find My Friends
*Find My iPhone
*Game Center
*iBooks Store
*iCloud
*iMessage
*iTunes Genius
*iTunes Home Sharing
*iTunes Match
*iTunes Radio
*iTunes Store
*iTunes U
*Jobs at Apple
*Mac App Store
*My Apple ID
===Key Points===
*Apple IDs created for iTunes, iCloud and with new device setup can be used with all Apple services.
*Apple IDs can be set up without a payment method.
*You must sign in with an Apple ID to use some Apple services.
*It is recommended to use one Apple ID for all Apple services.
*It is supported to use one Apple ID for iCloud services and a separate one for iTunes.
*Use appleid.apple.com to manage your Apple ID.
*Use iforgot.apple.com to reset a forgotten password, unlock your account, or recover an Apple ID.
*Two-step and two-factor authentication are available to add an extra layer of security for your Apple ID.
==iOS Fundamentals==
===Helpful Links===
*[https://www.apple.com/ios/ios-11/ iOS]
*[https://support.apple.com/explore/new-to-iphone New to iPhone]
*[https://support.apple.com/HT200290 Creating folders]
*[https://support.apple.com/HT201285 Using Search]
*[https://support.apple.com/HT202070 Switch Apps]
*[https://support.apple.com/HT201398 Force Quit]
*[https://support.apple.com/en-us/HT204091 Setting up Bluetooth accessories]
*[https://support.apple.com/en-us/HT201436 Voicemail capabilities]
*[https://support.apple.com/en-us/HT204321 Setting up Do Not Disturb]
===Messages App===
In the Messages app , you can exchange text messages using SMS and MMS through your cellular service on iPhone, and with other iOS devices and Mac computers using [https://support.apple.com/en-us/HT201287 iMessage]. iMessage is an Apple service that sends messages over Wi-Fi or cellular connections to other iOS devices (with iOS 5 or later) and Mac computers (with OS X 10.8 or later). These messages don’t count against your messaging plan. Messages sent via iMessage can include photos, videos, and other info. You can see when other people are typing, and send read receipts to let them know when you’ve read their messages. For security, messages sent via iMessage are encrypted before they’re sent.
*[https://support.apple.com/en-us/HT201925 Customize iMessage Notifications]
====Memoji====
Memoji is a new form of Animoji, and makes communicating with friends and family even more fun on iPhone models with Face ID. You can personalize your Memoji in Messages, and add Animoji, filters, text, and stickers to photos and videos with new camera effects for Messages and FaceTime.
For more information on creating and using Memoji:
*[https://support.apple.com/HT208986 HT208986 - Create and use Memoji on iPhone X or iPad Pro]
*[https://support.apple.com/HT208190 HT208190 - Use Animoji on your iPhone X or iPad Pro]
*[https://support.apple.com/en-us/HT201287 Use Messages on your iPhone, iPad, or iPod touch]
*[https://support.apple.com/en-us/HT206894 Use message effects with iMessage on your iPhone, iPad, and iPod touch]
*[https://support.apple.com/en-us/HT207525 How to use Auto-Correction and predictive text on your iPhone, iPad, or iPod touch]
<br />
===FaceTime App===
{| class="wikitable"
|in the FaceTime app , make video or audio calls to friends and family, whether they’re using an iOS device or a Mac. With the front-facing camera, you can talk face-to-face; switch to the rear camera to share what you see around you.
With iOS 12.1.4 and later, Group FaceTime makes it easy to chat with multiple people at the same time. You can start a Group FaceTime right from the FaceTime app or from a group conversation in the Messages app. The tile of the person speaking gets larger automatically, so you’ll never lose track of the conversation. Note: FaceTime, or some FaceTime features, may not be available in all regions.
|}
Use FaceTime with your iPhone, iPad, or iPod touch
===Wallet===
{| class="wikitable"
|With [https://support.apple.com/HT204003 Wallet], you can keep your credit, debit, and prepaid cards, store cards, boarding passes, movie tickets, coupons, rewards cards, student ID cards, and more in one place.
With Wallet, you can use passes on your iPhone to check in for flights, get and redeem rewards, get in to movies, or redeem coupons. Passes can include useful information like the balance on your coffee card, your coupon’s expiration date, your seat number for a concert, and more. Students at some universities in the United States can use student ID cards on iPhone and Apple Watch.
|}
===Control Center===
{| class="wikitable"
|While your device is locked, [https://support.apple.com/HT202769 Control Center] gives access to the camera, calculator, AirPlay, and control/playback of currently playing audio. In addition to those features, brightness, locking the screen in portrait orientation, turning wireless services on or off, and turning on AirDrop are also available. Turn off access to Control Center in apps or on the Lock screen by going to Settings > Control Center.
'''Open Control Center''' Swipe up from the bottom edge of any screen. On iPhone X or later or iPad with iOS 12 or later, swipe down from the upper-right corner of the screen.
'''Close Control Center''' Tap the top of the screen or press the Home button. On iPhone X or later, swipe up from the bottom of the screen or tap the screen.
|}
===Notifications===
Notifications help you keep track of what’s new—they let you know if you missed a call, if the date of an event moved, and more. You can customize your notification settings so you see only what’s important to you. View and respond to notifications on the iPhone Lock screen or in Notification Center. iPhone displays notifications as they arrive, but if you don’t read one right away, it’s saved in Notification Center so you can check it later. To see your notifications in Notification Center, swipe down from the top center of any screen, then scroll up to see older notifications. To close Notification Center, swipe up.
When you have multiple notifications, they’re grouped by app, which makes them easier to view and manage. Notifications from some apps may also be grouped by organizing features within the app, such as by topic or thread. Grouped notifications appear as small stacks, with the most recent notification on top. Do any of the following:
*To expand a group of notifications to see them individually, tap the group. To close the group again, tap Show Less.
*To view a notification, tap it.
*To view and respond to a notification or group of notifications, swipe it right, then tap Open. On [https://support.apple.com/guide/iphone/aside/iph945ccc462/12.0/ios/12.0 models with 3D Touch], press deeply on a notification to view and respond.
Support Reference
Refer to the [https://support.apple.com/guide/iphone/view-and-respond-to-notifications-iph6534c01bc/ios iOS User Guide] for additional information how to dismiss, clear, and manage notifications.
===Siri===
Your personal virtual assistant—[https://support.apple.com/HT204389 Siri] is a quick way to get things done by talking to your device. Ask Siri to translate a phrase, set a timer, find a location, report on the weather, and more. The more you use Siri, the better it knows what you need. To use Siri, iPhone must be connected to the Internet and cellular charges may apply.
====Siri Shortcuts====
Siri Shortcuts enable any app to work with Siri so you can get things done faster. You can customize Shortcuts by creating a simple voice command to kick off a task, or use the new Shortcuts app to carry out a series of actions from different apps with just a tap or voice command. You can create new Shortcuts using iOS 12 Siri & Search settings or using the Shortcuts app.
====Support References====
For more information on creating and using Siri and Siri Shortcuts:
*[https://www.apple.com/ios/siri/ iOS - Siri - Apple]
*[https://support.apple.com/HT204389 HT204389 - Use Siri on all your Apple devices]
*[https://support.apple.com/HT209055 HT209055 - Use Siri Shortcuts and suggestions]
*[https://support.apple.com/HT208309 HT208309 - Use the Shortcuts app on your iPhone or iPad]
*[https://support.apple.com/en-us/HT204389 Use Siri on all your Apple devices]
*[https://www.apple.com/ios/feature-availability/#siri-sports iOS Feature Availability]
*[https://support.apple.com/HT202639 Wifi]
*[https://support.apple.com/HT204091 Bluetooth]
*[https://support.apple.com/HT204023 Personal Hotspot]
*[https://support.apple.com/HT200285 Wallpaper]
*[https://support.apple.com/HT207955 Sounds]
*[https://support.apple.com/HT204031 Language & Region]
===Key Points===
*Some Phone call features features on iPhone behave differently on GSM and CDMA networks.
*FaceTime and Messages includes lots of features and benefits. Study them to educate the customer and troubleshoot issues.
*Wallet & Apple pay features are regional. Check to see where your customer wants to use these features.
*Personal Hotspot requires a supported carrier plan.
*You must be familiar with iOS settings to help educate the customer and troubleshoot issues.
==macOS Fundamentals==
Review default desktop - menu bar (Apple menu, active app menu, Status menu, icon menu), dock
Working with an experienced technician, locate and identify the following Desktop components on a Mac running macOS Mojave. Review what each component does and discuss the functions of the drop-down menu elements.
*Apple Menu ()
*Application Menu
*Menu bar
*Status menu
*Spotlight icon
*Notification Center icon
*Desktop
*Dock
The cursor will increase in size temporarily when moved rapidly - allows you to locate the cursor quickly - feature is controlled from the Accessibility pane in System Preferences.
===Helpful Links===
[https://support.apple.com/guide/mac-help/mh35695/10.14/mac/10.14 Pointers in macOS]
[https://support.apple.com/guide/mac-help/mh35852/10.14/mac/10.14 Drag and drop items]
[http://support.apple.com/HT204014 HT204014 - Use Spotlight on your Mac]
[https://support.apple.com/guide/mac-help/mchlp2811/10.14/mac/10.14 Spotlight Preferences]
[https://support.apple.com/HT201236 HT201236 - Mac keyboard shortcuts]
[https://support.apple.com/HT204895 HT204895 - Use Multi-Touch gestures on your Mac]
[http://support.apple.com/HT204100 HT204100 - Use Mission Control on your Mac]
[https://support.apple.com/guide/mac-help/mh14112/10.14/mac/10.14 Work in multiple spaces on Mac]
[https://support.apple.com/HT204216 HT204216 - Mac tips for Windows switchers]
*Equivalent of Control-Alt-Delete on Windows = Command-Option-Escape
*Equivalent to the Windows Key = Command
*How long to hold down power button to force Mac to turn off = 5 seconds
*Immediately log out of user account = command-shift-option-Q
*Finds next occurrence of an item previously found = command-G
===System Preferences===
[https://support.apple.com/guide/mac-help/mh15217/10.14/mac/10.14 Customize your Mac with System Preferences]
System Preferences can be organized by category (default) or alphabetically. If organized by category, 3rd party preferences will be in a section at the bottom.
===Siri on Mac===
Siri can open files, send messages or find answers/info using voice commands.
*[https://support.apple.com/guide/mac-help/mchl6b029310/10.14/mac/10.14 Use Siri on your Mac]
*[http://support.apple.com/HT206993 HT206993 - How to use Siri on your Mac]
===Practice - Part 1===
====Dock====
*Launch an application from the Dock
*Observe additional options by control-clicking on icons in the Dock
*Identify application states (not running, launching, open) using the Dock
*Add and remove applications, files, and folders to and from the Dock
===='''Applications, Files, and Folders'''====
*Create files and folders
*Move files and folders to a folder
*Move files and folders to a Finder window sidebar
*Create, edit, and delete a smart folder
===='''Customize how files and other information are displayed on the Finder desktop and in the Sidebar'''====
*Access contextual menus using a one button mouse
*Reset the application used to open a file
*Make an archive of a folder
*Identify differences in the Finder desktop when Stacks is on versus when Stacks is off.
===Practice - Part 2===
===='''Basic OS Tools and Techniques'''====
*Review Mac OS X System Preferences
*Explore settings in the System Preferences
*Locate and use About This Mac to identify hardware and software within the Mac system
*Locate the serial number for the Mac
*Locate and run Software Update on the Mac system
*Hide and show running applications
*Minimize and maximize windows
===='''Search Techniques'''====
*Locate files on a Mac using Spotlight
*Select a file in a Spotlight search to see a preview of its contents
*Locate files on the computer using Finder Search
*Narrow search to a specific location
===='''Dashboard/Widgets'''====
*Configure a widget
*Add and remove widgets from the Dashboard bar
*Customize Dashboard behavior.
===Key Points===
*There are different cursors in macOS based on what you are doing.
*Spotlight helps you quickly find things on your computer and shows suggestions from Internet resources.
*macOS has equivalent key commands for Windows key commands.
*Customization of the macOS is done via System Preferences.
*You can use Siri to open files, send messages, or find answers and information.
*Notification Center lets you view details about your day.
*There are multiple mouse and trackpad gestures that enable a wide array of macOS functions.
*Mission Control allows switching between applications or Spaces.
==Mail Basics==
Mail is Native to several Apple OS and devices.
Before helping customers set up mail, make sure they have email address/password.
==='''Support References'''===
*[http://support.apple.com/HT204093 HT204093 - Use Mail on your Mac]
*[http://support.apple.com/HT201320 HT201320 - Set up an email account on your iPhone, iPad, or iPod touch]
Apple also provides an online tool called [http://www.apple.com/support/mail-settings-lookup/ Mail Settings Lookup]. It lists account information based on an email address lookup. Customers can use this tool to verify that the settings are correct before setting up Mail. If the settings are correct, help the customer to login to the email account in Safari.
==='''iMAP'''===
- Internet Message Access Protocol - best if customer checks email from multiple devices, stored by email provider until they are deleted. Mailbox stays the same on each device as long as connected to internet. More versatile.
==='''POP'''===
- Post Office Protocol - if used on multiple devices, changes do not appear on every device, new messages delivered to one device may not be delivered to, read, or deleted on other devices.
With Mail for iOS you can view, reply, filter, [https://support.apple.com/HT207132 search], [https://support.apple.com/HT207213 organize], and use [https://support.apple.com/HT206885 Markup] right from your iPhone, iPad, or iPod touch. Follow the steps in the interaction below to see some of these functions on an iPhone.
If your customer cannot send or receive email in macOS, use [http://support.apple.com/HT204173 Mail Connection Doctor] to learn more about the issue.
==='''Support References'''===
*[https://support.apple.com/guide/mail/troubleshooting-mail35552/11.0/mac/10.13.4 Mail troubleshooting]
*[http://support.apple.com/HT204075 HT204075 - If you can't send or receive email on your Mac]
*[http://support.apple.com/HT201419 HT201419 - If you can’t send or receive emails on your iPhone, iPad, or iPod touch]
*[http://support.apple.com/HT205263 HT205263 - If Mail on your Mac downloads messages only when you open them]
===Key Points===
*Before you help customers set up email, make sure they have the necessary configuration information.
*Apple provides an online tool called Mail Settings Lookup that lists account information based on an email address lookup.
*IMAP (Internet Message Access Protocol) allows a customer to check email from multiple devices. POP does not.
*If your customer cannot send or receive his email in macOS, use Mail Connection Doctor to learn more about the issue.
==Networking Fundamentals==
Why is network connectivity important?
All of Apple's devices are communication tools that rely on some form of network access. When these devices are unable to connect to the Internet or a network, customers will often feel a variety of emotions such as anxiety, frustration, and anger. All of us have become dependent on the Internet for work, school, friendships, entertainment, and personal organization. Without Internet access, customers can often show emotion as they have a strong need for this functionality. It is important that we recognize this when acknowledging, aligning, and assuring our customers' emotions.
Troubleshooting challenges - cannot bring their network into the store, may not know every configuration detail of their network setup, issues may be environmental such as inference or traffic/bandwidth, multiple variables can make isolating the issue difficult, settings can be difficult to configure or explain, 3rd party hardware/software, dependent on IT departments for config settings. Network troubleshooting is a partnership between customer, Apple, ISP, IT dept, and 3rd party hardware. Apple hardware/software are dependent on other 3rd party variables to establish and maintain network settings.
Goal when assisting with network related issues - verify that the Apple product harware/software are functioning correctly, give customers next steps/options, always try to be helpful.
Other help options - Apple support articles, online 3rd party support articles, contacting ISP, contacting 3rd party manufacturer, contact AppleCare phone center, hire an Apple Consultant for onsite service.
All networks are made of three basic elements - nodes, links and protocols. Identifying the elements is critical to isolating the issue. Identify the equipment variables involved by asking the customer relevant probing questions.
==='''Nodes'''===
- any computer or network accessible mobile device - includes switches, gateways and routers.
==='''Links'''===
- connect nodes - cables, phone line, wifi, bluetooth, infared.
==='''Protocols'''===
- languages needed to communicate elements.
==='''IP addresses'''===
- Internet Protocol - number that IDs each computer across the internet or a network. Without it, you cannot send/receive info on the internet. Two methods of obtaining IP address - Automatically using DHCP (Dynamic Host Config Protocol) - automatically assigned IP from the router/DHCP server.
Manually - Your ISP or network admin gives you
Working with a Mac running macOS High Sierra, access the Network System Preference join a LAN. Review these articles before you begin.
*[https://support.apple.com/guide/mac-help/choose-a-manual-ip-address-or-use-dhcp-mchlp2718/10.13/mac/10.13.4 Choose a manual IP address or use DHCP]
*[https://support.apple.com/guide/mac-help/resolve-ip-address-conflicts-mh27606/10.13/mac/10.13.4 Resolve IP address conflicts]
Network connectivity is typically config when OS are initially set up or upgraded. Also configured by selecting available wifi network or plugging into ethernet connection.
Connect to a network through system preferences and network pane. By default they are usually automatically configured but can be configured manually if needed. By default, network is saved for future use but can be turned off if desired.
Using a Mac running macOS High Sierra, set up a network connection for both wired and wireless networks.
Review these articles prior to the practice.
*[http://support.apple.com/HT201974 HT201974 - Manage the Wi-Fi connection on your Mac]
*[http://support.apple.com/HT201735 HT201735 - How to connect to the Internet with your Mac]
iOS device - settings > wifi > select network. Ask to join - periodically scans for new wifi networks and prompted to join new wifi networks not previously joined that it discovers.
Set up wireless connectivity for an iOS device running iOS 11 or later. Review this article prior to exercise.
*[https://support.apple.com/en-us/HT202639 HT202639 - Connect to Wi-Fi on your iPhone, iPad, or iPod touch]
If possible, practice connecting to all three types of WiFi network described in the article
==='''Bluetooth'''===
- short range connections. Must be paired to device in order to communicate. System Preferences > Bluetooth. Keyboards, mice, etc. can also be set up in respective preference panes on macOS. Some devices require passcode or PIN in order to pair. Manually connect on macOS by right clicking on devices in bluetooth pane.
On a Mac, use the Bluetooth pane in System Preference to verify Bluetooth connected devices. Bluetooth wireless keyboards, mice, and trackpads are set up using the respective System Preference panes, rather than the Bluetooth System Preference pane.
*Bluetooth keyboards use the Keyboard pane.
*Bluetooth mice use the Mouse pane.
*Bluetooth trackpads use the Trackpad pane.
Pair and then unpair a Bluetooth device to a Mac running macOS High Sierra and a Bluetooth device running iOS 11 or later. Review these articles before you begin.
*[http://support.apple.com/HT201171 HT201171 - Using a Bluetooth mouse, keyboard, or trackpad with your Mac]
*[https://support.apple.com/en-us/HT204091 HT204091 - Pair a third-party Bluetooth accessory with your iPhone, iPad, or iPod touch]
==='''AirDrop'''===
- quick transfer of files between 2 apple devices using wifi. Do not have to be connected to same network because the devices automatically set up a direct wireless connection for AirDrop. Can also AirDrop from the share feature in applications.
Set up an AirDrop connection to transfer a file between a Mac running macOS High Sierra and an iOS device running the latest version of iOS. Review this article prior to exercise.
*[http://support.apple.com/HT203106 HT203106 - Use AirDrop to send content from your Mac]
==='''AirPlay'''===
- streams music, video and other content wirelessly from Mac/iOS to HDTV via Apple TV. AirPlay also allows to stream music to AirPlay enabled speakers, receivers, or Airport Express devices. AirPlay mirroring wirelessly mirrors screen of Mac or device to HDTV. AirPlay 2 (2018) adds ability to play music across multiple speakers and use Siri to control where it’s playing. Read Apple Support article [http://support.apple.com/HT201343 HT201343 - Use AirPlay to display video from your Mac on an HDTV].
Read Apple Support article, [http://support.apple.com/HT202809 HT202809 - How to AirPlay audio to wirelessly stream content from iTunes on your computer].
Best Practices
*While mirroring your Mac to a TV or projector, go to System Preferences > Displays. From here, you can adjust settings to provide the best possible Airplay Mirroring image.
*An HDTV will often apply picture quality enhancements intended to improve the look of film and video sources. In some cases, these enhancements can lead to over-sharpening artifacts when displaying the Mac desktop. Consult the HDTV's manual for guidance on the appropriate settings for use with a computer.
Support Reference
Read Apple Support article, [http://support.apple.com/HT202763 HT202763 - About overscan and underscan on your Mac, Apple TV, or other display].
Set up AirPlay between a Mac or iOS device and an Apple TV. Read Apple Support articles [http://support.apple.com/HT202809 HT202809 - How to AirPlay audio] and [https://support.apple.com/en-us/HT204289 HT204289 - AirPlay video from your iPhone, iPad, or iPod touch].
===Support References===
Use the following resources and the content of this course to answer the questions on the next page:
*[http://support.apple.com/HT201974 HT201974 - Manage the Wi-Fi connection on your Mac]
*[http://support.apple.com/HT201735 HT201735 - How to connect to the Internet with your Mac]
*[http://support.apple.com/HT201171 HT201171 - Using a Bluetooth mouse, keyboard, or trackpad with your Mac]
*[http://support.apple.com/HT203106 HT203106 - Use AirDrop to send content from your Mac]
*[http://support.apple.com/HT201343 HT201343 - Use AirPlay to display video from your Mac on an HDTV]
*[http://support.apple.com/HT202763 HT202763 - About overscan and underscan on your Mac, Apple TV, or other display]
*[http://support.apple.com/HT202809 HT202809 - How to AirPlay audio]
===Key Points===
*Network troubleshooting is a partnership between the customer, Apple, Internet Service Provider, IT department, and 3rd party hardware.
*Nodes are devices.
*Links are communication channels.
*Protocols are rules for devices using channels.
*IP addresses can be obtained manually or automatically.
*Bluetooth devices must be paired to Macs or iOS devices.
*Bluetooth Keyboard, Mouse, and Trackpad have corresponding System Preference panes.
*AirDrop enables the quick transfer of files between two Apple devices using Wi-Fi.
*AirPlay is a technology for streaming music, video, and other content wirelessly from Mac or iOS devices to an HDTV via Apple TV.
==iCloud Fundamentals==
[https://support.apple.com/icloud iCloud] is a free service from Apple. - gives customers access to their music, photos, contacts, calendars, and other materials across multiple devices. also provides options to back up or locate a missing device. To get the best experience, [http://support.apple.com/HT204230 it is recommended that iCloud users have up to date software].
To set up - if at www.icloud.com - customer must already have a valid Apple ID. Apple ID
To set up using an @icloud.com address, they must own a Mac, iOS device, or Apple TV. Can use setup assistant either in System Preferences or settings (iOS).
Possible support issues - common issues - sharing Apple ID or iCloud account with another family member or having multiple Apple IDs which causes confusion setting up iCloud. Using multiple IDs is confusing and may cause issues when accessing purchased content or using some services. IDs cannot be merged.
While not recommended, some customers may want to use one [https://support.apple.com/HT203983 Apple ID for iTunes Store, App Store, and iBook Store purchases and another Apple ID for iCloud.]
https://support.apple.com/en-us/HT204230
==='''iCloud Drive in iOS'''===
- settings - name of account - iCloud Drive - turn on - upgrade all devices in order to access files from anywhere, can decide which services to share on drive.
==='''iCloud Drive in macOS'''===
- system presences - get to know this section and how to purchase more iCloud Drive space.
==='''iCloud photos'''===
- get to know how to enable in macOS, With [http://support.apple.com/HT204264 iCloud Photos], all the photos and video in your customer's photo library are stored in iCloud, and can be accessed from a Mac, iOS device, and on iCloud.com.
Make sure to know how to share albums. You CAN organize your photos on iCloud.com.
[https://support.apple.com/HT207689 iCloud features]
[https://support.apple.com/HT204055 Archive data] on a computer before turning off features, or turn off iCloud completely. (Reviewed - sync features - mail, contacts, calendar, reminders, notes apps where changes are updated on each device -
==='''iCloud Keychain'''===
[https://support.apple.com/HT204085 iCloud Keychain] keeps Safari website usernames and passwords, credit card information, and Wi-Fi network information up to date across all approved devices. Watch the video to learn how to [https://support.apple.com/guide/mac-help/set-icloud-keychain-information-secure-mh43699 setup], [https://support.apple.com/HT203783 manage], and use iCloud Keychain on a Mac and iOS device. Choosing to use a random security code automatically uses complex security code options. '''Apple cannot recover a lost code.'''
Complex security code allows them to choose an alphanumeric code of their choice. Random is automatically complex and chosen.
==='''Find My iPhone'''===
[https://support.apple.com/explore/find-my-iphone-ipad-mac-watch Find My iPhone] helps customers [https://support.apple.com/guide/mac-help/mhd3cb35e1ed/10.14/mac/10.14 locate] and protect devices if they are ever lost or stolen. Watch this video to learn how to setup and use Find My iPhone on a Mac and iOS device.
Finds approximate location of iOS devices.
Find my iPhone needs Apple ID logged on and find my turned on, needs to be online, awake, and in range of a known wifi network. Travel to device with car icon, play sound if nearby even if in silent mode, lost mode will lock with passcode can display custom message on screen, attempts to suspend any cards stored in Apple pay. To turn off lost mode, enter passcode. Cannot be used to play sound if has been erased.
*Customers who have joined Family Sharing can use Find My iPhone to help find and protect their family members' iOS devices and Mac computers when [https://support.apple.com/HT201087 location sharing has been activated].
*If a customer gives away or sells their older Apple products, they can and should [https://support.apple.com/en-us/HT201351 remove them from their account] using Find My iPhone.
==='''Family Sharing'''===
[https://support.apple.com/HT201060 Family Sharing] enables up to six people in a family to [https://support.apple.com/HT201085 share purchases] from iTunes, iBooks, and the App Store without sharing accounts. Watch this video to learn how to [https://support.apple.com/HT201088 setup] and use Family Sharing on the Mac and iOS devices.
Apple ID is needed. Set up family sharing through iCloud menu.
===Key Points===
*Customers can pick and choose which iCloud services to use and can archive data before turning off features.
*If users keep all of your Apple devices signed in to iCloud you can then use Find My Phone to locate, erase, or lock them.
*Back to My Mac has strict network and router requirements.
*Family Sharing requires detailed setup and only shares supported content.
*Although not recommended, customers may use one Apple ID for iTunes Store, App Store, and Apple Books Store purchases and another Apple ID for iCloud.
==Basic Troubleshooting==
Systematic troubleshooting is a required skill which is used to isolate issues correctly. Technicians should use all the information present, rather than "template match" or jump to conclusions based on familiarity, past experience, or too little information.
===Systematic Troubleshooting===
Systematic troubleshooting uses deductive reasoning to correctly isolate an issue before coming to a conclusion. It examines what is possible and what is not possible. Troubleshooting Apple devices may require tests, a thorough examination, a history, and a skilled practitioner.
Template matching - Avoid! Don’t let previous experience with a repair lead you to the wrong conclusion. Always use systematic troubleshooting.
Deductive reasoning is at the core of troubleshooting. It is a logical thinking process that moves from general to specific. Deductive reasoning is based on premises. If the premises are true, then the reasoning is valid. The reasoning statement starts with the premise and often uses an if/then format.
IMPORTANT: The core of the troubleshooting and diagnostic process is the ability to narrow down the information given and draw logical conclusions. To diagnose an issue you need to understand the relevant facts of the circumstances then discard any distractors or irrelevancies. From the relevant facts you can deduce likely causes.
===Evaluate, Isolate, Resolve===
Apple's systematic troubleshooting supposes that all possible issues are based on one of four root causes: Hardware, Software, the device's Environment or Education Opportunity which denotes the customer's inexperience. The troubleshooting process involves three principal stages:
*Evaluate
*Isolate
*Resolve
First stage is evaluate the issue. Gather information about the issue. Consult with customer, Apple resources, and physically inspect device. Ask yourself what is the customer telling me. Listen to what customer is saying, ask relevant probing questions to determine what information relates to the issue and what does not, Have customer reproduce the issue and observe their actions. After gathering sufficient information from customer, observed how they are using their device then check issue against Apple resources. Ask yourself what does the device tell me? Perform a visual/mechanical inspection - necessary part of troubleshooting process. Check for physical obstruction, peripheral, or damage present causing the issue.
Isolate the problem to one of four problem spaces - Hardware, software, education opportunity, or environment. Start by asking yourself is device related or not device related. If device related, the issue will exist in the Hardware or Software problem spaces. If not device related, will exist in education opportunity or environmental problem spaces.
Hardware problem space includes issues related to hardware failures. Resolutions generally require repairing device with parts or replacing device.
Software problem space - directly related to software installed on a device. Simply restarting device resolves many issues. Issues may affect system software or only applications/files installed by the user. Resolutions may include toggling specific settings, resetting specific settings, updating software, reinstalling software. May possibly have to remove specific files, apps, or other data related to the issue.
Educational Opportunities are not actual issues but opportunity to educate the customer and reset expectations related to their device. Customer may think there is an issue, but really they are misinformed about what the device is capable of or may be performing a task incorrectly. Validates importance of having the customer reproduce the issue.
Environmental problems - can be difficult to isolate because they are hard to reproduce. Ex - dropping calls, unable to join a specific network, wireless interference.
Key Points - When you properly evaluate and isolate an issue, finding the right resolution for your customer is a simpler process. Remember to uncover as much information as possible during the evaluation phase. This will aid you during isolation.
Kinds of resolutions you can offer:
*Repair without using parts.
*Repair using parts
*Reinstalling or updating software
*Educating the customer
*Directing the customer to 3rd party resources.
When customers are mistaking, avoid blaming them or making them wrong. Ex - Don’t “You are wrong, iPad with Retina display can take photos” Right - “It turns out, iPad with Retina display can take photos.”
Use gentle corrective phrases - I can see how you would think that, in fact.... The reality is..... The way it works is.... What really happens.... As it turns out.... Let me show you another way to.....
==='''Key Points'''===
*Systematic troubleshooting is a skill required by techs used to isolate issues correctly using all of the info present.
*Systematic troubleshooting uses deductive reasoning to correctly isolate an issue before coming to a conclusion. Accurate troubleshooting relates directly to Apple’s service business success and to meeting its performance metrics
*Deductive reasoning is the logical thinking process, which moves from general to specific.
*The core of the troubleshooting and diagnostic process is the ability to narrow down the information given and draw logical conclusions.
*To diagnose an issue, you need to understand the relevant facts of the circumstances then discard any distractions or irrelevancies.
*The troubleshooting process involves three principal stages: Evaluation, Isolate, Resolve.
*Apple’s systematic troubleshooting supposes that all possible issues are based on one of four root causes: Hardware, software, environment, education opportunity.
==Continuity==
Continuity consists of several components with unique features. Use the following articles and the links they contain to answer quiz questions about these components.
*[https://support.apple.com/en-us/HT204681 HT204681 - Use Continuity to connect your Mac, iPhone, iPad, iPod touch, and Apple Watch]
*[https://support.apple.com/en-us/HT204689 HT204689 - System requirements for Continuity on Mac, iPhone, iPad, iPod touch, and Apple Watch]
==='''Handoff'''===
feature allows a user to start working in one device and then switch to a nearby device to continue that work.
*Needs to be signed into iCloud on each device
*Each device must have Bluetooth enabled.
*Each device must have Wifi turned on and be connected to the same network via WiFi or Ethernet.
===='''System Requirements'''====
Listed below are the hardware and software requirements to use Handoff.
{| class="wikitable"
|
*iPhone 5 or newer
*iPad Pro (all models)
*iPad (4th generation) or newer
*iPad Air or newer
*iPad mini or newer
*iPod touch (5th generation) or newer
*iOS 8 or later
|
*MacBook (Early 2015 or newer)
*MacBook Pro (2012 or newer)
*MacBook Air (2012 or newer)
*Mac mini (2012 or newer)
*iMac (2012 or newer)
*iMac Pro (all models)
*Mac Pro (Late 2013)
*Yosemite or later
|}
*[https://support.apple.com/en-us/HT204681 HT204681 - Use Continuity to connect your Mac, iPhone, iPad, iPod touch, and Apple Watch]
*[https://support.apple.com/en-us/HT204689 HT204689 - System requirements for Continuity on Mac, iPhone, iPad, iPod touch, and Apple Watch]
===How tos===
*On your Mac: Choose Apple () menu > System Preferences, then click General. Select "Allow Handoff between this Mac and your iCloud devices."
*On your iPhone, iPad, or iPod touch: Go to Settings > General > Handoff, then turn on Handoff.
*On your Apple Watch: In the Apple Watch app on your iPhone, tap General and turn on Enable Handoff.
From your iOS device, you have two options.
#If you are on the Lock screen, swipe up from the bottom-left edge of the screen, where you see the app's icon.
#You can double-click the Home button, then tap the app banner at the bottom of the multitasking screen.
Continuity allows the text messages sent on an iPhone to be sent and received on a Mac or other iOS device. Any Mac that can run Yosemite or later and any iOS device running iOS 8 or later can use this feature. Customers can set this up on the iPhone under Settings > Messages. Tap Text Message Forwarding to enable the device in the list of devices. The list is generated by signing into iCloud on all devices. Open Messages on the Mac or iPad. When the six-digit code appears, enter this code on the iPhone, and tap Allow.
Review [https://support.apple.com/en-us/HT207006 HT207006 - About iMessage and SMS/MMS].
With Continuity customers can answer cellular calls on their Mac or iOS devices. The devices must be using the same Apple ID, signed into iCloud and FaceTime, have Wi-Fi enabled, and be connected to the same network via Wi-Fi or Ethernet. Their devices must have these settings:
*On iPhone, go to Settings > Phone > Calls on Other Devices, then turn on Allow Calls on Other Devices.
*On iPad or iPod touch, go to Settings > FaceTime, then turn on Calls from iPhone.
*On Mac, open the FaceTime app, then choose FaceTime > Preferences. Click Settings, then select Calls From iPhone.
Trick question answer! You cannot begin a call on your iPhone and transfer to Mac via FaceTime.
Some carriers support Wi-Fi calling on other devices, which is different than Continuity and Cellular Calls. You can set up those devices to make and receive calls even when your iPhone isn't turned on or nearby.
Review [https://support.apple.com/en-us/HT203032 HT203032 - Make a call with Wi-Fi Calling] for more details.
If a customer's carrier offers cellular hotspot as a feature, and the customer is using iCloud, the customer's Mac can automatically join their iPhone or iPad's cellular connection as long as both devices are signed into iCloud using the same Apple ID. Advise customers to make sure Bluetooth and Wi-Fi are turned on. They can join their instant hotspots like any other wireless network. They should look for the name of the device with the data plan. They will know they are connected when the Wi-Fi logo looks like this:
A customer's device must have an activated carrier plan providing Personal Hotspot service.
If you would like more information about troubleshooting a Personal Hotspot issue please read the support article [https://support.apple.com/en-us/HT203302 HT203302 - If Personal Hotspot is not working on your iPhone or iPad (Wi-Fi + Cellular)].
With Universal Clipboard, you can [https://support.apple.com/guide/mac-help/copy-and-paste-across-devices-mchl70368996/10.13/mac/10.13.4 copy text, images, photos, and videos] on one Apple device and then paste the content on another Apple device.
Review [https://support.apple.com/en-us/HT206995 HT206995 - How to unlock your Mac with your Apple Watch] and answer the following questions.
If your customer has already set up Two-Step Verification and wants to switch to Two-Factor Authentication, visit the support article:
*[https://support.apple.com/en-us/HT207198 HT207198 - Switch from two-step verification to two-factor authentication]
To learn more and to set up Two- Factor Authentication, visit the support article:
*[https://support.apple.com/en-us/HT204915 HT204915 - Two-factor authentication for Apple ID]
===Key Points:===
*Continuity services require all devices be signed into iCloud with same Apple ID, have Bluetooth and WiFi running
*When troubleshooting continuity issues, ensure that the devices you are checking comply with hardware and OS requirements.
*Handoff requires setup of both the iOS device and the Mac.
*IMessage is encrypted but SMS/MMS is not.
*To answer cell calls on Mac or iOS device, the customer’s devices must be using the same Apple ID, signed into iCloud and FaceTime, have WiFi enabled and be connected to the same network via WiFi or Ethernet
*To use Instant Hotspot, a customer’s device must have an activated carrier plan providing personal hotspot use.
*To use Auto Unlock, the Apple Watch needs to be quite close to the Mac it is attempting to unlock.
==Apple Watch and watchOS==
[https://www.apple.com/watch/ Apple Watch] marries fitness tracking and health-oriented capabilities with integration with iOS and other Apple products and services.
===Customer interaction / Troubleshooting===
- Only works when worn. You need to enter the customer’s personal space in order to troubleshoot. Ask for permission to come close or try a troubleshooting step. Individuals personal space is typically 1.5 to 4 feet. Personal zone. Explain that you would like to partner with in order to resolve. Must stand next and observe them reproduce the issue in order to resolve. If worn on left wrist, stand next to them on the right. Ask to rest watch on counter. Be mindful of personal space. Show empathy if they feel uncomfortable.
Because you enter the customer's personal space, partnering with an Apple Watch wearer demands highly-polished customer engagement skills. Extra attention must be paid to clear communication and use of the right words, demonstrated respect, asking for permission, and setting expectations. For some operations, the customer is required to wear Apple Watch—the changes cannot be made when the watch is removed from the wrist. This means you will have to stand next to the customer and give him or her directions from the Personal Zone, usually reserved for friends. In addition to feeling that you are "too close", some people some people become nervous when they are observed in the "driver's seat," and others are displeased at having to do the work themselves, they prefer to hand over the Apple Watch and have you fix it. Your skill in setting expectations, describing the process before it begins, and acting professionally and respectfully can put them at ease as you give clear directions for troubleshooting and issue resolution.
{| class="wikitable"
|The customer relies on your technical troubleshooting expertise. You instill confidence in the customer by showing that you understand the capabilities and specifications of each Apple Watch model. This makes your troubleshooting less prone to avoidable mistakes and it helps the customer do more with their device. Many perceived customer support issues may not be an actual hardware or software matter at all. Instead, they might be an opportunity to educate the customer.
For example, Fall Detection is a new feature only available on Apple Watch Series 4 models. Customers might hear a friend talking about this new feature and wonder why they do not have this feature on his or her Apple Watch. Instead of performing an unnecessary hardware repair which will not resolve the issue, you can educate the customer.
You will learn more about Fall Detection in the watchOS 5 chapter in this course.
|}
Go to [https://support.apple.com/guide/watch/a-quick-look-at-apple-watch-apd8b5deac7b/watchos A Quick Look at Apple Watch], page in the [https://support.apple.com/guide/watch/welcome/watchos Apple Watch User Guide], to see the functional picture of Apple Watch. Starting at the first row, match the function to the number by dragging the items up or down in the right column to re-order them. Tap or click Submit.
===Features===
Take a few minutes and compare Apple Watch features and specifications using [https://www.apple.com/watch/compare www.apple.com/watch/compare].
Apple Watch Series 4 is available in 40mm and 44mm sizes whereas Apple Watch (1st gen), Series 1, 2, and 3 were available in 38mm and 42mm. Even though the watch sizes have changed in Series 4, watch bands are backwards and forwards compatible. For example, a 38mm (1st gen), Series 1, 2, or 3 band works with a 40mm Series 4 watch. Also, a 42mm 1st (gen), Series 1, 2, or 3 band works with a 44mm Series 4 watch.
If a customer cannot pair their Apple Watch Series 4 to an iPhone, be sure to explain both the hardware and software requirements to them.
*Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 4 (GPS) come with watchOS 5 installed and are not compatible with previous versions of watchOS.
*iPhone 6 or newer with iOS 12 installed is required to pair with Apple Watch Series 4 (GPS + Cellular). This is because the iPhone must include Voice-over-LTE (VoLTE) technology for cellular connectivity.
*iPhone 5s or newer with iOS 12 installed is required to pair with Apple Watch Series 4 (GPS).
Apple Watch Series 4 (GPS + Cellular) can be identified by a thin red line around the edge of the Digital Crown. The Digital Crown on Apple Watch Series 3 (GPS + Cellular) model is filled in red, not just around the edge.
Apple Watch Series 4 can now detect if you have taken a hard fall and alerts you with a prompt for user response. Apple Watch can initiate an SOS call to emergency services if you are immobile for about a minute. The Fall Detection feature requires Apple Watch Series 4. Customers with previous watch models might be looking for this feature and cannot find it because it is not compatible with their device. It is important to research which software features have a hardware requirement before setting incorrect expectations with the customer.
For Apple Watch Series 4 to call emergency services on its own, the following sequence of events needs to happen:
#You take a hard fall and receive a fall alert.
#There is little to no motion for about a minute after the alert.
#You ignore the “about to call emergency services” message, haptic, and SOS sounds that happen for 15 seconds.
*Educate customers that Apple Watch Series 4 cannot detect all falls. The more physically active you are, the more likely you are to trigger Fall Detection due to rapid motion that can appear to be a fall.
*Confirm the customer is using an iPhone running iOS 12.
*Confirm the customer has an Apple Watch Series 4 running watchOS 5.
*You can toggle Fall Detection from the Emergency SOS settings in the Watch app on your iPhone.
*Fall Detection is enabled by default for customers who set their age as 65+ during setup. If the customer is under 65 the feature will be off by default.
Refer to the following Apple Support articles for more information:
*[https://support.apple.com/HT208944 HT208944 - Use fall detection with Apple Watch Series 4]
*[https://support.apple.com/HT206983 HT206983 - Use Emergency SOS on your Apple Watch]
Apple Watch Series 4 includes exciting new hardware features, new watch bands, and accessories. Review the links below to learn more about these features.
*[https://support.apple.com/manuals/applewatch Apple Watch Series 4 User Guide]
*[https://support.apple.com/watch Apple Watch - Official Apple Support]
*[https://support.apple.com/HT204818 HT204818 - Change your Apple Watch band]
*[https://support.apple.com/HT204507 HT204507 - Identify your Apple Watch]
*[https://support.apple.com/HT204520 HT204520 - How to find the serial number or IMEI for your Apple Watch]
===WatchOS===
With watchOS 5, customers will get new features and functionality which allow them to do even more with their existing hardware. As a result, customers are going to have questions about what is new or what has changed. Certain software features might require a certain model of Apple Watch hardware. As such, your customer might be looking for a feature that does not exist on his or her device. This is an opportunity to educate your customer and avoid unnecessary software or hardware repairs. With each software release, there are numerous new features which can make it difficult for users to stay informed of what is new.
*http://www.apple.com/watchos/
*[https://help.apple.com/watch/ Apple Watch User Guide]
Read each feature presented
The gestures illustrated in the images below are needed to use Apple Watch and its apps. The Apple Watch display not only responds to touch-based gestures like tapping and swiping, but it also uses Force Touch technology to respond to the pressure of a finger.
Find My iPhone includes a feature called Activation Lock that is designed to prevent anyone else from using your Apple Watch if it is ever lost or stolen. Read [https://support.apple.com/en-us/HT205009 About Activation Lock] on your Apple Watch for more information, then follow the simulation below.
Walkie-Talkie is a new, easy way to have a one-on-one conversation with anyone who has a compatible Apple Watch. Whether you are at a concert or trying to find someone on a crowded beach, you are in touch with a tap. When you open the Walkie-Talkie app, you will see a list of people with an Apple Watch you often call, text, or FaceTime. Choose a contact and invite him or her to join you. Press to talk then let go to listen. Audio sent and received will be instant, and will play automatically.
*If you turn on Theater Mode or Do Not Disturb, it automatically makes you unavailable to talk with Walkie-Talkie.
*If you want any of your contacts to be able to reach you at any time, accept their invite and keep your availability turned on.
*The FaceTime app needs to be installed on the paired iPhone in order for the Walkie Talkie app to appear on the Apple Watch.
Refer to the following Apple Support article for more information:
*[https://support.apple.com/HT208917 HT208917 - Use Walkie-Talkie on your Apple Watch]
Podcasts are now available on Apple Watch, so you can stay connected to the stories, personalities, and news you love. The content will sync automatically so the next several episodes are ready to listen to. You can also use Siri to search for and stream any show available on Apple Podcasts. Synced podcasts on Apple Watch are available for playback offline. Settings to customize what is synced (including Notifications from the phone) are available inside of the Watch app > Podcasts.
*Apple Watch must be charging for Podcasts to sync from a paired iPhone to Apple Watch.
*A cloud icon indicates which Podcasts are not already downloaded.
*A progress icon on the Podcast artwork indicates when a download is in progress.
Support Reference
For more information refer to the Apple Watch User Guide.
{| class="wikitable"
|With Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular), you can make and receive calls, send and receive messages and get calendar and email updates over cellular even when your iPhone is away from your Apple Watch. These models will allow for cellular connectivity on LTE (3G and 4G in some locations). To cover the LTE and UMTS bands used around the world, there are three separate cellular models for Series 3, and two separate models for Series 4—each tailored to the locale where it is sold. There is no single model that supports roaming worldwide. For more information visit [https://www.apple.com/watch/cellular/ www.apple.com/watch/cellular/].
|}
In order for Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular) to place calls, you need to setup service with a supporting carrier.
One common issue customers have while setting up cellular service is that their account is an enterprise account and their carrier does not yet support enterprise accounts or requires contacting the carrier to complete setup.
Support Reference
For more information on the cellular capabilities of Apple Watch Series 3 (GPS + Cellular) and supported carriers by country, refer to:
*[http://apple.com/watch/cellular Apple Watch with cellular. Stay connected when you’re away from your phone.]
To set up and use cellular service on Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular), you must first update iOS and watchOS to the latest versions. Once both are up-to-date, check for updates to the carrier settings by navigating to Settings > General > About on the iPhone. If a carrier settings update is available, it will appear once you navigate to this menu. The iOS update has to be installed first because the carrier settings updates have a minimum iOS version number. It is important to [https://support.apple.com/HT201270 update to the latest carrier settings] since they determine if Apple Watch supports cellular service for each carrier. Without the latest software and carrier settings, the Apple Watch may not successfully pair with the customer’s iPhone. Without the latest carrier settings update, the button to "Set Up Cellular" will not work in the Watch app. The text below the button states, "Carrier does not currently support Apple Watch".
Issues with the customer's carrier or account might affect their service. Have the customer contact their carrier to:
*Verify that their account is active and in good standing
*Make sure there are no outages in their area
*Check that their device is not blocked from receiving cellular services and is set up with the right data plan and provisioning
If the customer still cannot connect to a cellular network, and they have confirmed with their carrier that there is not an issue with their account or network, the carrier should refer the customer back to Apple.
===Best Practices===
The troubleshooting performed for cellular connectivity on Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular) is similar to the troubleshooting for cellular connectivity on an iPhone. '''Toggle Settings'''
*If the plan is active and they are in an area of coverage, have the customer turn on Airplane Mode on the companion iPhone and verify that Bluetooth and Wi-Fi are actually turned off on the iPhone. Verify that AirPlane mode does not turn on for the Apple Watch.
*Wait 20 seconds to allow the user’s paired watch to join a cellular network.
===='''Restart'''====
*If the user still cannot establish a cellular connection, restart Apple Watch by pressing and holding the side button then slide to power off. Then press and hold the side button again to power on the device.
*If the issue persists, have the customer contact their wireless carrier.
===='''Update'''====
*First, check to make sure you have the latest iOS software installed.
*Next, tap Settings > General > About to check for an available carrier settings update. If an update is available, you will see an option to update your carrier settings.
Until cellular activation has occurred, Apple Watch will show “No SIM” and no ICCID will be available.
Support Reference
For more information on troubleshooting cellular connectivity on Apple Watch Series 3 (GPS + Cellular) or later, refer to [https://support.apple.com/HT207578 HT207578 - Set up cellular on your Apple Watch.]
Can Apple Watch with cellular use two different phone numbers?
You can add multiple cellular plans to your Apple Watch Series 3 and 4 (GPS + Cellular). However, your Apple Watch can only connect to one at a time. When you set up multiple cellular plans using Dual SIM on your iPhone XS, iPhone XS Max, or iPhone XR, you can add both plans to your Apple Watch, then choose which one your watch uses when it connects to cellular networks. For more information refer to [https://support.apple.com/en-us/HT209043 HT209043 - Use Dual SIM with Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular)].
===Troubleshooting===
Most Apple Watch troubleshooting involves the following steps:
#Reset Watch Settings/Unpair Apple Watch from iPhone.
#Ask probing questions to determine the actual issue. Although the customer perceives an issue, Apple Watch might be behaving as expected.
#Educate the customer about how to use Apple Watch and what to expect.
#Restart Apple Watch.
The Apple Watch and iPhone are designed to work in partnership. Some "Apple Watch" issues result from the customer's perception and are not Apple Watch issues at all. Rather, the issue might be with the iPhone, such as,
*Airplane mode
*Notifications
*Messages
*Weather app
*Music streaming
1. Update to the Latest Software
Before you begin
Update the iPhone to the latest version of iOS.
#Make sure that the Apple Watch is on its charger and is at least 50 percent charged.
#Connect the iPhone to Wi-Fi.
#Keep the iPhone next to the Apple Watch, so that they are in range.
Update the Apple Watch
#Keep the Apple Watch on its charger until the update completes.
#On the iPhone, open the Apple Watch app, then tap the My Watch tab. Tap General > Software Update.
#Download the update. If asked for an iPhone passcode or Apple Watch passcode, enter it.
#Wait for the progress wheel to appear on the Apple Watch. It could take from several minutes to an hour for the update to complete.
Leave the Apple Watch on its charger while the update completes. Do not restart the iPhone or Apple Watch, and do not quit the Apple Watch app. When the update completes, the Apple Watch will restart on its own.
2. Charge Apple Watch
If battery power is low, a red lightning symbol will appear on the screen of the Apple Watch. Be sure to handle the Apple Watch and accessories safely, and always take off the watch before charging it.
To charge the Apple Watch:
#Plug the Apple Magnetic Charging Cable, Apple Watch Magnetic Charging Case, or Apple Watch Magnetic Charging Dock into its USB power adapter.
#Plug the adapter into a power outlet or plug the charging cable into a USB port.
#Position the back of the Apple Watch on the charger. The charger's magnets align the Apple Watch, and a charging symbol will appear on the watch face.
#Allow Apple Watch time to charge. While the device is charging, a green lightning symbol appears on the screen of the Apple Watch.
3. Restart Apple Watch
Most perceived issues with Apple Watch can be resolved with a restart. A restart forces the device to close all open files and turns off all hardware components.
#Press and hold the side button until the Power Off slider is seen.
#Drag the slider to turn off the device.
#After the watch turns off, press and hold the side button again until the Apple logo is seen.
4. Force Restart Apple Watch
Do not force restart the Apple Watch when updating watchOS. After the Apple logo and progress wheel appears, leave the Apple Watch alone until the update finishes.
Force restart the device as a last resort and only if it is not responding.
To force restart the Apple Watch, press and hold both the side button and Digital Crown for at least 10 seconds, then release both buttons when the Apple logo appears.
5. Unpair Apple Watch/Pair with new iPhone
In some cases, it might be necessary to unpair the devices. Unpairing also erases the Apple Watch and restores it to the factory settings.
#Keep the Apple Watch and iPhone close together when unpairing them.
#Open the Apple Watch app on the iPhone.
#Go to the My Watch tab and tap the watch at the top of the screen.
#Tap the circled (i) icon next to the watch that is being unpaired.
#Tap Unpair Apple Watch
#For Apple Watch Series 3 (GPS + Cellular), choose to keep or remove the cellular plan.
#If the customer wants to pair the Apple Watch and iPhone again, keep the plan.
#If the customer does not want to pair the Apple Watch and iPhone again, remove the plan. If the customer is not going to pair with a different watch or iPhone, they might need to contact their carrier to cancel their cellular subscription.
#Tap again to confirm. The customer might need to enter their Apple ID password to disable Activation Lock. Before erasing all content and settings on the Apple Watch, the iPhone creates a new backup of the Apple Watch.
#The customer can use the backup to restore a new Apple Watch. After the Apple Watch unpairs, the Start Pairing message should appear.
To pair with a new iPhone:
#Turn on the Apple Watch.
#Put on the Apple Watch.
#Hold the iPhone over the animation.
#Set up as new or restore from a backup.
#Sign in with the Apple ID.
#Choose the settings.
#Create a passcode.
#Choose the settings.
For initial setup, refer to the Apple Watch Hardware chapter in this course.
6. Reset Apple Watch Settings
#Open the “Settings” app on the Apple Watch and go to “General”
#Scroll down and choose “Reset”
#Tap on “Erase All Content and Settings”
#Enter the passcode for the Apple Watch.
#
7. Change Watch Band
Change the band
#Hold down the band release button, then slide the band across to remove it.
#If the band does not slide out, press the band release button again and make sure that you hold it down.
#Make sure the text on the band is facing you, then slide the new band in until you feel and hear a click.
===Diagnostics===
these tools help gather information and isolate hardware or software issues. AST 2 for iOS devices has support for watchOS devices. You can engage your customers with the diagnostic to help educate and provide confidence in the resolution you are offering. In this section you will explore the available diagnostics for watchOS and how to interpret the results.
Diagnostics:
*Battery usage - analyzes power usage information to help identify the main causes of battery drain.
*Display color uniformity - Assists in identifying non-uniform color issues, requires watchOS 3.2 or later.
*Display image quality - assists in identifying distortion and flickering, requires watchOS 3.2 or later.
*Display Pixel anomalies - assists in identifying pixel anomalies and debris. WatchOS 3.2 or later.
*Quick test that provides a health check of hardware and software.
*Buttons - assists in identifying issues with buttons. Requires watchOS 2.0 or later.
*Apple Watch display tests require watchOS 3.2 or later. The iPhone paired with the Apple Watch must be running iOS 10.3 or later.
Diagnostics can also be started using the Apple Watch serial number.
Important - Do not mail in an Apple Watch to the depot if the battery diagnostics test indicates the battery performance is normal. The depot has the same diagnostic capabilities as Apple Retail stores and will likely return the device unrepaired if the Apple Watch passes the battery diagnostics. Instead of mailing in an Apple Watch, refer the customer to <nowiki>https://www.apple.com/batteries/maximizing-performance/</nowiki>.
All Apple Watch models include an embedded, lithium-ion, rechargeable battery. Avoid exposure to heat and open flame. Do not puncture, deform, crus, or incinerate as exposure to ingredients contained within or thei combustion products could be harmful. During a fire, the battery may emit irritating gases and aerosols may be herniated by thermal decomposition and combustion.
Swollen batteries - while a swollen battery is usually not a safety concern, advise the customer to stop using the device. If the customer mentions other safety keywords or if you are not sure if the battery has vented (ruptured), follow safety procedures.
{| class="wikitable"
|For many workouts, Apple Watch senses when you are moving and alerts you to start the Workout app. It even gives you credit for the exercise you have already done. It will also remind you to end your workout, in case you get distracted when you are cooling down. Not all workouts receive the start workout reminder. The start workout feature is designed to work with the following workouts:
*Indoor/Outdoor Run
*Indoor/Outdoor Walk
*Elliptical
*Rower
*Pool swim
*Open water swim
Workout End Reminders will display after Apple Watch detects that you are no longer working out. Workout end reminders work with all workout types.
|}
You can turn off workout reminders from the Settings in the Watch app.
Refer to the following Apple Support articles for more information:
*[https://support.apple.com/HT207934 HT207934 - About Workout Types]
*[https://support.apple.com/HT204517 HT204517 - Use the Activity app on your Apple Watch]
*[https://support.apple.com/HT207014 HT207014 - Share your Activity and compete with friends with your Apple Watch]
*[https://support.apple.com/HT204523 HT204523 - Work out with your Apple Watch]
*[https://support.apple.com/HT205406 HT205406 - Earn Activity awards using your Apple Watch]
When you get a message containing a website link, just tap it for a view that is optimized for your watch’s smaller screen. This will allow for emails that contain HTML to be previewed. Notifications from the same app are now smartly grouped together. So you scroll less and see more. This new user interface could confuse some customers who are expecting to see a notification for each individual item. This is an opportunity to educate customers that they can still view other notifications in the group by tapping the notification.
What are potential customer support issues?
*How do I browse the Internet on my Apple Watch?
*I am not seeing all of my notifications. Can you help?
*watchOS does not contain a full web browser like iOS or macOS.
*Notifications are grouped based on the app which sent the notification.
*Notification settings cannot be changed back to previous watchOS behavior.
For more information, refer to:
*[https://support.apple.com/manuals/applewatch Apple Watch User Guide]
*[https://support.apple.com/HT204791 HT204791 - Notifications on your Apple Watch]
The Do Not Disturb feature in watchOS 5 contains new settings. Now you can set it for a specific amount of time, or until you leave your current location. While the feature is very intuitive, it can still cause some confusion for customers who are not receiving calls, messages, or notifications. The good news is that you access Do Not Disturb the same way as you have before—by swiping up from the lock screen to Control Center. Tapping the moon icon will bring up the new additional options.
*On Apple Watch, navigate to Settings > Do Not Disturb to modify settings.
*Swipe up from the watch face to access Do Not Disturb options (moon icon).
*The "On until I leave" option uses geofencing location services.
*If the customer has Do Not Disturb turned on until they leave the location, and it does not turn off, they can open Maps to verify that GPS still works. If GPS is working and the watch is showing a location still, then it is most likely a one-time problem with Location services and a HW replacement will not help. If it happens consistently, you should escalate the issue to AppleCare.
===Support Reference===
Refer to the following Apple Support article for more information:
*[https://support.apple.com/HT205550 HT205550 - Status icons and symbols on Apple Watch]
*Because you enter the customer’s personal space when helping with an Apple Watch, you must pay close attention to using polished customer engagement skills.
*There are multiple models of Apple Watch use Apple Supports tech specification to aid with features and capabilities.
*You should be aware of available accessories for the Apple Watch and which come in the box with Apple Watch.
*You should be aware of key features of watchOS and how they are designed to function in order to help customers.
*Apple Watch troubleshooting steps should be followed from least invasive to most invasive.
==Apple TV and tvOS==
For complete technical specifications, refer to:
*[https://support.apple.com/en_US/specs/appletv Tech Specs for Apple TV]
Apple TV 4K - HDMI 2.0a - 4K video, especially HDR10 and Dolby Vision, requires an HDMI cable compatible with these formats. Gigabit Ethernet.
Apple TV HD - HDMI 1.4, 10/100BASE-T Ethernet, USB-C Port for service and support ONLY.
Remote features - Dual microphones for Siri, Touch Surface, Menu button, tv/home to see recently used apps double press or single press for Apple TV app or to go to home screen. Siri button. Volume up/down, play/pause.
For more information about the Siri Remote or Apple TV Remote, refer to:
*[https://support.apple.com/en-us/HT205305 HT205305 - Use your Siri Remote or Apple TV Remote with your Apple TV]
*[https://support.apple.com/en-us/ht205300 HT205300 - Use Siri on your Apple TV]
Apple TV (4K) is Dolby ATMOS-compatible.
This feature allows the user to be immersed in three-dimensional audio.
Details of this feature can be found in [http://support.apple.com/HT204069 HT204069 - Play audio in Dolby Atmos or surround sound on your Apple TV].
Sign in to your TV provider in Apple TV Settings. [https://support.apple.com/en-us/HT207035 After you sign in], any other [https://support.apple.com/en-us/HT208085 supported app] automatically signs you in so you do not need to enter your information again.
tvOS on Apple TV 4K takes full advantage of 4K and HDR to deliver an amazing experience that makes it easy to enjoy TV in the highest quality ever. [https://support.apple.com/en-us/HT208074 During setup] and whenever you connect a new 4K TV, tvOS on Apple TV 4K automatically detects its capabilities and helps you optimize your setup for the best possible picture so that you always get the most out of your TV.
If there is more than one Apple TV associated with the same iCloud account, customers can keep the same appearance and apps for each device. Learn more about One Home Screen in the support article, HT200126 - Move and hide apps on your Apple TV.
This feature allows you to listen to your favorite songs across every Apple TV, HomePod, and AirPlay 2-compatible speaker you have in your home. Or play something different in every room at the same time.
Information on system requirements for AirPlay 2 can be found in [https://support.apple.com/en-us/HT208728 HT208728 - AirPlay system requirements].
Please note that AirPlay 2 requires tvOS 11.4 or later.
iOS 12 allows you to sign in using Autofill passwords to apps on your Apple TV.
{| class="wikitable"
|If your customer's Apple TV has a device issue, rule out software issues first before considering a hardware replacement. When troubleshooting software, attempt the quick fixes in the order listed, from least to most invasive.
#Update to the latest software
#Force an app to close
#Restart
#Reset (4th generation) or Reset All Settings (3rd generation or earlier)
#Restore
Note that these steps may not be effective for all issues. Apply only the steps necessary to isolate and resolve the user’s issue.
|}
Force quit an app by - Double press the home button to see preview screens of the apps recently used.
Then swipe up on the touch surface of remote to move the app’s preview screen up and out of preview.
[https://support.apple.com/en-us/HT201836 Restart an Apple TV] if it is having issues. You can restart from Settings, use the remote, or unplug it from power.
*'''Use Settings''': go to Settings > System > Restart
*'''Use the remote''': Hold down the Home and Menu buttons. Let go when the light on the device flashes.
*'''Unplug Apple TV''': If the Settings menu and the remote do not restart the Apple TV, unplug it from power. Wait six seconds, then plug it back in.
Tip - resetting all settings - if Apple TV reboots three times, a recovery model screen will provide the option to reset all settings.
If less invasive steps do not resolve the issue, you can [https://support.apple.com/en-us/HT202118 restore the customer's Apple TV].
*'''Restore from Settings''': Go to Settings > System > Reset and select Restore.
*'''Restore using iTunes''': Connect the Apple TV HD to a computer with a USB-C to USB-A cable. In iTunes, select Restore Apple TV.
Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV HD.
Important
Restore will delete all user data and settings on the Apple TV, including apps downloaded from the App Store.
If a customer is unable to use a particular Apple TV feature, a basic step is to [https://support.apple.com/en-us/HT200008 verify that their Apple TV model] supports that feature.
Review each scenario below. Identify the cause of the issue. Click on the scenario to reveal the answer.
Customer states that their Apple TV HD refuses to output 4K HDR video to their Ultra High Definition 4K TV.
Apple TV HD does not support 4K video output. Customer will need an Apple TV 4K to output 4K video to their 4K TV.
Customer wants to restore their Apple TV 4K by using a USB cable to connect to iTunes on a Mac.
Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV (4th generation).
Customer is unable to connect their Apple TV 4K to their A/V receiver using an optical digital audio cable.
An optical digital audio port is not included on Apple TV 4K. Advise customer to connect using HDMI instead.
Learn what to do if your [https://support.apple.com/en-us/HT200197 Apple TV won't turn on], or [https://support.apple.com/en-us/HT204400 won't connect to a network]. Learn how to [https://support.apple.com/en-us/HT208074 set up your Apple TV 4K] for the best 4K, HDR, or Dolby Vision experience. Learn how to [https://support.apple.com/en-us/HT203777 troubleshoot the Apple TV remote].
Run AST 2 - MRI Health Check to assist in isolating hardware issues. MRI Health Check is a quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality on Apple TV 4K and Apple TV HD models. To run MRI Health Check, enroll the Apple TV serial number in the Diagnostic Console, then on the Apple TV go to Settings > General > About > Start Diagnostics with Apple.
HDMI Cable Check
4K video, especially HDR10 and Dolby Vision, requires an HDMI cable compatible with these formats.
Detailed information about this can be found in [https://support.apple.com/en-us/HT208074 HT208074 - About 4K, HDR, and Dolby Vision on your Apple TV 4K].
<br />
*Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV HD.
*If an Apple TV running the latest tvOS reboots three times, a Recovery Mode screen will provide the option to Reset All Settings.
*If an Apple TV is having issues, attempt less invasive software fixes first, before considering a whole-unit hardware replacement.
*4K video, especially HDR 10 and Dolby Vision, requires a compatible HDMI cable. Apple recommends HDMI cables that have the Compatible Dolby Vision mark. An example is the Belkin Ultra High Speed HDMI Cable.
*AST 2 - MRI Health Check tests the following Apple TV components: Bluetooth, Wi-Fi, Sensors and the internal cooling fan on Apple TV 4K.
==HomeKit==
Uses apple devices to control and automate home.
===Can be used to:===
*Turn off the lights using an iphone
*From an ipad, see who is knocking on the door
*Control accessories remotely with the help of Apple TV
*Organize accessories by room
*Manage multiple accessories at the same time
*Use Siri to control accessories
*Add and manage speakers
===the following is required to use Home app:===
*An iphone, ipad, or iPod touch running the latest version of iOS
*One or more HomeKit-enabled accessories
*An Apple ID to sign into iCloud on your device
*iCloud Keychain turned on in the iCloud settings
*location services turned on with Home set to “While Using”
<nowiki>*</nowiki>Customers must have an active iCloud account using iCloud Keychain to share Home details with other iOS and Apple TV devices. If the iOS device is the only iCloud-connected device, customers will not be prompted to turn on iCloud Keychain. Remind customers to retain the 8 digit HomeKit setup code from the HomeKit accessory packaging.
Look for “Works with Apple HomeKit” on packaging.
*http://www.apple.com/ios/home/
*[https://support.apple.com/en-us/HT204893 HT204893 - Set up and use the Home app]
*[https://www.apple.com/ios/home/accessories/ HomeKit accessories]
*[https://support.apple.com/HT204893 HT204893 - Set up and use the Home app]
*[https://support.apple.com/en-us/HT207057 HT207057 - Set up your HomePod, Apple TV, or iPad as a home hub]
*[https://support.apple.com/en-us/HT208724 HT208724 - Add and manage speakers in the Home app]
After accessories have been setup and added to the Home app, customers can control them with Siri commands and questions, such as:
*"Turn off the lights in the family room."
*"Set the temperature to 68 degrees."
*"Did I lock the front door?"
*"Good night!"
*"Play music in the living room"
Hold the home button on iOS device and speak the command. if "Hey Siri" is enabled, say, "Hey Siri", followed by the command. When the action is performed, Siri will confirm that it is complete with a message.
Some accessories cannot be controlled by Siri commands if the device is locked. If a customer asks Siri to unlock a door, they must unlock their device first.
*Partner with your customer when evaluating a Home app related issue.
*Use your resources to troubleshoot Home app and HomeKit related issues.
*Set proper expectations with customers regarding scope of support for HomeKit.
<br />
==Apple Pay & Wallet==
Apple Pay and associated features may not be available in all regions. To check for availability, review the support article, [https://support.apple.com/HT207957 HT207957 - Countries and regions that support Apple Pay].
3 main features:
Device Account number - Apple creates unique device account number to encrypt and protect actual account numbers. Never stored on Apple servers.
Secure Element - safely stores the the number on a chip inside the device. It is isolated from the OS.
NFC - allows wireless communication to occur between 2 controllers - 1.5” distance is required.
To use Apple Pay in supported regions customers must have the following:
*[https://support.apple.com/kb/KM207105 An eligible device]
*[http://support.apple.com/HT204916 A supported card from a participating bank or card issuer]
*The latest version of [https://support.apple.com/kb/HT204204 iOS], [https://support.apple.com/kb/HT204641 watchOS], or [https://support.apple.com/kb/HT201541 macOS]
*An Apple ID [https://support.apple.com/kb/HT204053 signed in to iCloud]
Support References
*[https://support.apple.com/HT204506 Set up Apple Pay on your iPhone, iPad, Apple Watch, or Mac]
*[https://support.apple.com/HT203027 Apple Pay security and privacy overview]
In certain countries and regions, customers can also [https://support.apple.com/HT204003 add rewards cards to Wallet and use them with Apple Pay]. For more information check out the [https://support.apple.com/HT205630 Get help adding cards to Apple Pay] page. In Japan, customers can [https://support.apple.com/en-us/HT207153 transfer their Suica cards to Apple Pay] on their iPhone or Apple Watch.
[https://support.apple.com/HT208965 Use student ID cards in Wallet] on iPhone or Apple Watch
Students, at participating colleges and universities, can add their student ID cards to Wallet, and use their iPhone or Apple Watch to access places like dorm rooms, libraries, and campus events. The card in Wallet can also be used to pay for laundry, snacks, and dinners around campus.
On Mac models without built in Touch ID you can complete purchase using Apple Pay on your eligible iPhone or Apple Watch. On your iphone, go to settings > Wallet & Apple Pay and turn on Allow Payments on Mac.
Person to person payments with Apple Pay and Apple Cash are not available on macOS.
Pay with Touch ID capable iPhone - rest a finger on Touch ID and hold iPhone within a few centimeters of the contactless reader until Done appears with check mark on the display.
Pay with Apple Watch - double click the side button and hold the display of Apple Watch within a few centimeters of the contactless reader. The customer will feel a gentle tap.
Pay with Face ID - Double click side button then glance at display to authenticate Face ID.
*To pay with a different card instead of the default card:
**IPhone X - Double click the side button. When default card appears, tap it, then tap to choose another card. Glance at iphone to authenticate and then hold top of device near reader.
**IPhone 8 or earlier - hold device near the reader without resting finger on Touch ID. When default card appears, tap it, then tap to choose another card. Rest finger on Touch ID to pay.
**Apple Watch - double-lick the side button. When default card appears, swipe left or right to choose another card. Hold watch near reader to pay.
{| class="wikitable"
|Devices running the latest version of iOS and watchOS can use Apple Pay to [https://support.apple.com/HT201239 pay within apps] without having to enter card information, shipping and billing addresses, or contact information. If the app supports Apple Pay, the app will present a "Buy with Apple Pay" option at checkout. The way apps present the option might differ. Be sure to [https://support.apple.com/HT208087 look for Apple Pay as a payment option], or the Apple Pay button. Tap on the Apple Pay button during checkout and follow the prompts to verify information. Place finger on Touch ID to complete the transaction, double-click the side button and glance at the display to authenticate Face ID on iPhone X, or double-click the side button of your Apple Watch.
|}
Starting with iOS 10, watchOS 3, and macOS Sierra, some websites support [https://support.apple.com/HT201239 Apple Pay purchases within Safari]. When a customer visits a site that supports Apple Pay in Safari, a corresponding button appears at checkout. When Apple Pay is selected, a window will appear asking the customer to verify purchase details and confirm the payment. When completing a purchase in Safari, the customer will be asked to confirm payment. The confirmation works differently depending on the device:
*Safari on iOS will use Touch ID or Face ID to confirm purchases.
*Safari on macOS directs customers to confirm from either an Apple Watch or iPhone that is nearby, has Apple Pay set up, and is signed into the same iCloud account.
*Touch Bar enabled portables can be used by authenticating with a saved fingerprint when checking out via Apple Pay on supported websites.
Apple Pay transactions involve financial institutions, merchants, terminals, and vendors. It is important to determine the proper scop of support for incoming questions. You can answer questions related to setting up Apple Pay, how it works in Wallet on eligible devices, and basic troubleshooting of configuration.
A contactless payment reader can be used to test functionality of Apple Pay hardware in Apple Watch or iPhone and later. When completed at Apple with steps in GSX, it does not affect cards or bank accounts connected to Apple Pay.
Customers should be directed to their respective financial instruction if they have questions about:
*Declined payments
*Making credit card payments
*Disputing chargers or payments
*Cancelling a card
*Reporting a lost or stolen card
*Requesting a replacement ATM/Debit card.
If a customer has an issue related to their Apple Cash card that is outside your scope, assist them with setting up a call through the Contact Apple Support page. Guide the customer through the questions on the page, but allow them to enter their own info. They will be able to set up a convenient time to get the assistance they need. If a customer is leaving their device for service, have them follow the steps in this [http://support.apple.com/HT207883 support article] to turn off Apple Cash on the device being serviced.
Customers with a student ID card in Wallet should remove it before proceeding with service to ensure their data is protected. Partner with customers who have a student ID card in Wallet on their iPhone or Apple Watch to remove it before proceeding with service. Your customer can always reprovision their student ID card from the eAccounts app, and add it to Wallet just like they did when they first set it up.
How to remove student ID card from devices that do not turn on-
*Have customer go to their Apple ID account page, sign in, and click their device. In the information that appears, go to the Apple Pay section and click Remove All. The customer’s cards will be removed from Apple Pay even if the device is offline and not connected to a cellular or WiFi network. The customer can use the eAccounts app - free on the App Store - or contact their school card office to remove their student ID card.
Refer to the following articles to learn more:
*[https://support.apple.com/HT205583 HT205583 - Manage the cards that you use with Apple Pay]
*[https://support.apple.com/HT208965 HT208965 - Use student ID cards in Wallet on your iPhone or Apple Watch]
Key Points -
*Apple Pay may not be available in all regions.
*Each device uses a separate Secure Element meaning that setup must be completely separately.
*If you disable wrist detection, remove your passcode or sign out of iCloud, all credit and debit cards will be removed from that device.
*Before accepting a device for service, partner with the customer to ensure any student ID cards have been removed to ensure their data remains secure and protected.
*Scop of support includes questions related to setting up Apple Pay, how it works in Wallet app, and basic troubleshooting of configuration.
<br />
=='''Diagnostics fundamentals.'''==
Which diagnostics should you use-
*Triage - For Apple technicians, triage refers to the act of quickly and efficiently evaluating the device’s symptoms. Triage requires you to reproduce the device issue, determine the extent of the device issue, determine the cause of the device issue, determine if the issue is caused by software, hardware, environment, or user action which requires education.
*Extended testing - some device symptoms are not easily triaged within limited time at the service counter. For example, intermittent issues or those that reproduce after an extended period of operation require check in the device for extended testing. Apple provides diagnostic tools to assist with this.
*Post-repair Verification - to verify that the device issue has been completely resolved, and that no new issues arose during the repair, Apple provides diagnostic tools to run after repair is completed.
AST 2 and AST 1 badges
*Green = OK. Expected module, component or subsystem was expected, found and successfully communicated with the diagnostic.
*Yellow = caution. Further investigation is required. For example, a device running non-current version of iOS will flag with a yellow badge in the software module of mobile resource inspector. A yellow bad does not mean that the module failed testing - another good example is 3rd party RAM installed in MRI.
*Red = check failed. The expected module, component, or subsystem was not found. The module could be malfunctioning, missing, or could have a loose cable connection that requires reseating.
Presence check vs. functional test -
===='''Presence check'''====
- many diagnostic tools and suites are capable only of detecting if a module is present and has power. Does not tell if functional. Examples of these are MRI (Mac Resource Inspector, Apple Diagnostics, Apple Hardware TEst.
==='''Functional test'''===
- a diagnostic test that goes beyond presence testing to determine if a module is functioning as expected. In general, functional testing requires that the kernel extension (driver) software for that module be loaded. Apple examples - Storage, cooling system diagnostic, graphics and display, full system diagnostic (OS), Apple Service Diagnostic (OS).
AST info:
*AST 2 can test iPhones running iOS 8.1 or later. Displays a blue bar when is online and ready for testing.
*AST 2 can test Macs from mid-2014 onward. The orange bar indicates that this device is restarting to an OS-based diagnostic.
*AST 2 can test iPad 2 or later. The gray striped bar indicates that the device is no longer connected to the diagnostic console.
*Tap the “i” to the right of each test suite for a more detailed description of that suite’s function, including suggested uses.
*AST 2 provides a brief description of the function of each test suite.
*AST 2 provides an estimate of how long it will take for that suite to run.
==='''Types of Apple Diagnostics:'''===
IOS and Mac Diagnostic - Apple Service Toolkit 2(AST 2)
Mac Diagnostics - Apple Service Toolkit 1 (AST 1), Apple Service Diagnostic (ASD)
Customer Mac Diagnostic - Apple Diagnostics, Apple Hardware Test (AHT)
===='''AST 2'''====
is a cloud-based diagnostic system to help technicians triage and verify repairs for iOS devices (8.1 and later), Apple TV HD and later (tvOS 9 and later), Apple Watch, HomePod, and Mac computers (mid 2014 and later. Start an AST 2 diagnostic session by inputting the device serial number into the serial number field and entering a customer-reported symptom, in the Diagnostic Console. Then follow onscreen instructions to start the diagnostic session on the customer’s supported iOS or Mac device.
===='''AST 1'''====
is a suite of diagnostic tools that checks older intel based Mac hardware components and provides detailed diagnostic logs for review. AST 1 runs on a local server managing multiple Ethernet clients via NetBoot. AST 1 is required to run diagnostics on a MacBook Pro mid 2014 and older intel-based Macs.
===='''Apple Service Diagnostic'''====
is a diagnostic utility that performs comprehensive testing of all major hardware components in a Mac computer, including logic board, memory, graphics functionality, and sensors. Due to the length of time required to run, ASD is suggested for extended troubleshooting, as well as comprehensive post-repair verification. There are 2 versions of ASD: ASD in AST and standalone ASD. ASD is not appropriate to use in front of the customer due to length and complexity. ASD is only support on early 2014 or older Macs.
===='''Apple Diagnostics'''====
is a simple hardware diagnostic utility, built in to Macs introduced June 2013 and later. Customers can use Apple Diagnostics to help determine which hardware component might be causing an issue. It also suggests solutions and provides a reference code which customers can provide to technicians for assistance. It is accessed by turning off the Mac, then turning it on while pressing and holding D on the keyboard.
===='''Apple Hardware Test (AHT)'''====
is the customer-facing utility that shipped with Mac computers introduced prior to June 2013. As of June 2013, Apple Diagnostics replaced Apple Hardware Test for new computers. Customers can use AHT to help determine which hardware component might be causing the issue. If it finds an error, AHT shows an error code which customers can provide to technicians for assistance. It is accessed by turning off the Mac, then turning it on while pressing and holding D on the keyboard.
Diagnostics should be run before and after performing a modular repair, before restoring the customer’s device, and before selling AppleCare+ where available. As a best practice, run iOS diagnostics whenever you are able to. If you cannot run diagnostics, update case notes with reason why diag could not be run.
#Run diagnostics on all iOS devices before repair or before selling Apple Care+
#If running 10.3 or later - use Diagnostics Mode to run the recommended AST 2 diagnostic after a same unit repair.
#If running 8.1 or later - Run AST 2 for iOS - MRI
#If running earlier than 8.1 but can be updated, ask permission to update the iOS to latest version then run AST 2 for iOS - MRI.
===='''AST2 for iOS -'''====
*If running 10.3 or later - go to settings > privacy > analytics and tap start diagnostics with Apple Support.
*If running 10.2.1 or earlier, go to settings > Privacy > Diagnostics & Usage and tap start diagnostics with apple support.
*Obtain users permission to proceed with the diagnostic. Explain that Apple may collect diagnostic data from this device, but that no personal information is collected. If the user agrees, he or she can tap agree to proceed.
*Device selection scree will be displayed. You must tap the plus sign next to each device to run diagnostics.
*Select a suite name to begin diagnostic test.
===='''MRI'''====
- Mobile resource inspector - quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality. Suggested uses: during initial triage of all devices, before and after any modular repairs, after restoring a phone, and before selling AppleCare+.
===='''Battery Usage'''====
- detailed analysis of daily usage that provides an in-depth look at battery condition, charging data, and energy impact of individual apps. Suggest use for devices exhibiting charging or battery issues. This diagnostic requires six or more hours of device use before it can provide results. Review the following articles to learn about battery cycle count, full charge capacity and maximizing battery performance, including what happens when batteries chemically age.
*Batteries
*iPhone Battery and Performance
===='''Audio Suite'''====
'''Audio''' - Plays a set of chordal tones through the internal speaker and listens for those same tones via built-in microphones. Suggested use: distorted or no audio from internal speaker, sound issues from one of more of the built in microphones.
<br />
===='''Display Suites'''====
'''Display Backlight & Color''' - Displays a series of colors and patterns that assist in identifying non-uniform color or backlight issues. Suggested use: individual or sections of non-uniform color, dim or uneven brightness or backlight, light bleed.
'''Display Image Quality''' - Displays a series of colors and patterns that assist in identifying distortion and flickering. Suggested use: distorted image or flickering on the display.
'''Display Pixel Anomalies''' - Assist in identification of areas of the display panel that have responding or non-responding touch pixels. Suggested use: Multi-touch slow to respond, isolated areas are not responding, erratic response to touch.
<br />
===='''Buttons and Switches Suites'''====
'''Home Button, Sleep/Wake Button, Side Button (iPhone 8, 8 Plus and later), Volume Button, Ring/Silent Switch''' - all of these suites assist in identifying issues with the respective button or switch. Suggested use: for devices exhibiting issues with buttons or switches
===='''Unexpected Touch'''====
'''Unexpected Touch''' - Assists in the identification of unexpected touch events. Suggested use: false touch.
===='''Hardware Device Interface (HDI)'''====
'''HDI Integrated Current Checker''' - Assists in troubleshooting devices that will not turn on. Requires an Integrated Current Checker (ICC) Tool connected to a Hardware Diagnostic Interface (HDI) host Mac. Suggested use: determines if a device will turn on after charging.
'''HDI Serial Number Reader''' - Used to determine the serial number of a device that will not turn on. Requires Serial Number Reader (SNR) tool connected to a Hardware Diagnostics Interface (HDI) host Mac. Suggested us: for devices that will not turn on and a serial number is needed.
<br />
===='''Full Device Diagnostic'''====
'''Full Device Diagnostic''' - All-in-one diagnostic suite that assists in identifying hardware and software issues by running a series of automated and interactive tests. Suggested use: during initial triage of devices that require multiple diagnostics. Requires iOS 9.0 or later.
===='''Rear Camera Calibration'''====
'''Rear Camera Calibration''' (on supported models) - Performs calibration of the rear camera(s). Requires iOS 11.2 or later. Suggested use: inability to switch to the telephoto camera for optical zoom beyond 2x in bright light conditions, after rear camera repair.
===='''Face ID'''====
'''Face ID''' - Performs a check on the sensors for Face ID. Suggested use: for devices exhibiting issues with Face ID.
===='''Post-Display Repair'''====
'''Post-Display Repair''' - Assists in identifying hardware issues by running a series of automated and interactive tests. Requires iOS 10.3 or later. Suggested use: determine the functional state of a device after display repair.
Refer to Diagnostics Mode for more information.
<br />
===='''Camera Image Quality'''====
'''Camera Image Quality''' - Assists in identifying camera image quality issues with the front or rear cameras. Requires iOS 10.3 or later. Suggested use: for evaluating camera image quality after repair.
Triage - refers to the act of quickly and efficiently evaluating the device’s symptoms. Requires you to:
*reproduce the device issue
*Determine the extent of the device issue
*Determine the cause of the device issue
*Determine if the issue is caused by software, hardware, environment, or educational opp.
==='''MRI icons/meanings'''===
MRI is a quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality.
'''Storage'''
Verifies presence and functionality of internal Apple storage devices.
Verifies storage device by performing surface and multi-block scans. Suggested use: startup issues, slow performance.
'''Display Anomalies'''
Assists in identification of pixel anomalies in LCD panels. Displays a series of colors and patterns that assist identification of pixel anomalies and debris. Suggested use: individual or single-line pixel anomalies; distinguishing between pixel anomalies and debris. This is not used for graphics anomalies or no-video issues.
'''Image Persistence'''
Displays a series of patterns to attempt to reproduce image persistence issues on LCDs. Verifies that the device’s display panel does not retain images after a set of checkered patterns has been displayed for 3 minutes. Suggested use: screen burn-in, lines, patterns being retained on the display panel.
'''Keyboard'''
Interactive test that prompts the user to verify that each key on the keyboard responds correctly when pressed, and that the keyboard backlight is visible. Suggested use: unresponsive or stuck keys, dim or uneven keyboard backlight.
'''Trackpad'''
Interactive test that prompts the user to verify that all areas of the trackpad respond to touch, and that the trackpad clicks appropriately when pressed. Suggested use: erratic or unexpected cursor movement, poor feedback when clicking.
'''Power Adapter'''
Checks that the power adapter connected to the computer is healthy, of sufficient wattage, and that the battery is charging properly. This suite must be run over a Wi-Fi connection to check all available ports. Suggested use: not charging, unexpected charging behavior, unexpected power off.
'''Touch Bar Pixel Anomalies'''
Displays a series of colors and patterns on the Touch Bar that assists in the identification of pixel anomalies and debris. Suggested use: individual or single-line pixel anomalies; distinguishing between pixel anomalies and debris.
'''Touch ID & Touch Bar'''
Performs a series of automated and interactive tests to verify the presence of the Touch Bar and functionality of the Touch ID sensor. Note: the computer may restart multiple times during testing.
'''Touch Bar Response'''
Interactive test that prompts the user to verify that all areas of the Touch Bar respond to touch. Suggested use: touch is slow to respond, isolated areas are not responding, erratic response to touch.
Always ensure that repaired devices are fully functional, with no issues, before you return them to the customer.
Run diagnostic tools for post-repair verification when repair is complete, after reassembly:
*For iOS devices run the recommended AST 2 diagnostic based on the same unit repair that was performed.
*For newer Macs that are supported by AST 2, run the appropriate post-repair verification suite of diagnostic tests in AST 2 (full system diagnostic is a great choice)
*For older Macs that are only supported by AST 1 run ASD in AST 1 (or standalone ASD).
Run diagnostics tools for post-repair verification at Customer Pick up:
*For iOS devices run AST 2 - MRI for the customer to demonstrate that the device is functional for them.
*For Mac run AST 1/AST 2 - MRI for the customer to demonstrate the repair’s success.
*Avoid running repair verification systems such as Full System Diagnostic or ASD in front of customer as they have long run times.
===='''Full System Diagnostic'''====
- in AST 2 performs comprehensive testing of hardware functionality. There are 2 versions: EFT (Extensible Firmware Interface) and the OS version. Full System Diagnostic (EFI) performs comprehensive testing of hardware functionality and memory module integrity on supported Macs. It is an extended diagnostic tool that performs a compressive check on all hardware, including memory, logic board and sensors. It does not load an operating system or any hardware kernel extensions (drivers). Full System Diagnostic (OS) is an extended diagnostic tool that performs a comprehensive check on all hardware, including the cooling system, storage devices, and graphics hardware, within a known-good OS. Since it loads the kernel extensions for a supported Mac’s hardware components, it is ideal for comprehensive functional testing. Suggested use - hard to reproduce issues, post repair testing. Full System Diagnostic is compatible on Mac desktop and portables from mid 2014 21.5” onward.
===='''Apple Service Diagnostic'''====
Just like Full System Diagnopstic, ASD comes in 2 versions - EFI and OS. ASD (EFI) will perform comprehensive testing of a Mac’s memory modules, as well as presence testing for most other hardware components. ASD (OS) loads known-good macOS, including hardware kernel extensions, to perform functional testing of hardware componenents such as the cooling system, storage devices, and graphics hardware. ASD is part of the available tests in AST 1 - supports models from early 2009 to late 2013.
====='''Should I run EFI or OS version?'''=====
Suggested use for EFI - hardware component presence check, comprehensive testing of memory and storage. OS - goes beyond presence of component and checks component functionality. Suggested for functional testing of most hardware components. Certain components cannot be fully tested with OS is loaded such as memory and storage. When in doubt, err on the side of more post-repair verification than not enough post-repair verification.
===='''Mac Models that use AST2'''====
*M2014 or later 21.5” iMac
*L2014 and later 27” iMac 5K
*L2014 and later Mac mini
*2017 iMac Pro
*E2015 and later MacBook Pro 13”
*M2015 and later MacBook Pro 15”
*E2013 MacBook Air and later -11” and 13”
*E2015 and later MacBook Retina 12”
===='''Extended Testing'''====
Some device symptoms are not easily triaged within limited time at the service counter. Ex. Intermittent issues.
Full System Diagnostic in AST 2 and ASD in AST 1 are ideal tools for extended testing since these are able to thoroughly test all major hardware components and their ability to operate under load for extended periods of time. Other tests are:
===='''Cooling System Diagnostic'''====
In both AST 2 and AST 1 - tests fans, sensors, and thermal efficiency while simulating heavy usage - ideal for extended with heat related issues such as runs hot, excessive fans captivity, unexpected sleep or shutdown, slow performance.
===='''Memory Test'''====
The extended Memory Test in AST 2 tests each memory location using multiple read/write algorithms. Suggest for use if experiencing kernel panics, no video, startup issues, unresponsive system, or issues with integrated graphics.
===='''Graphics and Display'''====
Graphics and Display test suite in AST 2 verifies communication with display and test graphics performance with performing 2D and 3D rendering. Suggested for distorted video, intermittent or no video.
==='''Key Points'''===
Some diagnostic suites in AST 2 and AST 1 are used for specialized purposes, not for general troubleshooting. The repair procedure in the Service Guide will tell you when a specialized diagnostic suite needs to be run. This is another important reason why you should always follow the service guide when performing modular repairs.
'''Blank Board Serializer'''
After replacing a Mac Logic board, always run AST. When you start up AST 2 or AST 1 on a system that has no serial number on its logic board, Blank Board Serializer will open up automatically. Please note that you cannot call up Blank Board Serializer for a system with a serial number already present on the logic board. Setting the serial number is permanent. Double check that the serial number is correct. Enter the serial number of the Mac into Blank Board Serializer not the serial number of the logic board.
===='''Trackpad Calibration Check'''====
On Mac notebooks with Force Touch trackpads, you must run the Trackpad Calibration Check after every repair or whenever the computer has been reassembled. To run this check, you will need the model-specific weight replacement rubber template and the 200g and 800g weights. Check the service guide of the Mac notebook under test for more info. Run the Trackpad suite after a top case with keyboard has been replaced or if the user is having issues related to trackpad functionality.
===='''Top Case to Logic Board Configuration'''====
Run this suite after replacing either the logic board or the top case on a Mac with Touch Bar. The suite configures the logic board and verifies calibration of top case components.
===='''Trackpad Keyboard Mapper'''====
Run the Trackpad Keyboard Mapper whenever the Service Guide tells you to do so. Keyboard mapping data is stored on a chip on the trackpad in certain Mac notebooks. Keyboard language, layout, and function keys are contained in this mapping data. Keyboard mapping data must be programmed into the trackpad whenever the trackpad is replaced. If this is not done, only very basic, generic keyboard functionality may be available, the keyboard may not operate correctly, or the keyboard backlight function keys may not control the keyboard backlight brightness.
Compatibility for AST 2:
*E2015 MacBook Air 11” and 13”
*E 2015 MacBook Pro Retina 13”
*Mid 2015 MacBook Pro Retina 15”
*2017 MacBook Air 13”
Compatibility in AST 1:
-MacBook Air 11” M2013 and E2014
-MacBook Air 13” M2013 and E2014
==='''Key Points'''===
#Running diagnostics consistently leads to more accurate and efficient identification of issues and higher customer satisfaction.
#Interpret diagnostic results correctly, use your resources, and do not jump to conclusions. A yellow badge result does not necessarily indicate something wrong with the device - re-run the test to be sure.
#Diagnostics that run in EFI (firmware) are fast, but not as thorough. They are useful for quick triage and checking presence of hardware components.
#Diagnostics that load an OS are comprehensive but take more time. They are useful for extended functional testing and for comprehensive post-repair verification.
#When in doubt, always err on the side of more post-repair verification than not enough post-repair verification.
#AST 2 is a cloud-based, unified interface for running diagnostics on both iOS devices and Macs.
#AST 2 teaches you how and when to best use it. The best way to find out more about what a diagnostic suite does, and suggested uses for that suite, is to tap the “i” to the right of the name for more info.
==Intro to Mac Hardware 2019==
General system requirements for macOS:
*OS X 10.8 or later
*2GB memory
*12.5GB available storage
Mojave Compatible:
*Early 2015 or newer MacBook
*Mid 2012 or newer MacBook Pro
*Mid 2012 or newer MacBook Air
*Later 2012 or newer Mac mini
*Late 2012 or newer iMac
*Mid 2010/2012 (with ended Metal-capable GPU), Late 2013 Mac Pro
*iMac Pro (2017)
[https://www.apple.com/macos www.apple.com/macos]
https://support.apple.com/en-us/HT204689#autounlock
==='''Find Serial number using macOS'''===
*Search How do I find the Serial Number in Finder Help (newer Macs)
*About This Mac
*On the enclosure of some models (bottom foot iMac, bottom enclosure of Mac mini, bottom of Mac Pro (trashcan).
Use Check Coverage [https://checkcoverage.apple.com checkcoverage.apple.com]
Although a Mac may be compatible with Mojave, it may not be able to take advantage of all of the new features available in the OS.
===Key Points:===
*You must know the system requirements for macOS to avoid issues with software and hardware upgrades.
*A Mac may be able to run macOS but not meet system requirements for certain features (eg. Metal 2)
*The best way to identify a Mac model is by looking up the serial number.
*Serial numbers are on various physical locations on a Mac, but can always be found in About this Mac.
==='''macOS setup and Maintenance'''===
Set up a drive:
*Partition and format before a new drive can be used. Can create multiple volumes
*Fomatting creates the file system on the volume.
*Disk utility is the tool used to configure storage drives (in utilities)
*Boot Camp needs to be done in Boot Camp Assistant
*Use internet recovery or another external bootable drive in order to erase internal drive.
*USB flash drives are unable to be partitioned in disk utility
*Erase by selecting drive in sidebar and click on erase and select format (default is Mac OS extended or APFS if in High Sierra or newer macOS)
*Secure erase - fastest option is chosen by default but does not securely erase data. Choose security options when erasing.
*Multiple partitions - partitioning is non-destructive and designed to maintain data, but have backup just in case. APFS drives give option to add a volume than create a partition. APFS allocates disk space on demand but you can select specific sizes while creating. If not APFS, choose partitions and sizes. Format appropriately and specify the size then click apply.
For more information, review the following Apple Support articles:
*[http://support.apple.com/HT204904 HT204904 - How to reinstall macOS from macOS Recovery]
*[https://support.apple.com/HT208033 HT208496 - How to erase a disk for Mac]
*[https://support.apple.com/HT202574 HT202574 - About Fusion Drive, a storage option for some Mac computers]
*[https://support.apple.com/HT202574 HT201065 - What to do before you sell, give away, or trade in your Mac]
If you or a customer attempts to install macOS on an unsupported system, the customer may think something is wrong with their machine. You may believe there is a hardware issue when really it is software incompatibility.
==='''Support References'''===
For more information on requirements for installing macOS, review:
*[http://support.apple.com/HT201475 HT201475 - How to upgrade to macOS Mojave]
*[https://support.apple.com/kb/SP777 SP777 - macOS Mojave - Technical Specifications]
*http://www.apple.com/macos
Running 10.8 or later can upgrade to Mojave through the app store.
==='''Support References'''===
For more information on upgrading to the latest OS, including system requirements, visit http://www.apple.com/macos/how-to-upgrade/. Some incompatible software is automatically disabled when you upgrade.
macOS recovery - command + R
Internet recovery - command + option + R
The latests version of macOS is factory installed on new Macs. They will be guided through the Setup Assistant after powering on.
Mac is designed to work with compatible versions and builds of the OS. If attempting to use a version or build that is not compatible you may see one or more of the following:
*Mac does not start up, or shows prohibitory (🚫) at startup.
*You see a message that you are using an unsupported/incorrect version
*Mac does not respond to trackpad, mouse, or keyboard.
*Apps unexpectedly quit
*Mac does not sleep or wake
*Do not hear sound from Mac
*Fans operate at faster/louder speed.
*Image on display appears to shrink or has black bars around it, or appears tinted.
*You cannot use bluetooth or wifi.
See [http://support.apple.com/HT201686 HT201686 - Use the Mac operating system that came with your Mac, or a compatible newer version] and [http://support.apple.com/HT204156 HT204156 - About the screens you see when your Mac starts up] for more information.
===Migration Assistant:===
Transfers customers accounts, documents and settings from another computer to new Mac. Accessible in setup assistant or through utilities as standalone app.
===='''Support References'''====
Review the following Apple Support articles:
*[http://support.apple.com/HT204350 HT204350 - Move your content to a new Mac]
*[http://support.apple.com/HT204087 HT204087 - Move your data from a Windows PC to a Mac]
[https://support.apple.com/HT205749 HT205749 - Set up your new Mac.]
==='''Key Points:'''===
*To use a disk as a startup disk for mac, use the GUID partition scheme and macOS Extended (journaled) (hard disk drive) or APFS (flash based storage) volume formats.
*The disk utility in Recovery can be used to erase the disk and reinstall OS.
*macOS has system requirements including supported Macs, memory required, and storage space needed. Some macOS features have additional system requirements.
*macOS is factory installed on new Macs and can be reinstalled if needed using recovery.
*An Apple ID and password is required when upgrading macOS in the App Store.
*Migration Assistant can help move data from old Mac or PC or Time Machine backup to new Mac.
*Setup Assistant launches automatically on a new Mac and helps user connect to networks, transfer data, enable location services, and login to iCloud.
==macOS User Accounts==
*Apple menu > System Preferences > Users and groups > unlock > add user (cannot change user folder name later)
===Account Types===
*Administrator - all control, can be multiple
*Standard - Set up by admin - can install apps and change settings, but cannot add/change users - can be upgraded to admin later
*Managed with parental controls
*Sharing only users - access files only but cannot change settings/users
*Group - grants multiple users the same access privileges.
*Guest user - deletes everything upon log out. Cannot change settings or users.
===Deleting user===
Admins only, remove from users/groups in system preferences. You can save the home folder (as disk image), don’t change the home folder, or delete the home folder entirely.
===Managing Passwords===
*Not recommended to leave user password blank
*Use Password Assistant to generate memorable, letters/numbers, numbers only, random or FIPS 181 compliant.
===Autofill in Safari===
*Safari suggested passwords -
*Use key with down arrow to have safari generate a password
*The password will be saved in Keychain for future use on specific website
===Keychain Access===
*Stores passwords securely
*Can view and manage login and other usernames/passwords
*Encrypted container that securely secures
===Changing/resetting a user account password===
*Can change the password used to log in to Mac - users/groups preferences - login keychain password is also updated with this method
*Change password in case it is forgotten - recovery or any other administrator on Mac. - creates new default keychain for passwords.
===Key Points===
*When the login password changes, the user needs to create a new keychain with Keychain Access.
*Autofill can be used to help generate secure passwords for online accounts.
*Password Assistant can help generate a secure password
*If a user forgets their password, an Administrator account can be used to reset the user’s password
*Different accounts vary in features and abilities, it is important to ask probing questions when helping customers set up accounts.
==macOS Security==
System Preferences has security and privacy
Only certain options can be changed without admin password
Unlock the lock to make changes
*check advanced in options
==='''Gatekeeper'''===
- security feature in macOS that helps to keep applications from having an adverse effect on Mac.
<br />
==='''FileVault 2'''===
Encrypts information on the Mac. Filevault 2 encodes data on the startup disk so that unauthorized users, apps, utilities cannot access info. Provides the following benefits/considerations:
*Full disk, XTS-AES 128 encryption
*Fast and unobtrusive initial encryption
*Requires recovery HD on startup drive
*Not supported in RAID configs.
https://support.apple.com/en-us/HT204837
<br />
==='''Firewall'''===
https://support.apple.com/guide/mac-help/a-firewall-prevent-unwanted-connections-mac-mh34041/10.14/mac/10.14
Included in macOS and is used to control connections on a per-application basis rather than per-port basis. Ensures network ports are open only for legitimate apps. Similar to blocking channels on a TV. Provides these benefits/considerations:
*Block all incoming connections
*Block or allow specific applications
*Automatically allow signed software to receive incoming connections
*Enable stealth mode
==='''Location Services'''===
https://support.apple.com/guide/mac-help/manage-apps-detect-mac-location-mh35873/10.14/mac/10.14
Controls which apps are allowed to use Macs location. The approximate location is determined using info from local wifi networks and collected by location services in a manner that does not personally identify the user.
==='''EFI Firmware Password'''===
https://support.apple.com/en-us/HT204455
Additional layer of protection for your Mac and prevent it from starting up from anything other than startup disk. Provides these benefits/considerations:
*Typical restart/shutdown/power on to default startup disk is unaffected
*Startup manager (option at startup) present a lock screen for password entry
*Boot from recovery (command + R) presents a lock screen for password entry
*Disables all other startup boot modifiers
==='''Key Points'''===
*Most security settings are accessed in System Preferences Security & Privacy preference pane.
*Gatekeeper helps protect from apps that could adversely affect it
*FileVault 2 allows users to encrypt their entire startup disk
*If user forgets both password and recovery key for FileVault, they will not be able to login/access data.
*OS includes application firewall that can control an apps access to the network.
=='''macOS File System'''==
Default startup volume name is called Macintosh HD.
To access startup volume/root level - select Finder > Go > Computer > Macintosh HD.
===Applications folder===
===Library folder===
- contains important support files used by macOS and certain applications, supports all local users, only admins can make symptoms.
===System Folder===
- default location for resources required by OS. Rare that anyone would need to change anything in here.
===User folders===
- also includes shared folder
===Home Folder===
- Subfolders are included here - desktop, documents, downloads, movies, music, pictures and public specific to each individual user. Additional User Library is not visible.
===User Library===
- contains files used by macOS and apps, personal fonts/preferences. Hidden so nothing is accidentally deleted. Can be seen by holding option button when clicking on “Go” in Finder menu.
===Library Folders===
*System library folder - core system functionality - necessary frameworks for core apps like finder are stored here for example. There are many hidden options here but default can only see library.
*Root level library folder - system wide resources not required by the OS. Only admins can change this library. (/Library)
*User Library - separate user resources such as keychain, only accessible to that specific user and not other users on Mac. Can help determine user specific issues. (~/Library)
'''https://support.apple.com/guide/mac-help/folders-that-come-with-your-mac-mchlp1143/10.13/mac/10.13.2'''
Never move or change the name of installed folders and applications. Example: If customer changes the name of their user library folder (~/Library) the OS will automatically create a new Library folder for that user. Preference and account settings for macOS and apps will change back to default settings. If this happens, drag the new ~/Library folder to the trash and rename the old folder using its original directory name “Libary.”
~/Applications is not a default user folder. It is created when a user installs a user-specific application.
===Reason for so many libraries:===
Due to 3 different libraries containing resources on a Mac, there might be multiple copies of similar resources available to the system and user at any given time. macOS is designed to handle this by searching for resources from the most specific (user library), then to less specific (root library), and then on to least specific (system library). Segregating resources into multiple libraries provides increased administrative flexibility, resource security, and system reliability. Resource domains are more flexible because admins can choose to allocate certain resources to all users or just specific users. It’s more secure because a standard user can add resources to only their own home folder.
https://support.apple.com/guide/mac-help/go-directly-to-a-specific-folder-mchlp1236/10.13/mac/10.13.2
==='''Storage'''===
- Actual drive hardware. Two most common - hard disk drives or flash memory (form of solid state drives). Other forms can include SD cards, USB Flash drives, network-attached hard drives.
==='''Fusion Drive'''===
- combines high-capacity hard drive with high-performance flash storage. Manages data automatically and intelligently, keeping frequently used apps/documents/photos/other files on flash storage and infrequently used items on hard drive. It is an option in select Mac models. https://support.apple.com/en-us/HT202574 (Can see with Target Disk model only if other Mac is using 10.8.2 or later (Mountain Lion)
==='''Partitioning'''===
- process of dividing drive space into sections. https://support.apple.com/guide/disk-utility/partition-a-physical-disk-dskutl14027/16.0/mac/10.13.2. Each volume works as separate drive and assigned a partition scheme.
*GUID - Globally Unique Identifier - default partition scheme used by Intel-based Macs. Only partition scheme that allows intel-based Macs to start up.
*APM - Apple Partition Map - This is the default for PowerPC-based Macs. Intel-based Macs can also access this type of partitioning for tasks such as data transfers.
*MBR - Master Boot Record - default partition scheme used by most non-Mac computers. Although Macs cannot start up from this type, Macs can access this type.
==='''Formatting'''===
- act of creating a file system on a volume. Necessary to enable the OS to store and retrieve data on the volume.
*APFS - Apple File System - default file system for Macs with SSDs. It can also be used with older systems with traditional HDDs or external direct-attached storage but must run High Sierra or newer. APFS can be formatted to be encrypted and/or case-sensitive.
*Mac OS Extended (Journaled) - default for Macs without SSDs. Variation of Mac Extended format which adds advanced file system journaling. Journaling helps preserve volume structure integrity. macOS Extended (Journaled) - can be encrypted and/or case sensitive.
*MS-DOS (FAT) - Used for disk that will be used with a Windows computer. Volume is 32GB in size or less. Partition name must be eleven characters or fewer.
*Ex-FAT - Used for Windows - No size limitations, name must be 11 characters or fewer.
==='''Key Points:'''===
*Storage refers to actual drive hardware, Macs typically come with SSD or HDD.
*Partitioning - process of dividing drive space into section
*macOS has standard folder structure at the root level of the hard drive - need to be familiar in order to troubleshoot
*Library folders contain support files (fonts, plug-ins, preferences used by the OS and apps).
*User’s home library folder is hidden - option + “Go” to view
==macOS Permissions==
Permissions are settings which determine who can view and alter files on the computer. You [https://support.apple.com/guide/mac-help/change-permissions-for-files-folders-or-disks-mchlp1203/10.14/mac/10.14 change some permissions settings] in macOS at the bottom of the Info window for a file, folder, or disk in the Finder and for network shared items in System Preferences > Sharing.
==='''2 Types of Permissions Supported in macOS'''===
#Portable Operating System Interface (POSIX) permissions let you control access to files and folders based on three categories of users: Owner, Group, and Others.
#Access Control Lists (ACLs) provide an extended set of permissions for a file or folder, allowing multiple users and groups as owners. ACLs are compatible with multiple platforms including Windows.
Owner - The user who created a file or folder. Almost all files and folders in your home folder will have your username listed as the owner. If you are the currently active user in macOS and you copy a file from another volume to your desktop then you are the “owner” of that file. MacOS appends (Me) to help the user identify files they own.
Group - A group is a collection of user accounts that has its own separate set of permissions. Specifying permissions for a group allows you to assign permissions to an entire set of user accounts. The default group for all users in macOS is “staff.”
Others (everyone) - Others includes any user account that is not the owner or part of a group assigned to a file or folder. This class of permissions simply applies to everyone else.
If a user is included in more than one category of users, each of which has different permissions, the following rules apply:
*Owner permissions override group permissions.
*Group permissions override others permissions.
==='''Priveledges'''===
#Read & Write - You can open a document or folder and change its contents if you have the read/write permission for it.
#Read only - You can open a document or folder if you have the read permission for it. A user can open and view the contents of a file. For example the /System folder - is a read-only folder for most user accounts to prevent tampering with macOS.
#Write Only - You can make changes to a folder if you have the write permission for it but you cannot open the folder. This means you can put items in the folder, but you can not see which items are in that folder. This makes it a “Drop Box.”
#No Access - You cannot read or write to the file or folder.
===Execute Permission===
Execute (- - x) You can open an application if you have the execute permission for it. This permission is generally for applications and cannot be modified without using developer tools like Terminal.
Do not change permissions on an item unless an Apple Support article tells you to. Within macOS, all files and folders have a specific set of permissions associated with their read/write/execute status. The permissions cannot generally be seen by a customer, and routinely are protected by macOS.
==='''How to assign permissions to users and groups'''===
Administrator can assign/limit access for alternate users on the computer.
#In the Finder, select a disk, folder, or file and then choose File > Get Info
#Locate the Sharing & Permissions and click the triangle to view options.
#Click the lock icon in the lower-right to authenticate with an admin username and password.
#Select a user or group from the Name volume and then choose one of the following from the pop up menu in the priveledge column:
##Read & Write - can view AND change
##Read Only - Can view but not change anything
##Write only - creates a drop box where user can add to but cannot view/change what is in the folder
##No Access - blocks all access
In macOS only read & write and Read only are displayed for individual files. Folders add options of Write Only and No Access.
==='''How do you apply permissions to all items in a folder or a disk?'''===
#In finder, select a folder or disk and then choose file > Get Info.
#Locate Sharing & Permissions and click the triangle to view options.
#Click the lock icon to authenticate with admin username/password.
#If the user’s name is not listed in the Name column, click add (+) to add the correct user.
#Select the correct pop-up item from the Priveledge menu and then choose “Apply to enclosed items” from the action pop-up (the icon looks like a gear)
#Any changes can be undone as long as the window is still open and apply to enclosed items has not been performed. To revert, choose revert changes from action pop up menu.
Important!
Do not select “Apply to enclosed items” when setting permissions to a user’s home folder. This can lead to adverse effects, such as:
*Being unable to change preferences
*Being unable to remove or save files
*Sudden iPhoto and iTunes issues
*Preview and TextEdit suddenly quitting upon launch.
You may use this feature to change the permissions of a folder contained within the home folder.
==='''Is there an easy way to change an item’s owner?'''===
Select a folder or disk, then choose File > Get Info. Click the lock icon to authenticate with an admin username and password. Find the Sharing & Permissions pane. If the new owner’s name is not listed in the Name column, click add to add the new owner. Select the name of the new owner, then choose “Make that user the owner” from the Action pop-up menu at the bottom.
==='''What are symptoms of permissions issues?'''===
*Unusual application behavior such as 3rd party app appears in the dock as a question mark or is unable to connect to the internet, the installer may have incorrectly set permissions on the files and folders it installed.
*macOS stops responding - the file system and permissions might become corrupted by power interruptions or improper shutdowns.
*Software can only access the current user’s files
*Unable to empty the trash - if folders where do not have write permission end up in the trash, user will be unable to delete these folders or files enclosed.
==='''System Wide Permissions Issues'''===
Issues across multiple users. To verify, check to see if the suspected permissions issues are present in a test user or guest account.
Beginning with OS X El Capitan system file permissions are automatically protected. It’s no longer necessary to verify or repair permissions with Disk Utility.
For operating systems before El Capitan, system-level issues can be resolved by using Disk Utility to repair permissions. To repair, follow these steps in [http://support.apple.com/HT201560 HT201560 - Repair disk permissions with Disk Utility]
==='''User Specific Permissions Issues'''===
User specific permissions issues are those that are seen in only one user. To verify, check to see if the suspected permissions issues are present in a test user. Examples of issues:
*changes that you make in system preferences aren’t saved after you quit system preferences.
*Changes that you make to the dock aren’t saved after you log out of your user account.
*You’re asked for an admin name and password when moving certain items in the home folder
*When saving changes to an item, you get a message that the file is locked or you cant save.
*Preview, TextEdit, or other sandboxed apps unexpectedly quit when opened.
*ITunes says that your device cannot be synced.
*Imported photos and videos don’t appear within the app, but do appear in Finder.
The above symptoms indicate that the home folder contents have had their permissions modified. To resolve user specific issues in macOS, terminal is required. When working with Terminal, make sure the customer's data has been successfully backed up before following these steps in Apple Support article, [http://support.apple.com/HT203538 HT203538 - Resolve issues caused by changes the permissions of items in your home folder].
===File or Folder Specific Issues===
Only seen in one or a few files and folders within a specific user.
To verify, check to see if the suspected permissions issues are present in other files/folders within that specific user. If the issue is only apparent with some files and folders, this is most likely caused by modified permissions to some files and folders within a specific user.
If you [https://support.apple.com/guide/mac-help/permission-open-a-file-folder-mac-mchlp1038/10.14/mac/10.14 do not have permission to open or save a file or folder], you might be able to change the permissions settings
==='''Key Points'''===
*You can view and modify permissions using the Finder’s Get Info window.
*macOS uses two kinds of permissions - POSIX and ACLs - on every file and folder on your storage.
*Changes to a folder’s permissions can be applied to enclosed items in the folder.
*Read & Write, Read Only, Write Only, and No Access permissions are available privileges in the Finder.
*Prior to OS X El Cap, the disk utility could be used to repair system-level permissions issues.
*MacOS after El Cap - system level file permissions are automatically protected and the Disk Utility no longer includes the ability to verify or repair permissions.
==Time Machine==
to learn [https://support.apple.com/HT201250 how Time Machine backs up Mac], including system files, apps, music, photos, emails, and documents.
Built in back up system in Mac.
to learn how Time Machine can be used to restore data, depending on customer needs.
to learn about Local Snapshots.
*[http://support.apple.com/HT201250 HT201250 - How to use Time Machine to back up or restore your Mac]
*[https://support.apple.com/guide/mac-help/recover-your-entire-system-mh15638/10.13/mac/10.13.4 Recover your entire system]
*[http://support.apple.com/HT204015 HT204015 - About Time Machine local snapshots]
to learn about the process of [https://support.apple.com/guide/mac-help/exclude-items-from-a-time-machine-backup-mh15622/10.13/mac/10.13.4 excluding items] from backup.
*[https://support.apple.com/HT204078 HT204078 - How to move Time Machine backups from one AirPort Time Capsule to another]
*[https://support.apple.com/HT202380 HT202380 - Time Machine: How to transfer backups from a current backup drive to a new backup drive]
*[https://support.apple.com/guide/mac-help/delete-an-item-from-your-backup-disk-mh26863/10.13/mac/10.13.4 Delete an item from your backup disk]
==='''Key Points'''===
*Without a backup, information can be difficult and expensive to recover or entirely lost.
*Time Machine is a seamless solution to making a scheduled and comprehensive backup of your Mac.
*Time Machine allows restoring a single file, multiple files, or even your entire startup disk, depending on your needs.
*If you run out of space it is possible to move Time Machine backups to another drive or Airport Time Capsule.
*Time Machine options include excluding and removing items from a backup to save space.
==Power Management==
==='''Power States'''===
*Wake
*Sleep
*Power Nap
*Safe sleep
*Standby
Understanding power states helps you explain to customers how to [https://support.apple.com/guide/mac-help/save-energy-on-your-mac-mh35848/10.13 save energy on their Mac]. It can also help you evaluate and isolate power issues on a Mac.
==='''Wake'''===
Wake is the state a Mac occupies when it is on and in use.
==='''Sleep'''===
When Mac is not in use, save energy by [https://support.apple.com/guide/mac-help/put-your-mac-to-sleep-mh10330/10.13 putting it to sleep]. When a Mac is in sleep, it is on but consumes less power. It takes a Mac less time to wake from sleep than it does to start up after being turned off.
Macs manufactured in 2013 or later enter standby after being in sleep mode for three hours. Some earlier models enter standby after just over an hour of sleep. Put your computer to sleep by choosing Sleep from the Apple () menu. These and other states allow the Mac to [https://support.apple.com/HT202824 conserve energy].
'''Support References'''
[https://support.apple.com/guide/mac-help/if-your-mac-wont-go-to-or-stay-in-sleep-mchlp2995/10.13 If the Mac will not go to or stay in sleep], the customer can change the [https://support.apple.com/HT202824 Energy Saver preferences] in System Preferences. For those Mac models with a [https://support.apple.com/HT203576 sleep indicator light,] the light pulsates on and off slowly. If the battery on a Mac portable is completely depleted and the computer goes into Safe Sleep, the light does not illuminate at all.
===='''How to troubleshoot a Mac with no sleep indicator light'''====
*connect a USB device that has a power-on or activity LED. As power is restored to the USB and the system wakes from sleep, the LED lights up.
*Press Caps key multiple times to see if the embedded LED light turns on.
*Open display and press and alphanumeric key to wake the computer from sleep.
*A computer that has been asleep for an extended period can consume the remaining charge of the battery. Restore power to the computer with known-good power adapter and check that the MagSafe indicator light shows an in progress battery charge. The computer will boot from a hibernation file and start from where it left off.
==='''Power Nap'''===
[https://support.apple.com/guide/mac-help/what-is-power-nap-mh40773/10.13/mac/10.13.2 Power Nap] is a special sleep mode that allows a Mac to automatically wake to perform certain tasks, then go back to sleep again when it is finished.
Read Apple Support article, [https://support.apple.com/HT204032 HT204032 - How Power Nap works on your Mac], for more information on Power Nap, including supported Mac models.
==='''Safe sleep'''===
[https://support.apple.com/guide/mac-help/what-is-safe-sleep-mh10328/10.13/mac/10.13.2 Safe Sleep] prevents information from being lost if the Mac is completely shut down during sleep, which could occur if the battery runs down or is replaced. [https://support.apple.com/HT201635 If a progress bar appears when the Mac wakes] from sleep, this means the Mac was in Safe Sleep.
==='''SMC'''===
The SMC, or [https://support.apple.com/HT201295 System Management Controller], is responsible for many of the low-level functions on a Mac.
Resetting SMC instantly shuts down the computer, with some side effects:
If the computer is in safe sleep or standby mode, it will reboot from a hibernation file.
If the SMC reset is performed while a Mac is in “Wake” state, any unsaved data can be lost.
If the computer is already shut down, there will be no side effects.
Given these side effects, complete the steps outlined in the Before you reset the SMC section of [https://support.apple.com/HT201295 HT201295 - How to reset the System Management Controller (SMC) on your Mac]. Also ensure that the latest [https://support.apple.com/HT202040 firmware updates] have been installed.
==='''Power Adapters'''===
Portable Mac computers are charged using AC power adapters. Use the [https://support.apple.com/HT201700 appropriate wattage power adapter] for the Apple portable. A compatible higher wattage adapter can be used without issues, but it will not make the computer charge faster or operate differently. Lower wattage adapters will not provide enough power and might cause [https://support.apple.com/HT203207 power-related symptoms].
Battery life is the amount of time your device runs before it needs to be recharged. Battery lifespan is the amount of time your battery lasts until it needs to be replaced. To [https://www.apple.com/batteries/maximizing-performance/ maximize battery life] between charges, a customer can perform the following actions. [https://support.apple.com/en-us/HT204054 More about battery life for portables].
====Adjust Energy Saver Preferences====
The Energy Saver preference pane includes several settings that determine power levels for your Mac. Your Mac knows when it’s plugged in and runs accordingly. When using battery power, it dims the screen and uses other components sparingly.
====Adjust Display Brightness====
Dim the screen to the lowest comfortable level to achieve maximum battery life. For instance, when watching a video on an airplane, you may not need full brightness if the cabin lights are off.
====Turn off Wi-Fi====
Wi-Fi consumes power, even if you are not using it to connect to a network. You can turn it off in the Wi-Fi status menu in the menu bar or in Network preferences.
====Quit Applications and disconnect peripherals====
Disconnect peripherals and quit applications not in use. Eject an SD card if you’re not currently accessing it.
==='''Key Points'''===
*Understanding power states will help you determine what troubleshooting steps to take
*Safe sleep allows Macs to restore the contents of RAM to the hard drive.
*The System Management Controller is responsible for many low level functions and should be reset as part of troubleshooting.
*Desktop and portable Macs have different methods of resetting the SMC.
*Power Adapters come in different wattages. While you can use a higher wattage adapter without issues, lower wattage adapters will not provide enough power.
*Optimizing battery life best practices are a mixture of settings on the Mac and usage behaviors by the customer.
==Networks==
to learn how to use the Network pane in System Preferences to [http://support.apple.com/HT201735 connect to the Internet], [http://support.apple.com/HT201974 manage network connections], and [http://support.apple.com/guide/mac-help/about-advanced-networking-options-mh15658/10.13/mac/10.13.2 configure advanced options].
Be sure to familiarize with the advanced network settings in system preferences.
Familiarize with locations in network settings. Edit locations to add new locations/remove locations, etc if different settings are required.
*[http://support.apple.com/HT202480 HT202480 - How to use network locations on your Mac]
*[http://support.apple.com/guide/mac-help/change-the-order-of-your-network-connections-mchlp2711/10.13/mac/10.13.2 Change the order of your network connections]
*[https://support.apple.com/guide/mac-help/add-a-network-service-mchlp1176/10.13/mac/10.13.4 Add a network service]
If you cannot connect to the Internet, there may be a problem with your cables, your devices, your network settings, or your Internet service provider (ISP). On a Mac running macOS Sierra (10.12) or earlier, you can use [http://support.apple.com/kb/PH25457 Network Diagnostics] (macOS Sierra 10.12 or earlier) to isolate and resolve the issue.
to learn how to setup [http://support.apple.com/HT204445 file sharing] and [http://support.apple.com/guide/mac-help/share-your-printer-mchlp2424/10.13/mac/10.13.2 printer sharing] in macOS.
Familiarize with network sharing options.
Familiar with sharing files in macOS via network sharing.
Printer sharing is only for wire connected printers (not wireless via WiFi, etc.)
*[http://support.apple.com/guide/mac-help/ways-share-screen-files-users-network-mchlp1125/10.13 Ways to share your screen, files, and more with other users on your network]
*[http://support.apple.com/HT202944 HT202944 - TCP and UDP ports used by Apple software products]
==='''Key Points'''===
*Use the Network pane of System Preferences to set priority of network ports, manually configure network settings and create sets of network.
*use locations (sets of network preferences) to make network configuration easy for the customer and to help you troubleshoot network configuration issues.
*Use Network Diagnostics to evaluate, isolate, and resolve network connectivity issues in macOS (macOS 10.12 and older).
*Use the Sharing pane in System Preferences to control access to the computer.
*As more sharing features are enabled, more opportunities to access the computer are opened.
==Troubleshooting Tools==
For more information on basic software troubleshooting, see the Apple Support article, [http://support.apple.com/HT203161 HT203161 - Isolating issues in Mac OS X].
==='''Force quit'''===
Built in software troubleshooting tool that allows you to stop unresponsive application without affecting other running applications. This is less invasive than a force restart on the machine.
Use force quit when a specific application stalls or is unresponsive or switching to another app that is not stalled to preserve data before restarting the computer.
For more information on Force Quit, see the following Apple Support articles:
[http://support.apple.com/en-us/HT201276 HT201276 - How to force an app to quit on your Mac]
[https://support.apple.com/guide/mac-help/mchlp2579/10.14/mac/10.14 If an app freezes or quits unexpectedly]
==='''Why install software updates?'''===
One of the best ways to resolve software issues. Updates can resolve software compatibility issues, apps that unexpectedly quit, issues involving EFI and SMC firmware. Also, keeping your software up to date is one of the most important things that you can do to maintain the security of your Apple product.
What customer issues/concerns would prompt me to use software updates?
*A specific app stalls or is unresponsive
*An app fails to launch or unexpectedly quits during use
*An app fails to open
*An app reports that it is not compatible.
For more information on Software updates, see the following Apple Support articles:
*[http://support.apple.com/en-us/HT201541 HT201541 - How to update the software on your Mac]
*[http://support.apple.com/HT202040 HT202040 - About the SMC Firmware Updates]
*[http://support.apple.com/HT201222 HT201222 - Apple security updates]
==='''Activity monitor'''===
Helps monitor the activity of processor and disk, memory, and network activity. Also checks:
*CPU Processor activity
*Memory - shows info about how memory is being used
*Energy - energy impact of applications
*Disk - Amount of data being written/read
*Network - amount of data being written/read via network interfaces
Use when
*Slow Mac
*Unresponsive app
*Slow network performance
*Fan running continuously
*Battery runtime
For more information on Activity Monitor, see the following Apple Support articles:
*[https://support.apple.com/guide/activity-monitor/welcome/mac Activity Monitor User Guide]
*[https://support.apple.com/guide/activity-monitor/check-if-your-mac-needs-more-ram-actmntr34865/mac Check if your Mac needs more RAM in Activity Monitor]
*[https://support.apple.com/guide/activity-monitor/quit-a-process-actmntr1002/mac Quit an app or process in Activity Monitor on Mac]
*[https://support.apple.com/HT203184 HT203184 - See how apps affect Mac performance, battery runtime, temperature, and fan activity]
Familiarize yourself with each pane.
==='''System Information'''===
Provides detailed information such as:
*Operating System Version
*Computer specs and serial number
*Hard disk volumes: types and number attached.
*Installed preference panes, extensions, and apps
*Connected USB, Thunderboth, and FireWire peripherals.
Use in situations when:
*Verification of system requirements for new hardware or software product
*Verification of network connections, including active services, IP addresses, and type/speed of network connections.
*Verification of a connected module (memory module peripheral, hard disk partition, or volume)
*Verification of a serial number when logic board has been replaced
For more information on System Information, see the following Apple Support article:
*[http://support.apple.com/kb/HT203001 HT203001 - About System Information on your Mac]
==='''Console'''===
Displays a live stream of log messages. Shows diagnostic info about your Mac and any connected devices. Provides an essential overview of diagnostic information recorded by OS from a central location.
Use when:
*unexpected shutdowns
*Apps quitting unexpectedly
*Directed by apple support article
*Customer requests to send usage and diagnostic info to Apple
*Discovery of additional technician info that might assist with an issue.
For more information on Console, use the following resources:
*[https://support.apple.com/guide/console/welcome/mac Console User Guide]
Go to Applications > Utiliies
Open Console
Select or search for the messages, reports, logs you wish to view
Note the information provided by each entry
Note that each entry is time stamped to pinpoint when and how frequently error occurs.
==='''Disk Utility'''===
View, manage, troubleshoot connected disks. Includes internal and external hard drives, flash-based storage, disk images, and DVDs. Can repair, securely erase, partition, and verify disk integrity.
Use when:
*Issues related to directory damage
*Verifying or repairing hard disk
*Erasing and securely erasing hard drives
*Creating or resizing partitions
*When told by an Apple Support ARticle.
Beginning with El Cap, system file permissions are automatically protected. The option to repair/verify these permissions is no longer present. Repairing permissions or verifying with disk utility is still available in earlier OS.
Director damage symptoms include a machine that does not start up, is slow to start up, or stalls during start up. Customer may also state that they are experiencing slow performance or apps that error out without opening.
Causes:
*Power outages
*Unexpected shut downs
*Consumed batter causing unexpected loss of power
*Loose power cable
*Hardware failure
For more information on Disk Utility, see the following Apple Support article:
*[https://support.apple.com/guide/disk-utility/welcome/mac Disk Utility User Guide]
The most secure erase option meets US DoD standard for securely erasing magnetic media. Writes over data 7 times. Not an option in disk utility with solid state drives.
If you try to repair the startup or boot volume using First Aid, you will receive a message warning “in order to run First Aid, the boot volume must be frozen.” (Have to do in recovery for example)
==='''Terminal'''===
A text based app that lets you interact directly with industry-standard UNIX foundation of macOS. Provides direct command-line access to the UNIX environment.
Should only be used by those with extensive UNIX experience. Terminal is most often used by system admins, software developers, and other technical users. In general, not required when troubleshooting Macs.
Use terminal only when an Apple Service Guide instructs.
For more information on Terminal, use the following resources:
*Help menu within the Terminal app
*The specific article that instructs you to use Terminal (see examples below)
*[https://support.apple.com/HT203538 HT203538 - Resolve issues caused by changing the permissions of items in your home folder.]
*[https://support.apple.com/HT201262 HT201262 - Use safe mode to isolate issues with your Mac]
*[https://support.apple.com/HT201372 HT201372 - How to create a bootable installer for macOS]
==='''Key Points'''===
*macOS has built in tools to help troubleshoot software issues and support articles that walk you through using them/
*Force quit allows a user to stop an unresponsive app without affecting other running applications.
*Software updates can resolve software compatibility issues or apps that unexpectedly quit.
*Activity monitor helps monitor the activity of a computer’s processor, disk, memory, and network activity.
*System information provides detailed information about the computer’s hardware, software, and network in an easy-to-read layout.
*console is an application which display live stream of log messages.. It also shows diagnostic info about your Mac and any connected devices.
*Disk utility is used for viewing, managing, and troubleshooting connected disks.
*Terminal command-line access to the UNIX foundation is normally not required when troubleshooting Mac computers.
*Only use terminal when directed to do so by an Apple resource.
==Troubleshooting Startup==
==='''Standard Startup Process'''===
The [https://support.apple.com/HT204156 standard startup process] begins when the power button is pressed and ends when the desktop appears. The entire process is comprised of these three stages:
*Hardware = system powers on, test, and prepares the hardware.
*Firmware - Firmware is loaded. Firmware is permanent software embedded in the hardware. If FileVault is enabled, the user is prompted to provide a username and password.
*Software - the boot loader (a program that places the OS into memory) is loaded. The OS loads and starts everything else required at the login state. The OS then sets up the user’s environment.
[http://support.apple.com/kb/HT201262 Safe Boot startup] and [http://support.apple.com/kb/HT201314 starting up from the recovery system] do not follow the standard startup process described above.
==='''Power on Self Test'''===
Step 1 - when you press the power button, the Mac provides power to the logic board and performs a quick check of the hardware. The hardware check is called the Power-On Self Test (POST). Test resides in the read-only memory ROM of the computer. If POST is successful, Mac will emit a start chime (2016 or older) and continue the start up process. If a fault is detected the computer might:
*Sound a series of error tones
*If equipped with one, flash the front LED
*Produce no chime or sounds (if older than mid-2016).
If any of these occur, the screen will remain black.
If there is no chime, a series of error beeps, or a flashing LED on the computer after you press the power button, try the following steps to troubleshoot the hardware:
'''Use known good power and cable'''- Start with the least invasive, least costly quick fix first. Check basic power flow.
'''[http://support.apple.com/kb/HT204063 Reset NVRAM]''' - This will reset startup disk settings.
'''[http://support.apple.com/kb/HT201295 Reset SMC]''' - Reset the SMC to resolve power issues.
'''Research LEDs and [https://support.apple.com/en-us/HT202768 startup tones]'''- Consult hardware-specific resources to match specific LED codes or error beeps to specific symptoms.
'''Remove peripherals'''- Remove any third-party or other added internal or external devices and try again.
'''[http://support.apple.com/en-us/HT202731 Run Diagnostics]''' - Run Mac Resource Inspector (MRI), Apple Diagnostics, or Apple Hardware Test (customer diagnostics), if possible, to identify common hardware failures.
Mac computers can produce [http://support.apple.com/kb/HT202768 several tones when starting up]. Mac computers prior to early 2016 should produce the familiar POST chime at startup. If you hear something other than the POST chime, and the Mac is from Early 2016 or even earlier, it might mean there is a problem with your Mac.
==='''Firmware'''===
While firmware loads, the Mac displays a blank gray or black screen. Firmware decides which startup disk to use from:
*hard disk
*Recovery HD
*Internet recovery
*Installation disc
*NetBoot server
If the Mac fails to advance past a blank black or gray screen, displays the prohibitory symbol, or flashes a folder with question mark symbol, the firmware has not found the correct files necessary for startup. If this screen displays for more than one minute, try the following firmware troubleshooting steps:
#'''Reset NVRAM''' - This will reset startup disk settings.
#'''Remove peripherals'''- Remove any third-party or other added internal or external devices and try again.
#'''[https://support.apple.com/en-us/HT202796 Access startup manager]''' - hold down option on boot to see if there are other bootable drives.
#'''[https://support.apple.com/en-us/HT201314 macOS Recovery]''' - try starting up from the recovery partition and attempt to repair and verify the permissions and startup volume disk.
#'''[http://support.apple.com/en-us/HT202731 Run Diagnostics]''' - Run Mac Resource Inspector (MRI), Apple Diagnostics, or Apple Hardware Test (customer diagnostics), if possible, to identify common hardware failures.
#'''[https://support.apple.com/en-us/HT204904 Reinstall macOS]''' - If you can start up from the recovery partition, but resetting NVRAM fails to resolve the blank gray screen, reinstall macOS. Be sure that the customer's information is backed up before proceeding.
Folder icon - Mac could not find any local or network based startup disk.
Prohibitory symbol - Mac could not find a valid system folder from which to start up.
==='''Software Boot-loader'''===
When the Apple logo is displayed, the boot loader has been successfully loaded from the startup disk. The boot loader is a specific file called boot.efi, which is found in the /System/Library/CoreServices/ folder
==='''Software - FileVault Login'''===
User is prompted to log in a FileVault login prior to kernel files loading.
==='''Software - kernel'''===
Kernel and related files load - also checks the directory and starts services such as launch agents. A progress bar is displayed during this process.
==='''Software - login window'''===
Once completes loading all necessary kernel and extensions, login window will load.
==='''Software'''===
Desktop - if FileVault is not enabled on the system, macOS will prompt fo a name and password. Or the computer will automatically log in directly to the customer’s user account. Auto login preferences can be adjusted in the Users & Groups pane of System Preferences.
User Environment - the finder opens and macOS looks for user accounts and user-owned files, also starts runner user processes including Finder and Dock.
Login Items - then opens login items which can be adjusted in the Users & Groups pane of System Preferences.
If the Mac is stuck on the Apple logo, stuck on the progress bar or kernel panics, try the following software troubleshooting steps:
#'''Run Diagnostics''' - Run Apple Diagnostics or Apple Hardware Test, if possible, to identify common hardware failures.
#'''[http://support.apple.com/en-us/HT204319 Verify OS and build]''' - verify in MRI that this machine has the correct OS and build.
#'''macOS Recovery''' - try starting up from the recovery partition and attempt to repair and verify the permissions and startup volume disk.
#'''[http://support.apple.com/en-us/HT201262 Safe mode]''' - boot the Mac into safe mode to see if the issue still persists.
#'''Reinstall macOS''' - If these techniques cannot resolve the issue, reinstall macOS. Be sure that the customer's information is backed up before proceeding.
==='''Safe boot or Safe Mode'''===
[https://support.apple.com/HT201262 Safe Boot, or Safe Mode], is an effective way to evaluate and isolate startup issues. Safe Boot prevents certain software and extensions from automatically loading or opening.
Safe Boot might take longer than normal. A progress bar will appear, indicating the disk's directory is being checked. This process can take several minutes. The login screen will display Safe Boot in red in the upper right corner of the screen upon successful boot. If FileVault is enabled, the FileVault password must be entered before Safe Boot can begin. You cannot perform a Safe Boot if a [https://support.apple.com/en-us/HT204455 firmware password] is enabled.
Example Situations and Scenarios
Startup stops at Apple Logo or the Apple Logo with progress bar
*Wait 5-10 mins - The system performs a disk directory check automatically if it was shut down improperly. This process may take longer on larger hard disks.
*MacOS Recovery - start up from recovery partition and attempt to verify and repair the startup volume disk.
*Reset NVRAM - Try PRAM/NVRAM resets
*Run Diagnostics - run storage diagnostics through AST. Verify the integrity of the internal drive. If possible, dock the system drive external and attempt to boot from the disk, isolating any individual hardware issues.
If you can boot in Safe Mode, or chec k other log files using Terminal when booting from the installation disc or recovery partition.
Stops at light gray screen after Apple logo
*Safe Mode - see whether corrupt fonts or extensions are causing the issue.
*Console - check the logs in Console under system.log or Console Messages for failure errors around the time of the last boot attempt.
*MacOS Recovery - Use disk utility to run First Aid.
*Reinstall macOS
What if there is no login window?
*Safe Mode - if login window appears in Safe Mode, open system preferences to verify that the login options in the Users & Groups pane are configured correctly. Remove any recently installed or third-party login items or launch agents.
*MacOS Recovery - repair the startup volume’s directory in disk utility.
*Reinstall macOS
What if you do not see the user environment?
*Test User - login to another user if possible.
*Open App - if the dock or menus are not available, try opening a file or app.
*Recovery - start up from recovery and run Disk Utility’s First Aid.
*Console - Examine Console logs on the problematic volume (system.log and any crash logs)
*Reinstall macOS.
==='''Key Points'''===
*The three stages of Mac startup are Hardware, Firmware, and Software.
*You should know the visual and auditory cues of the startup process in order to troubleshoot startup issues.
*Safe Boot or Safe Mode can help evaluate certain startup issues.
*Using diagnostics and understanding Mac startup tones can help isolate hardware startup issues.
*MacOS Recovery is useful both for an alternate way to startup the customer Mac and as a means to reinstall the system software if needed.
=='''Systematic Troubleshooting for Mac'''==
Apple’s systematic troubleshooting process supposes that all possible issues are based on one of four root causes: Hardware, Software, Environment, Education Opportunity. Process involves three principle stages: Evaluation, Isolate, Resolve
==='''Evaluate'''===
*What does the customer tell you
*What does the device tell you
*What do Apple resources tell you
*Ask probing questions
*Run relevant diagnostics
*List for any potential safety issues.
*Apply the quick checks that are recommended.
*Eliminate irrelevant possibilities until you are left with the most likely cause.
Begin by eliminating information that is not related to the issue.
Follow up with probing questions to help narrow the possibilities.
Use a combination of both open questions and closed questions.
What does the device tell me?
Always run diagnostics relevant to the issue you are experiencing.
==='''Isolate'''===
*Have the customer reproduce the issue
*Determine if you are dealing with a device issue, or an issue not related to the device.
*Isolate the issue to the correct problem space: Educational opportunity, environment, software, or hardware.
*Use non-invasive troubleshooting techniques before you move forward with more invasive methods.
==='''Safety Response'''===
Listen closely for any potential safety issues. Words such as shock, fire, smoke, spark, liquid, or swelling indicate a safety issue that needs to be addressed.
==='''Resolve'''===
AFter evaluating and isolating the issue correctly, common resolutions could be:
*Repair without using parts
*Repair using parts
*Reinstall or update software
*Educate the customer
*Direct the customer to third-party resources.
==='''Problem Spaces'''===
If the issue is device related, it is going to exist in the Hardware or Software problem spaces.
If the issue is NOT device related, it is going to exist in the Educational Opportunity or Environment problem spaces.
===='''Hardware problem space'''====
*issues related to hardware failures
*Resolutions will generally require repairing the device with parts or possibly replacing a device.
===='''Software Problem Space'''====
*Issues directly related to software installed on a device.
*Simply restarting a device will resolve many software issues.
*Issues may affect system software or only applications and files installed by the user.
*Resolutions may include toggling specific settings, resetting specific settings, updating software, or reinstalling software. Sometimes removing specific files, apps, or other data related to the issue.
===='''Educational Opportunities'''====
Not issues, but opportunity to educate customer and reset their expectations related to their device. Customer may think there is an issue, but they are really misinformed about what the device is capable of or may be performing a task incorrectly.
*Always important to have the customer reproduce the issue.
===='''Environmental Problem Space'''====
Can be difficult to isolate because they are hard to reproduce.
*May include dropping calls, unable to join a specific network, and wireless interference.
==='''Some basic troubleshooting links:'''===
*[https://support.apple.com/en-us/HT204156 HT204156 - About the screens your Mac displays as it starts up]
*[https://support.apple.com/en-us/HT203161 HT203161 - Isolating issues in Mac OS X]
*[https://support.apple.com/en-us/HT201262 HT201262 - Use safe mode to isolate issues with your Mac]
*[https://support.apple.com/en-us/HT204443 HT204443 - How to test an issue in another user account on your Mac]
*[https://support.apple.com/en-us/HT201314 HT201314 - About macOS Recovery]
*[https://support.apple.com/en-us/HT204063 HT204063 - How to Reset NVRAM on your Mac]
*[https://support.apple.com/en-us/HT201295 HT201295 - Reset the System Management Controller (SMC) on your Mac]
*[https://support.apple.com/HT201686 HT201686 - Use the Mac operating system that came with your Mac, or a compatible newer version]
*[https://support.apple.com/HT201255 HT201255 - Startup key combinations for Mac]
*[https://support.apple.com/HT201236 HT201236 - Mac keyboard shortcuts]
{| class="wikitable"
|[https://support.apple.com/en-us/HT201542 HT201542 - Potential sources of Wi-Fi and Bluetooth interference]
[https://support.apple.com/en-us/HT201735 HT201735 - How to connect to the Internet with your Mac]
[https://support.apple.com/en-us/HT202480 HT202480 - How to use network locations on your Mac]
[https://support.apple.com/en-us/HT202663 HT202663 - Check for Wi-Fi issues using your Mac]
|}
'''Key Points'''
Troubleshooting process involves three stages: Evaluate, Isolate, Resolve
Answer 3 questions when you are evaluating:
#What does the customer tell you
#What does the device tell you
#What do Apple resources tell you
Isolate the issue to the correct problem space then identify the best resolution for your customer.
==Repairing all Macs==
===Tools===
Use the appropriate tools and have them ready prior to repairing any Mac. Never use tools that are not appropriate for the repair.
Apples uses mainly Phillips, Torx, and flathead screw drivers but can use others.
ESD safe tweezers
ESD safe nylon probe (black stick)
ESD safe screw box with multiple compartments
Volt meter
Felt tipped perm marker
Microfiber cloth
These are just a few of basic tools needed.
Also uses specialized tools depending on the repair/mac.
For example:
MacBook service stand - for 12” retinas
Foam wedge support stand - for display assemblies in portables
iMac corrugated stand for VESA mount iMac
IMac locking wedge - for iMacs with stands
CPU riser spring press for reassembling CPUs
VHB kits - slim iMac adhesive.
6” silicone roller - cleaning iMac displays
Specific screwdrivers - such as Trilobe, pentalobe driver
Embedded battery cover - portables
Display extension cables for iMac
CDM - customer data migration tool kit
Key cap lever and slider tools
Antennae tool
IMac wireless card tool
Bale retrieval tool for VESA mounts
Mac mini logic board removal tool
Track pad calibration weights
And many more!
==='''What constitutes a quality repair experience?'''===
The Apple standard is high. You are responsible for correcting issues and repairing the relationship between Apple and customer. Set yourself up for success by identifying everything you need before you begin the repair to ensure a more efficient repair process.
Common repair habits:
*be sure you have access to all service related systems
*Gather all necessary information related to the repair
*Be sure workstation is configured properly, ESD precautions are being followed, clean ESD mat, wear ESD wrist strap, have ESD bags
*Make sure all safety protocols are in place
*Gather all needed tools
*Keep workstation organized
Make sure that Mac Activation Lock has been turned off before performing any repairs for applicable Macs.
==='''During Repair'''===
Keep organized repair station and follow the prescribed workflow noted in Apple documentation to be more efficient and less likely to make costly repair mistakes.
Maintain good repair habits:
*continue to stay organized
*Maintain ESD precautions
*Continue to observe safety protocols
*Update case notes throughout the repair
*Maintain organizational system of parts/screws
*Handle each connector type as instructed in order to minimize damage
*Use correct tools in the correct way
==='''Screw Organization best practices'''===
ESD safe screw tray provides a convenient way to manage the wide variety of screws that are removed and replaced during re-assembly.
*Keep track of screws and parts removed. Loose screws can cause a thermal event.
*Screw organization is as important as documenting a repair case properly
*Fellow technicians should be able to easily identify and follow your organization process.
*What makes sense to you may not make sense to another tech
*Clearly document and outline your screw organization process.
*Refer to service guide screw chart chapter and take apart steps to aid in the identification of screws.
<br />
==='''Connector types:'''===
Card Connectors - Ex - Airport card, PCIe SSD, GPU - lift as little as possible to grasp, slightly wiggle from side to side and pull lightly to remove.
Horizontal-Install connectors - Ex - MacBook Air camera connector, 2010 camera connector, etc. Use 2 black sticks to pull out horizontally directly out of connector.
Japan Solderless Terminal (JST) Connectors - ex. Speaker connectors, microphone connectors, slide pointed end of black stick underneath cable and use black stick as platform to remove from board straight up
Locking lever connectors - trackpad connectors - use pointed end of black stick to flip locking leaver straight up and use pull tab to remove the cable.
Multi-Pin Horizontal Insert Connectors - Most display connectors on portables and slim - use pointed end of black stick to flip lock bar up and ease connector out of connector. Never hold connector by lock bar.
Platform connectors - many battery connectors!! Grasp connector with fingernail or black stick and pull straight up, never pull cables.
Pull-Tab connectors - Some battery connectors (MacBook Air), power supply connector - grasp ull tab or connector and pull straight out. If no pull tab, use fingertips and pull gently and evenly.
Solid platform flex connector - power flex connector as in on MBA and MBPr, trackpad connector. Some have foam pad and lock bar (newer portables).
Wireless antenna connector - Airport card - use ESD tweezers to grasp neck of connector and pull straight up, be careful not to damage.
Interposer - Used in some versions of MacBook Pro Retina. Carries power from the battery to the logic board.
Low profile solid platform connectors - similar to above.
==='''When repair is finished'''===
Complete post-repair tests and diagnostics.
Store it in a way no damage can occur.
Mac Repair Completion Steps by Model Date
{| class="wikitable"
|'''Before 2015'''
|'''2015'''
|'''2016'''
|'''2017'''
|'''2018'''
|-
|AST 1 or AST 2 Repair Verification
|AST 2 Repair Verification
|AST 2 Repair Verification
|AST 2 Repair Verification
|AST 2 Repair Verification
|-
|
|Trackpad Calibration for Portables
|Trackpad Calibration for Portables
|Trackpad Calibration for Portables
|Trackpad Calibration for Portables
|-
|
|
|Dual-Featured Auto Boot Disable and Re-enable for Portables
|Dual-Featured Auto Boot Disable and Re-enable for Portables
|Multi-Featured Auto Boot Disable and Re-enable for Portables
|-
|
|
|Top Case to Logic Board Configuration
|Top Case to Logic Board Configuration
|MacBook Pro Models with the Apple T2 chip need System Configuration for Logic Board, Touch ID, Display, and Top Case Replacement
|-
|
|
|
|iMac Pro with the Apple T2 chip requires System Configuration for Logic Board and Flash Storage Replacement
|Mac mini (2018) requires System Configuration for the Logic Board.
|-
|
|
|
|
|MacBook Air (Retina, 13-inch, 2018) requires System Configuration for the Logic Board and Touch ID.
|}
Verify that the original customer issue has been resolved, no new issues have been introduced during the repair, and the Mac will pass required diagnostics.
Recommended diagnostics on all Macs to verify a repair:
*MRI - to verify that all components are connected and properly detected.
*Full Systems Diagnostic - run both EFI and OS versions of these tests. For older Macs use ASD EFI and OS.
*Some Macs require additional diagnostics any time they are repaired. Ex. MacBook 12” Early 2015 requires trackpad calibration any time the unit has been opened.
==='''Cleaning'''===
It is essential to clean the computer before returning it to the customer. Please refer to:
*[http://support.apple.com/HT204172 HT204172 - How to clean your Apple products]
It is important that the customer receives a clean and undamaged device when it is returned from repair service. Use protective packaging and careful handling to keep products clean and safe.
==='''Key Points'''===
*Familiarize yourself with safety protocols and procedures BEFORE servicing.
*Use the correct tools for the repair
*Identify everything you need BEFORE you begin the repair
*Keep an organized repair station and follow the recommended workflow as noted
*Provide your customer with complete resolution by completing post-repair verification tests and diagnostics.
==Servicing iMac==
==='''Power Supply Warnings!'''===
Models produced in Late 2011 or earlier require at least one hour to discharge.
Models produced in Late 2012 or later require two minutes to discharge.
==='''Display warning!'''===
Use extreme causing when troubleshooting with display panel removed. Avoid touching the LED backlight board, logic board, or power supply while computer is plugged in - the power supply retains a charge whether or not the computer is actually on. Before working near a power supply, unplug the power cord and wait the appropriate time for it to discharge.
==='''Power supply covers'''===
Use protective power supply covers when the power supply is exposed. Secure the covers with Kapton or painter’s tape.
==='''Safety Stuff'''===
*Remove rings, watches, necklaces, metal-rimmed eyewear, and other metallic articles.
*Do not wear mobile phone or other signaling devices such as Apple Watch. These may cause a dangerous startle reflex during energized work.
*Do NOT wear ESD wrist strap if the iMac needs to be plugged in during repair as it may increase risk of electric shock.
*Remain alert! Be aware of the proximity of grounded objects to your body.
*Use the nylon probe tool (black stick) or other non-metal extension tool as needed. Keep fingers away from potentially energized parts.
*The glass on the display panel is NOT tempered. If display is still attached to housing and broken, secure broken glass with packing tape and carefully follow removal procedure.
*Handling a broken display requires caution and special tools. First put on safety glasses and material handling gloves. You will also need large ESD bags, large box for disposal, packing tape.
*IMacs include an internal coin battery on the logic board. Battery provides power to the real-time clock (RTC) and NVRAM when the computer is not connected to power source. If battery is installed incorrectly or is replaced with incorrect battery there is a chance of thermal event.
*Be careful not to stress display connectors and cables when tilting the display open. Do not completely open display until cables/connectors are disconnected.
*Use caution when removing VHB (iMac adhesive) from the display panel to prevent damage to the black Mylar protective file that is located on the display panel glass. Peel VHB from center points and not the ends to avoid.
*If Mylar is peeled or wrinkled on the display use finger to press file back on to the panel. It should be smooth and undamaged. If Mylar is pulled away from display, the display panel may need to be replaced.
*For Mid 2011 21.5” and 27” iMac - align logic board to rear housing by plug in cables to the Thunderbolt and also to the furthest left USB while tightening screws.
*For slim iMacs 2012-2016 - Plug one USB cable and two thunderbolt cables while tightening the logic board for proper alignment for 27”. For 21.5” use SD card, one USB and two thunderbolt cables for alignment while tightening.
*2017 iMacs - have a different alignment procedure where MLB and housing have matching pins and holes. You use only one of the 2 possible connectors during the installation process.
*Closely follow the cable routing when reassembling (take pictures if needed prior to disassembling!). Do not leave cables behind the logic board or other components when reassembling.
*Do not life the SSD or Flash storage connector at an angle when inserting it into the connector. Lifting the flash storage at an angle can damage the LB connector.
*Later iMacs require Wireless Card Support Tools to stabilize whenever antennas are detached or card is removed.
*Always remove the VHB from each antenna (all the VHB really)
*Run appropriate diagnostics - mid 2014 21.5” onward uses AST 2 and Full System Diagnostics. Older uses AST 1 and ASD EFI and OS.
==='''27” slim iMac notes'''===
*there are 4 antennas but only 3 can be replaced
*You must replace both speakers even if one is damaged
*Do not break the small cable behind the power supply - built into housing!
==='''Key points'''===
*Older iMac models can require up to one hour to fully discharge once unplugged.
*More recent iMac models require 2 minutes.
*User Power Supply Covers whenever the power supply is exposed.
*Plug in recommended cables to the back of an iMac while reinstalling the logic board for correct alignment
*Carefully review the videos and articles describing the model when working on an iMac model for the first time.
==IMac Pro servicing==
Available accessories for the iMac Pro:
*Space Gray Magic Mouse 2 - in the box
*Space Gray Magic Keyboard with Numeric Keypad - in the box
*Space Gray Magic Trackpad - available when ordering iMac Pro
[https://www.apple.com/imac-pro/specs/ the iMac Pro specifications page]
*the BR2450 backup coin battery is more powerful version than previous models. Must be installed with engraved or + side facing up. Apple does not sell this battery as a service part.
*Data may be lost unless the customer backs up (T2)
*Default security systems prevent from starting up on external drive
*NetBoot is not currently supported on 2017 iMac Pro
*Flash storage modules must be paired to the iMac if replaced.
*Some data MAY be transferable using Data Transfer Utility prior to LB or storage replacement.
*Startup in Recovery Mode to use the Startup SEcurity Utility to change the defaults to allow external boot. Admin access is required.
*Replacement flash storage must be reinstalled into the same connector it was taken out of. The storage is marked with 00 and 01 which corresponds to the numbers on the connectors on the LB.
*The flash storage devices are paired to the logic board and data cannot be accessed or recovered when installed in another logic board
*Every time you install a replacement DIMM in one of the inner memory slots (2 or 4), you must install an EMI absorber on the DIMM to avoid Wifi and Bluetooth signal interference.
*One absorber is included with each replacement DIMM service part. 3rd part DIMMS in slot 2 or 4 also require the absorber.
*Replacement power supply includes new bus bars which must be attached before installation can take place. Logic board bus bar screws must be installed with an adjustable torque driver set to .75nm. Power supply bus bar screws must be installed with an adjustable torque driver set to .85nm.
*Customers can remove the stand and install the VESA mount adapter. Improper installation can result in retraction of mechanism into the iMac Pro enclosure.
*Amended functions in AST 2 for iMac Pro - In image persistence test, tones are not played after 4 minutes have elapsed, you will need to refer to the Diagnostic Console to determine with it is time to look at the UUT’s screen.
*An interactive headphone jack test is now part of the AST 2 Audio Suite for iMac Pro and requires a set of headphones for testing.
*Requires special tools for removing and replacing MLB. Mac Configuration Utility must be used to properly configure the logic board.
*Has a dual fan assembly.
*These speakers also work as pair and must be replaced together.
*Wireless card is not removable.
*Use logic board service tray with stiffeners for iMac Pro.
*The logic board must be removed in order to replace RAM and storage. Storage is paired to the board.
*AST 2 is used to serialize the logic board. You need iMac Pro, usb-C data cable with either usb-A or usb-C on other end, known good computer, and ipad. Host computer must be on 10.13, have Mac Configurator installed, and be connected to the internet.
*DFU mode is holding down power button for 10 seconds while plugging in power cord to wall. Display will remain blank but should show up on host computer in Configurator.
==='''Key Points'''===
*iMac Pro ships with Space Gray Magic Keyboard with Number Pad and Space Gray Magic Mouse 2
*All 2 minutes for the power supply to discharge before opening
*Use power supply cover when performing troubleshooting that requires an open iMac Pro
*NetBoot and starting up from external drives is blocked by default. NetBoot is not supported on 2017 iMac Pro
*New tools for iMac Pro 2017 are: Wireless card support tool, logic board tray and stiffeners, display extension cables, and new VHB strips.
*Do not use the display removal tool on the top center 3 inches of display due to microphone cables and camera.
*Logic board must be placed on the logic board service tray with stiffeners installed for repairs including flash storage, memory and battery.
*Replacement power supply includes new bus bars, which must be attached before installation can take place. If the bus bars are damaged during repair, they must be replaced. The can be ordered as a separate service part.
*Replacement logic board and flash storage require initialization using the Mac Configuration Utility and AST 2.
==Servicing Mac mini==
Mac mini Late 2014 requires an internal coin battery on the logic board. This battery provides power to the real-time clock and parameter RAM. If it is installed incorrectly or replaced with an incorrect type of battery, there is rick of thermal event. Positive pole should be facing upward from logic board.
Late 2012 Mac mini and Mac mini Server - antenna plate and housing are sharp, use care to avoid injury and damage to antenna cable.
Late 2014 model - RAM is soldered to logic board.
2018 model - RAM can be replaced.
Late 2014 - Service tools include suction cup and logic board removal tool. Not required for the 2018 model. Suction cup tool is used for removing the bottom cover to get into Mac mini.
Power socket is held in proper place by the power socket retention clip. The cowling for the AC inlet is removable. The socket rotates within a groove in the housing and must be aligned correctly before the retention clip can be inserted.
Late 2012 - mini and Server - the bottom screw (LB and heat sink screw) is a threaded standoff that fan screw will screw into. If the fan screw that screws into the heat sink screw is lost or damaged, the entire logic board will have to be replaced (there is no replacement part for just the cowling screws).
2018 model - Use black stick to remove the bottom cover. T6 security bit is required to remove the antenna plate screws. Remove the antenna connector before removing the plate by moving clockwise and detaching antenna cable. Fan screws are on diagonal angle! Power button now has a flex cable. If the cable is torn, the entire I/O wall needs to be replaced.
==='''Ports'''===
*Power button
*Power cord
*Gigabit Ethernet (Optional 10GB Ethernet CTO)
*4 x Thunderbolt 3 USB-C ports
*HDMI
*3.5mm headphone jack
*2 x USB-A ports
==='''Key Points'''===
*The coin battery inside Mac mini models must be installed properly
*Antenna plate and housing inside L2012 model are sharp and can cause personal injury if not handled with care.
*RAM inside L2014 is onboard and not upgrade able.
*Connectors used in all models are fragile
*Torque drivers are required tools for service L2014 model.
*Antenna plates are attached to wireless cards and must be removed carefully.
*Memory can be replaced in 2018 model
*Care must be taken when removing the power supply cable from the LB in the 2018 mode - connection is tight.
<br />
==='''Secure Boot'''===
https://support.apple.com/en-us/HT208330#fullsecurity
==='''Torx'''===
The trademark name for a type of screw head or screw driver bit characterized by a 6-point star-shaped pattern.
==='''Torque'''===
The twisting or turning force used to tighten screws and other fasteners, measured in units of inch-pounds (in-lb), kilogram-centimeters (kid-cm) or Newton-meters (Nm).
==Servicing Mac Pro==
L2013 and M2012 models - internal coin batteries on LB.
Always shut down Mac Pro before opening it. Wait 10 minutes to allow the internal components to cool.
L2013 and M2012 both contain diagnostic LEDs.
L2013 - be aware of potential hazards of the bus bar and bus bar screws to avoid injury. Hazardous energy (>240VA) exists on each of the bus bars throughout each of the logic boards when the power supply 12 Vdc output is energized.
L2013 - when housing is removed a safety interlock circuit on the I/O board immediately de-energizes the power supply output. You can override the safety interlock circuit and energize the power supply output by using a magnet. Overriding the safety interlock should only be done for the purpose of observing the status of the LEDs. Do not disassemble the system with the safety interlock defeated!
L2013 - Serial number is located on bottom of cylinder.
Earlier - serial numbers are located under need video output ports.
[https://support.apple.com/HT205044 HT205044 - Mac Pro (Late 2013): Installing or replacing memory]
2013 - if you service either graphics card A or B, or the processor board on the thermal core, you must run the Cooling System Diagnostic in AST.
==='''Hall Effect Sensor'''===
L2013 models - magnetic sensor that will prevent operation of the computer with the housing removed, located inside the outer casing. Aligned to engage the safety interlock sensor near the power button.
==='''View Diagnostic LED steps'''===
*Turn off unit
*Remove AC power cord and all cables/peripherals that might be connected.
*Remove the housing
*Connect the AC power cord.
*Hold a magnetic source approximately 1 inch to the right of the power button, immediately to the right of the vertical EMI gasket of the I/O wall.
*Press the power button while magnet is in place. Removing the magnet will immediately power off the computer.
==='''Diagnostic LEDs'''===
*STatus LEDs do not illuminate unless the DIAG button on the I/O board is being pressed.
*Error LEDs illuminate red when there is an issue.
*Warning LEDs illuminate yellow when a thermal problem is detected. This type of LED is only found on the CPU riser card.
SCORM Frame
==='''Single Processor Configuration'''===
A quad-core Mac Pro (Mid 2012) has one processor and four memory slots. You can install 2GB, 4GB, or 8GB DIMMs for a total of up to 32GB of memory.
You can install different size DIMMs in Mac Pro (Mid 2012). However, for best performance, Apple recommends you install equal-size DIMMs (all 2GB, all 4GB, and all 8GB) filling the slots in the order listed in the table below. Note that you cannot place a DIMM in slot 4, without first placing a DIMM in slot 3.
{| class="wikitable"
|Number of DIMMS
|Fill these Slots
|-
|Two DIMMs
|1 and 2
|-
|Three DIMMs
|1, 2, and 3
|-
|Four DIMMs
|1, 2, 3, and 4
|}
==='''Dual Processor Configuration'''===
A 12-core Mac Pro (Mid 2012) dual-processor supports 2GB, 4GB, or 8GB DIMMs for a total of up to 64GB of memory.
You can install different size DIMMs in Mac Pro (Mid 2012). However, for best performance, Apple recommends you install equal-size DIMMs filling the slots in the order listed in the table below. Note that you cannot place a DIMM in slot 4, without first placing a DIMM in slot 3; you also cannot place a DIMM in slot 8 without a DIMM in slot 7.
{| class="wikitable"
|Numbers of DIMMs
|Fill these slots
|-
|Two DIMMs
|1 and 2
|-
|Three DIMMs
|1, 2, and 3
|-
|Four DIMMs
|1, 2, 3, and 4
|-
|Six DIMMs
|1, 2, 3, and 5, 6, 7
|-
|Eight DIMMs
|1, 2, 3, 4, and 5, 6, 7, 8
|}
[https://support.apple.com/HT205043 HT205043 - Mac Pro (Mid 2012 and earlier): How to remove or install memory]
==='''M2012 Processor Diagnostic LEDs'''===
The dual-processor board and single-processor board include a diagnostic LED for each processor. The following illustrations show the location of each LED and its associated processor. These error LEDs are normally off. A red illuminated LED indicates the associated processor may be missing or in overtemp state.
==='''How to identify Single-Processor and Dual Processor in 2012'''===
A quick way to identify between single-processor and dual-processor configurations is to open the side panel and inspect the processor heat sinks on the processor board. The configurations look like the following:
==='''2012 Troubleshooting CPU Diag LEDs'''===
*Determine if the error LED follows the processor heat sink.
*Verify the heat sink is physically undamaged and properly connected to the processor board
*Check that adequate thermal grease is applied and verify the fan is operating.
*For dual processor boards ONLY - determine if the error LED follows the processor by swapping processor A and B locations.
*Also has backplane diag LEDs
*For Memory LEDs - Red indicates its associated DIMM may be poorly seated or failed. The System Profiler or System Information will not reported unseated or failed memory. Try this procedure - Remove and reseat DIMM, restart computer, if still illuminated replace with new DIMM, restart and verify no longer illuminated.
*If 2 LEDs illuminate at the same time for 3 DIMM and 4 DIMM or 7 DIMM and 8 DIMM slots, may mean something else.
==='''2013 DIMM chart.'''===
There are four (4) DIMM slots. To optimize system cooling, Apple recommends installing DIMMs as shown:
{| class="wikitable"
|'''Total Memory'''
|'''DIMM Slot 1'''
|'''DIMM Slot 2'''
|'''DIMM Slot 3'''
|'''DIMM Slot 4'''
|-
|12GB
|4GB ECC UDIMM
|4GB ECC UDIMM
|4GB ECC UDIMM
|
|-
|16GB
|4GB ECC UDIMM
|4GB ECC UDIMM
|4GB ECC UDIMM
|4GB ECC UDIMM
|-
|32GB
|8GB ECC UDIMM
|8GB ECC UDIMM
|8GB ECC UDIMM
|8GB ECC UDIMM
|-
|64GB
|16GB ECC RDIMM
|16GB ECC RDIMM
|16GB ECC RDIMM
|16GB ECC RDIMM
|}
All UDIMMs are 1866MHz DDR3 ECC. Do not mix UDIMMs and RDIMMs. DIMMs that are not properly installed or do not meet the system requirements may effect system performance or not be recognized.
Do not rock or wiggle - pulls straight out.
==='''Key Points'''===
Safety Concerns -
*Coin battery must be installed properly
*Should be allowed to cool for 5-10 minutes before opening
*Follow all electrical safety guidelines when examining diagnostic LEDs
*Only override the safety interlock when directed to do so by service guide
Service
*Use the new screws supplied and tighten them with an adjustable torque driver to the specific torque required by service guide.
*Carefully review memory configuration instructions for the specific Mac Pro you are servicing.
*Follow memory installation best practices and tips when installed DIMMS inside 2013.
Take Apart
*2013 requires many specialized tools and service fixtures - have on hand before beginning
Post Repair
*Run Cooling System Diag if repairs were done to GPU, processor board or thermal core.
==MacBook Air Servicing==
Battery Replacement - New procedures! - first Mac notebook to feature a replaceable battery.
Does not have a sleep LED. To troubleshoot without one - connect a USB device that has power on or activity LED, press Caps key, open display and press an alphanumeric key to wake, charge with good adapter and check that MagSafe light shows
2018 Model has both standard and UV liquid contact indicators.
2018 - battery and speakers use adhesive strips similar to those used in later iPhones.
Beginning with 2015 model, speakers must be replaced as a pair.
2018 logic board replacement means also have to replace the Touch ID.
2018 has a removable metal battery service tray.
Must run Trackpad Keyboard Mapper in AST if you replace a trackpad or top case on:
*M2013-E2014 11” and 13”
*E2015 11” and 13”
*E2015 13” and Mid 2015 15” MacBook Pro
*2017 13”
SMC - chip on LB that controls all power functions. Should be reset if experiencing no start up, not displaying video, sleep issues, or fan noise issues. It shuts down the computer with some side effects: If in sleep mode, it will restart from a hibernation file. If loaded into OS, data from open applications can be lost. If it is already shut down, no side effects.
visit [https://support.apple.com/HT201295 HT201295 - Reset the System Management Controller (SMC) on your Mac].
==='''Flow of Power'''===
The routing of the keyboard/power button signal goes from keyboard > cable > trackpad > IPD Cable > MLB.
==='''Power on Pads'''===
Can be shorted to power on a computer - location varies per model.
==='''Key Points'''===
*MBA models have built in lithium-ion polymer batteries
*Do not include sleep LEDs
*While MacBook Air models have similar external ports, I/O speed will vary.
*Do not over-tighten the screws that hold in the battery
*Have fragile cables/connectors
*Batteries must be covered and disconnected from LB whenever the bottom case is removed.
*Will wobble on flat surfaces if bottom case screws are not properly installed.
*Some models also require Trackpad Keyboard Mapper diag ran after repair.
*2018 model has replaceable battery and trackpad.
==Servicing MacBook==
12” has dual microphones, headphone jack and one USB-C port
Review the following Apple Support articles for more information on MacBook (Retina, 12-inch, 2017) - technical specifications and USB-C ports.
*[https://support.apple.com/kb/SP757 MacBook (Retina, 12-inch, 2017) - Technical Specifications]
*[https://support.apple.com/HT204360 Using USB-C and Thunderbolt 3 (USB-C) ports and adapters on your Mac notebook]
Do not have fans
Components are in the bottom case as well as the top case - be careful when opening!!
If a new battery is needed which includes replacing entire bottom case
Has Butterfly grounding clip on bottom screw of logic board
Top case contains keyboard and trackpad - per Apple, non-replaceable.
TCON board is attached to display
Audio board ports are color matched to case
After removing screws in the bottom case, insert the flat end of a black stick between the top and bottom case, starting at rear of the computer. Do not push stick in too far due to battery. With bottom case loosened and not removed, use 2 hands to turn over the computer so that the Apple logo is facing up. Do not raise the top case too high before battery power is turned off or cables are disconnected.
Press and hold battery disconnect button until the LED light goes dark (about 5-10 sec). Confirm the LED light is off. If not lit from beginning, press battery disconnect button and hold 5-10 secs. Repeat two more times to ensure power is disconnected. (Check before pressing button that no power source is plugged in.)
Turn so that Apple logo is facing down and use black stick to disconnect trackpad IPD connector from the trackpad. Turn back over and proceed to open.
Do not set the top case on the speaker/antenna modules.
Speaker/antenna modules must be replaced as a pair.
Replace Thermal interface pads with logic board. (1. Remove existing thermal interface pads. 2. Wrap an IPA wipe around the pointed end of black stick and clean off excess adhesive. 3. Dry and apply new thermal interface pads.
Never get alcohol on the gold Battery Management Unit connectors or the graphite surface in the LB area. Do not scratch the graphite surface - doing so means that the battery must be replaced.
Use a USB-C to USB-A and 5w power adapter to apply low voltage power before powering on after opening and reassembly. It can take up to 10 secs to hear the power connect sound.
If battery charge remaining is less than 6%, it can take up to 10-15 mins to hear the power connect sound after charging.
Once it has been verified that the unit turns on with low power, disconnect 5w adapter and apply power with the 29w adapter to charge.
Trackpad Calibration Check is to be run after every repair or whenever the computer has been reassembled. Also recommended to run the Trackpad Response Test after a top case with keyboard has been replaced or if user is having issues related to trackpad.
After installing a new top case, the Microphone Equalization Reset in AST 2 must be run as well as Trackpad Calibration Check.
==='''Key Points'''===
*Have built in lithium-ion polymer batteries
*Relies on a single USB-C port
*Have internal button on LB to shut off power from battery
*Include LCIs
*Service stand is required to safely service with damage
*Keep screws organized - different colors
*2015 model requires the use of low voltage 5w power adapter to power on after assembly
*Trackpad Calibration check required each time unit is opened.
==='''Liquid Contact Indicators'''===
LCIs
Only visible when bottom case and most of the modules have been removed in MacBook. Small white dots that turn red when they have come in contact with liquid.
==='''Accidental Damage'''===
Examples
*Liquid spills/corrosion or residue
*Cracks - displays, enclosure surfaces
*Punctures or dents affecting functionality/usability
*Pressure or twisting damage to display/case
*Damage to I/O or MagSafe ports
*Signs of forced entry or removal
==Servicing MacBook Pro 13”==
Early 2015 - Trackpad Calibration Check after EVERY repair or whenever the computer has been reassembled.
BMU interlock screw is a shoulder screw with gold-plated washer- helps complete the signal and enables power to flow from battery to the logic board. Battery is built in and connected to the logic board by the BMU - must be removed before performing service procedures. (Late 2012 and early 2013 models)
Wireless card has thermal pad attached to underside - make sure remains with card when removing - can be ordered as a part.
Interposer is in L2012/E2013 models only - Only parts that require removal are logic board assembly (with MagSafe, heat sink, fan ducts, and fans attached), logic board, MagSafe, audio board, trackpad and top case.
Speakers are paired and offered as a kit. Must be replaced together.
L2012/E2013 models - if trackpad cable needs to be replaced, must replace entire trackpad.
2016+ do not chime when powered on or restarted
Auto Boot - Two features - Boot on Lid Open and Boot on AC Attach. Must be disabled before servicing.
Touch Bar - display integrated into the top of the keyboard that changes automatically depending on the app used. Right side has Touch ID sensor.
2016/2017 have BMU
Calibration of Force Touch on 2016+ models must be verified after every repair.
Do not tilt I/O flex cable past 90 degrees in 2016/2017 models
Touch ID is paired to logic board and must both be replaced together.
2016+ LB tilts at special angle when removing
Each time the battery is disconnected from LB, the computer needs to be connected to power adapter to turn on again.
==='''Key Points'''===
*Have built in lithium-ion polymer batteries
*Batteries can only be services but AASP
*Top cases include many parts such as battery, trackpad, keyboard
*Some models have interposer board and BMU Interlock Screws.
*2016+ does not chime
*2016+ includes Auto Boot
*Batteries must be covered and disconnected whenever bottom case is removed
*Review service guide carefully
*Will wobble on flat surfaces if the bottom case screws are not properly installed.
*Some models require Trackpad Calibration Check after reassembling
*2016+ require Auto Boot to be disabled before repair and re-enabled after repair.
==Servicing 15” MacBook Pro==
M2015 requires Trackpad Calibration Check
All MBPr 15” models have 2D bar codes - techs must have updated bar code scanners
Wireless card comes with gasket attached to underside. Make sure remains with card, is available as a service part.
I/O cable guide- plastic guide attached to I/O board - cables should be routed back into the guide after reinstalling the board. Replacement boards do not come with cable guide so it must be transferred from old board. Is available as a separate service part.
Speakers are paired and must be replaced together.
L2013 ONLY - bottom case screws should should be replaced each time. Old ones should be discarded.
2016+ do not have chime
2016+ has Auto Boot - disable before services and re-enable when service completed.
2016+ does have BMU.
2016+ - Calibration of Force Touch must be verified after every repair
Vent antenna assembly houses 3 wireless antennas and ground clip
2016+ has special angle to install to help antennas underneath.
Each time battery is disconnected from LB, computer needs to be connected to the power adapter to power on again.
==='''Key Points'''===
*Lithium-ion polymer batteries
*Batteries can only be serviced by AASP
*Mid2012-2015 top case includes many parts such as battery, trackpad, keyboard
*2016+ does not chime
*2016+ has Auto Boot
*Batteries must be covered and disconnected from LB whenever bottom case is removed
*Wobble on flat surfaces if the bottom case screws are not properly installed
*Some models require Trackpad Calibration Check after reassembly
*2016+ Auto Boot must be disabled before serve and re-enabled after service.
[[:Category:Certification Training|Category:Certification Training]]
<br />
sv3vwnh07jrcix875fa7iagpyiaz0m9
ACPI power states
0
754
1603
1602
2020-08-31T18:43:03Z
Piernov
10
Category:Mac
1603
wikitext
text/x-wiki
{| class="wikitable"
|+
!ACPI state
!Intel state
!Apple state
!Description
!Apple enable signal
!Power well
!Since platform
|-
| rowspan="2" |G3
| rowspan="2" |G3
|G3C
| rowspan="2" |Mechanical off
|Always on with coin cell battery, main battery or AC adapter
|*RTC
|
|-
|G3H
|Always on with main battery or AC adapter
|*_G3H
|
|-
|S5
|S5
|S5
|Soft off
|SMC_PM_G2_EN, not asserted when off on battery only
|*_S5
|
|-
|
|DeepSx
|SUS
|Low power sleep state
|PM_SLP_SUS_L
|*_SUS
|6-series chipset (Sandy Bridge)
|-
|S4
|S4
|S4
|Hibernation (Suspend to disk)
|PM_SLP_S5_L
|*_S4
|
|-
|S3
|S3
|S3
|Standby (Suspend to RAM)
|PM_SLP_S4_L
|*_S3
|
|-
|S0
|S0
|S0
|On
|PM_SLP_S3_L
|*_S0
|
|-
|
|S0i3
|S0I3
|Processing instructions
|PM_SLP_S0_L
|CPU VCore
|100-series chipset (Skylake)
|}
https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Power_states
[[Category:Mac]]
nzjxq5cdbsfwf0q5nj9j6hu0s5cwmtp
ALL SYS PWRGD
0
206
607
606
2020-02-02T16:49:10Z
Piernov
10
2011-2015
607
wikitext
text/x-wiki
{{DISPLAYTITLE:ALL_SYS_PWRGD}}
In Apple schematics for at least 2011 to 2015 boards, the "ISL Version" of "S0 Rail PGOOD Circuitry" is usually no-stuff (everything with BOM option S0PGOOD_ISL should be absent from a production board).
Instead, the "BJT Version" is used, as well as the bunch of resistors to the right of "ISL Version" (without BOM option S0PGOOD_ISL).
For example on 820-3332 (pictured here), ALL_SYS_PWRGD is pulled up by PP3V3_S0_PWRCTL (which is PP3V3_S0), and Q7950 can pull down ALL_SYS_PWRGD if one of its input signal is missing. Any of the other PGOOD signal going through R7963 to R7968 can also pull it down.
As for Q7950, all of the bases of the BJT (left part of Q7950) must be 0.6V-0.7V in order to pull low the gate of the MOSFET (right part of Q7950) so that it doesn't pull ALL_SYS_PWRGD to ground.
[[File:ALL SYS PWRGD on 820-3332.png|thumb|ALL_SYS_PWRGD on 820-3332]]
[[Category:Mac]]
nidz6btp14lrof2ol2681hp2oybabw6
ASD List
0
45
6298
5498
2021-12-10T14:13:39Z
Chrisb
1
Removed retina from air
6298
wikitext
text/x-wiki
ASD 3S108<br><br>
iMac (Early 2006 17-inch)<br>
iMac (Early 2006 20-inch)<br>
MacBook Pro (17-inch)<br>
Mac mini (Early 2006)<br>
MacBook (13-inch)<br>
iMac (Mid 2006 17-inch)<br>
iMac (17-inch Late 2006)<br>
iMac (17-inch Late 2006 CD)<br>
iMac (20-inch Late 2006) iMac (24-inch)<br><br>
ASD 3S116<br><br>
MacBook (13-inch Mid 2007)<br>
MacBook Pro (15-inch Core 2 Duo)<br>
MacBook Pro (17-inch Core 2 Duo)<br>
MacBook (Late 2006)<br>
MacBook Pro (15-inch 2.4/2.2GHz)<br>
MacBook Pro (17-inch 2.4GHz)<br>
iMac (24-inch Mid 2007)<br>
iMac (20-inch Mid 2007)<br>
Mac mini (Mid 2007)<br><br>
ASD 3S123<br><br>
iMac (20-inch Early 2008)<br>
iMac (24-inch Early 2008)<br>
MacBook (13-inch Early 2008)<br>
MacBook Pro (15-inch Early 2008)<br>
MacBook Pro (17-inch Early 2008)<br>
Mac Pro (Early 2008)<br>
MacBook (13-inch Late 2007)<br><br>
ASD 3S132<br><br>
MacBook Air (Late 2008)<br>
MacBook (13-inch, Aluminum, Late 2008)<br>
MacBook Pro (15-inch, Late 2008)<br>
MacBook (13-inch, Early 2009)<br>
MacBook Pro (17-inch, Early 2009)<br>
iMac (20-inch, Early 2009)<br>
iMac (24-inch, Early 2009)<br>
Mac Mini (Early 2009)<br>
Mac Pro (Early 2009)<br>
iMac (20-inch, Mid 2009)<br>
MacBook Air (Mid 2009)<br>
MacBook (13-inch, Mid 2009)<br>
MacBook Pro (13-inch, Mid 2009)<br>
MacBook Pro (17-inch, Mid 2009)<br>
MacBook Pro (15-inch, Mid 2009)<br>
MacBook Pro (15-inch, 2.5.3GHz, Mid 2009)<br><br>
ASD 3S138<br><br>
MacBook (13-inch, Mid 2010)<br>
MacBook Pro (13-inch, Mid 2010)<br>
MacBook Pro (17-inch, Mid 2010)<br>
MacBook Pro (15-inch, Mid 2010)<br>
MacBook (13-inch, Late 2009)<br>
iMac (21.5-inch, Late 2009)<br>
iMac (27-inch, Quad Core, Late 2009)<br>
Mac mini (Late 2009)<br><br>
ASD 3S139<br><br>
Mac mini (Mid 2010)<br><br>
ASD 3S140<br><br>
iMac (21.5-inch, Mid 2010)<br>
iMac (27-inch, Mid 2010)<br><br>
ASD 3S142<br><br>
MacBook Air (13-inch, Late 2010)<br>
MacBook Air (11-inch, Late 2010)<br><br>
ASD 3S143<br><br>
Mac Pro (Mid 2010)<br><br>
ASD 3S144<br><br>
MacBook Pro (13-inch, Early 2011)<br>
MacBook Pro (15-inch, Early 2011)<br>
MacBook Pro (17-inch, Early 2011)<br><br>
ASD 3S145<br><br>
iMac (27-inch, Mid 2011)<br>
iMac (21.5-inch, Mid 2011)<br><br>
ASD 3S146<br><br>
MacBook Air (13-inch, Mid 2011)<br>
MacBook Air (11-inch, Mid 2011)<br>
Mac mini (Mid 2011)<br><br>
ASD 3S147<br><br>
iMac (21.5-inch, Late 2011)<br><br>
ASD 3S148<br><br>
MacBook Pro (13-inch, Late 2011)<br>
MacBook Pro (15-inch, Late 2011)<br>
acBook Pro (17-inch, Late 2011)<br><br>
ASD 3S150<br><br>
MacBook Pro (13-inch, Mid 2012)<br>
MacBook Pro (15-inch, Mid 2012)<br>
MacBook Pro (Retina, Mid 2012)<br>
MacBook Air (11-inch, Mid 2012)<br>
MacBook Air (13-inch, Mid 2012)<br><br>
ASD 3S152<br><br>
iMac (27-inch, Late 2012)<br>
iMac (21.5-inch, Late 2012)<br>
Mac mini (Late 2012)<br>
Mac mini Server (Late 2012)<br>
MacBook Pro (Retina, 13-inch, Late 2012)<br><br>
ASD 3S155<br><br>
MacBook Pro (Retina, 15-inch, Early 2013)<br>
MacBook Pro (Retina, 13-inch, Mid 2012)<br>
MacBook Pro (Retina, 13-inch, Early 2013)<br>
iMac (21.5-inch, Early 2013)<br>
MacBook Pro (13-inch, Mid 2012)<br>
MacBook Pro (15-inch, Mid 2012)<br>
MacBook Pro (Retina, Mid 2012)<br>
MacBook Air (11-inch, Mid 2012)<br>
MacBook Air (13-inch, Mid 2012)<br><br>
ASD 3S156<br><br>
MacBook Air (11-inch, Mid 2013)<br>
MacBook Air (13-inch, Mid 2013)<br><br>
ASD 3S159<br><br>
Mac Pro (Late 2013)<br><br>
ASD 3S162<br><br>
MacBook Pro (Retina, 13-inch, Late 2013)<br>
MacBook Pro (Retina, 15-inch, Late 2013)<br>
MacBook Pro (Retina, 13-inch, Mid 2014)<br>
MacBook Pro (Retina, 15-inch, Mid 2014)<br>
ASD 3S170
<big><u>You will need to ask in channels</u></big> for this one or make it using this [http://web.archive.org/web/20200202143909/http://honestgeek.ca/2018/10/19/asd-for-2015-systems/ guide]. The BootROM headers and display backlight tests need to be disabled as they will fail every time.<br>
MacBook Pro (Retina, 13-inch, Late 2015)<br>
MacBook Pro (Retina, 15-inch, 2015)<br>
ASD 3S171
<big><u>You will need to ask in channels</u></big> for this one or make it using this [http://web.archive.org/web/20200202143909/http://honestgeek.ca/2018/10/19/asd-for-2015-systems/ guide]. The BootROM headers and display backlight tests need to be disabled as they will fail every time. <br>
MacBook Air (11-inch, 2015)<br>
MacBook Air (13-inch, 2015-2017)<br>
<br />
[[Category:Mac]]
fccgf6ubybqq5qckaq0gop3cgbo1i3b
ASD Sensor Names
0
208
614
609
2020-02-02T17:33:46Z
Chrisb
1
Chrisb moved page [[AHT Sensor Names]] to [[ASD Sensor Names]] without leaving a redirect
609
wikitext
text/x-wiki
#REDIRECT [[SMC Sensor Codes]]
5ut2mu8gm3n1iv1pfzcrlwcw7bhsngn
A Software Update Is Required To Connect To iPhone Loop
0
2203
6667
6666
2022-11-05T16:41:58Z
Chrisb
1
6667
wikitext
text/x-wiki
WIP
Install Xcode
<br />
2qyaerxhvvzh84gqkp1u29pva0epgvc
Air Soldering Tips
0
1916
5641
2021-03-03T04:15:10Z
Chrisb
1
Chrisb moved page [[Air Soldering Tips]] to [[Hot Air Soldering Tips]]: Added hot for better search ability.
5641
wikitext
text/x-wiki
#REDIRECT [[Hot Air Soldering Tips]]
dybr423i2dro4c6uuwvxofxr48frx58
Amtech
0
1688
5030
5029
2020-10-17T13:55:19Z
Satyricon
21
5030
wikitext
text/x-wiki
[[File:Real vs Fake Amtech flux package.jpg|thumb|227x227px|Top Amtech flux is a knock off. The bottom is genuine. ]]
Our favourite flux.
But there are so many knock offs. How to find out if you have a real one?
#The real flux costs around 25USD / £20 or more.
#The real flux does not have Chinses writing and hologram on it
#If you shine UV light on the rea one, it will react to it, and shine bright.
#The real Amtech flux flows more creamy, where as the fake one is more chunky. [[File:Top Amtech flux is a knock off. The bottom is genuine..jpg|thumb|226x226px|Top Amtech flux is a knock off. The bottom is genuine.]]
<br />Other article to note:
https://www.eevblog.com/forum/chat/is-this-amtech-flux-i-bought-genuine/
https://www.microsoldering.com/amtech-nc-559-flux-fake-versus-real/
rckcn4c7odmcmkwsymuidzmhi6wsj8q
Angle sensor circuitry
0
2239
6913
6912
2023-09-14T12:50:44Z
Alex6337
28
Modified titles sizes
6913
wikitext
text/x-wiki
This page describes layers and connections to '''repair a Lid Angle Sensor on A2442 (14" MBP ) & A2681 (M2 MBA)'''
Special Thanks to https://iboffrcc.com/ for the pictures !
== This is the A2442 (14" MBP) repair picture for the Lid Angle sensor ==
[[File:A2442LidAngle.jpg|alt=Lid Angle sensor 14" MBP|frameless|600x600px]]
== This is the A2681 (M2 MacBook Air) repair picture for the Lid Angle sensor ==
[[File:LidAngleSensorMBAM2.jpg|frameless|600x600px]]
== Examples of repairs ==
[[File:LidAnglesensorepair.jpg|frameless|600x600px]]
5h3mj84i5c1ifv2g4lfyvb4mhhmzsy4
Anti-Glare Screen Glaze Removal
0
1919
5899
5898
2021-06-04T20:27:53Z
Crumblenaut
317
/* Step-by-Step Deglaze Instructions! */ Gallery edits
5899
wikitext
text/x-wiki
===Issue & Scope===
All MacBook Pros released from 2009 to current with glass layers over their display panels (sold as "glossy" as opposed to the true matte screens which have exposed display panel surfaces without a glass cover) were coated with an anti-reflective glaze that will break down over time through physical abrasion and UV exposure. This degradation is commonly referred to as "Staingate" and looks reeeeal bad.
Apple has a repair and replacement program in place for models sold in the past four years, but any older MacBooks will not be covered. [https://www.macrumors.com/2019/12/20/macbook-pro-anti-reflective-repair-program/ Source].
<br />
===Solution===
You will find reports online that folks were able to remove degraded anti-glare coatings from screens using common cleaners like isopropyl alcohol and 409 Multi-Surface cleaner as well as common household products like toothpaste and mouthwash.
Those are all solutions for noobs.
If you want to REALLY deglaze the screen - completely, perfectly, and in a way that takes a reasonable amount of time - your best bet is a product called [https://www.amazon.com/Armour-15-0250-Etch-24-oz/dp/B00OQFQE32/ Armour Etch].
'''BEFORE ORDERING ARMOUR ETCH OR ATTEMPTING TO DEGLAZE ANYTHING, PLEASE READ THIS ENTIRE ARTICLE AND TAKE ALL PROPER PRECAUTIONS.'''
'''If you do not you may really damage the screen you're working on as well as yourself and the other living things and inanimate objects around you.'''
<br />
<br />
===WARNING===
Armour Etch, from a chemical and biological perspective, is absolutely fucking terrifying. The warning - ''and this is just the text of the partial warning printed on the FRONT of the bottle'' - reads as follows:
DANGER:
MAY BE FATAL OR CAUSE PERMANENT DAMAGE TO SKIN, EYES, OR RESPIRATORY TRACT.
VAPOR HARMFUL.
CAUSES SEVERE BURNS ''WHICH MAY NOT BE IMMEDIATELY PAINFUL OR VISIBLE.''
(See additional labeling on back panel.)
This goes without saying, but if you choose to follow these suggestions, you will be doing so AT YOUR OWN RISK and will be personally responsible for ensuring your own safety and the safety of those around you.
You should not purchase or use this substance without first reviewing its [https://media.jacksonsart.com/pdf/armour_etch_sds.pdf material safety data sheet].
When ordering this item, you should also order some 2.5% calcium gluconate gel in case of accidental exposure such as [https://smile.amazon.com/gp/product/B008YGHVOK Calgonate]. This is a single-use tube, so it would be wise to grab a few of them and hopefully never have to use even one. You'll make up the expense for all of these supplies with a single service. <blockquote>''THIS IS NOT MEDICAL ADVICE AND I AM NOT A MEDICAL PROFESSIONAL - YOUR PREPARATION PRIOR TO HANDLING HAZARDOUS MATERIALS IS YOUR OWN RESPONSIBILITY. This is community-sourced information and is also in no way endorsed by any of the founders or maintainers of logi.wiki.''</blockquote>All of that said, this is an arts and crafts supply and so whether or not it's educated, wise, or personally responsible, folks do use it in settings like [https://www.youtube.com/watch?v=Si96k-qfR54 this]. But seriously, protect yourself.
ALSO it's important to note that Armour Etch WILL cause visible oxidation damage the aluminum finish of any surfaces it comes into contact with, so ensuring that you've protected ALL aluminum surfaces is critical.
As with any new-to-you or experimental process, you should definitely familiarize yourself with this process using DONOR EQUIPMENT. Screen assemblies with damaged panels but intact glass with a degraded glaze would be ideal.<br />
===Required Supplies===
For the process outlined below, you will need the following supplies:
*Armour Etch
*Paper towels - a lot of them
*Cotton swabs
*Wide blue painter's tape
*99% isopropyl alcohol
*70% isopropyl alcohol
*Windex or similar glass cleaner
*A medium-to-large, synthetic soft-bristled paintbrush
You will also need, at minimum, the following safety equipment:
*Nitrile gloves - 6mil or greater thickness strongly recommended as you do NOT want them to rip - plus some spares
*Safety goggles
*Long sleeves, pants, closed toe-shoes, etc.
*A fan or an engaged and reliable HVAC system to ensure that fumes are exhausted properly
*A coworker present to provide emergency assistance if you do have any accidental exposure.
The bottom line here is that Armour Etch is a VERY dangerous substance and you need to be sure you have NO exposed skin when working with Armour Etch and that you're doing so in a place with substantial airflow.
<br />
<br />
===Step-by-Step Deglaze Instructions!===
#First, get your personal protective equipment game in order.
#*ALWAYS WEAR GLOVES, SAFETY GOGGLES, LONG SLEEVES, PANTS, AND CLOSED SHOES.
#*ALWAYS WORK WITH ARMOUR ETCH IN A WELL-VENTILATED LOCATION WITH CONSISTENT AIRFLOW.
#*Armour Etch is extremely hazardous and WILL injure you if you do not protect yourself and those around you properly.
#Second, get your work space in order.
#*Be sure the area where you'll be working is free of clutter and that it's not holding anything that isn't going to be actively used for the deglazing process
#*The idea is to avoid accidental cross-contamination and surprise exposure after the fact.
#*In my experience, Armour Etch tends to sneak onto your gloves and then get deposited on anything you might have to touch to move out of the way.
#Remove the screen assembly from the MacBook.
#*This isn't TECHNICALLY necessary, but it makes the task as well as the cleanup MUCH easier, and there's just SO MUCH more that could go wrong if you do this with the screen attached.
#Clean the screen's surface thoroughly first, finishing it off with 99% isopropyl alcohol.
#Cover ALL exposed aluminum with residue-free tape like blue painter's tape.
#*This includes not only the aluminum bezel but the back of the screen as well, so having thicker tape for that is convenient.
#*Also cover the black plastic antenna bar, doing your best to make a seal between the rubber surround and the antenna bar so that NO Armour Etch or other solvent is able to get into the area with the LCD panel circuitry and the antenna bar.
#*Armour Etch has not seemed - in my experience - to damage the rubber bezel or plastic, but it's better safe than sorry and keeping it covered means fewer things to clean.
#Apply the scary AF Armour Etch with your paintbrush, in a swirling motions, covering the entirety of the exposed glass surface.
#Continue to occasionally swirl the Armour Etch in place with the paintbrush over the course of approximately five minutes.
#*If the screen's glaze is almost entirely disintegrated you may get away with keep it on for less time.
#*If the screen has a few deglazed spots but otherwise it's mostly intact, you may need to keep the Armour Etch in place for more like 7-10 minutes.
#Remove ALL of the Armour Etch you are capable of removing with a series of dry paper towel, using the paper towels and the Armour Etch to abrase the remaining glaze off of the screen glass with the slowly-drying, semi-abrasive Armor Etch.
#*You do not need to apply much pressure at all here - just the friction of the paper towel on the Armour Etch on the glass should do the trick. Remember that you're working on a fragile piece of glass above a fragile LCD panel.
#*DO NOT FREAK OUT if you see swirls develop in the glass. It can look like you may have etched the glass permanently, but unless you left the stuff on for ten or more minutes you have not.
#Once ALL of the Armour Etch is removed from the glass, use new paper towels to remove any of the stuff that got on any blue taped areas as well.
#Clean the display glass and all blue-taped surfaces with ~70% isopropyl alcohol, clean your gloves with 70% isopropyl alcohol as well to be sure to avoid cross-contamination, and set the display assembly aside on a totally clean surface.
#*After the 70% cleaning, the streaks and swirls left over from the Armour Etch should vanish pretty effectively.
#Clean your working area and gloves again to avoid cross-contamination.
#Remove all blue tape from your screen assembly and clean your gloves... ''again''.
#Use paper towels and cotton swabs to clean around the rubber bezel, being sure to get EVERYTHING up - do so with the paper towels and cotton swaps dry at first, and then get it again with swabs wetted with 70% isopropyl alcohol.
#Once the screen is totally clean and looks ''almost'' perfect - there should at least be no remaining Armour Etch anywhere on it at this point - clean the glass with Windex or an equivalent streak-free glass cleaner.
#Congratulations! You've deglazed a screen! Now install it back in the system and admire your excellent work!
<gallery mode="packed-hover">
File:Prepared Workspace.jpg|alt=A Prepared Workspace|A Prepared Workspace
File:Deglaze 2 - Strapped for Protection.jpg|alt=Properly Protected Edges and Backplate|Properly Protected Edges and Backplate
File:Deglaze 3 - Screen Before.jpg|alt=Screen Before Cleaning|Screen Before Cleaning
File:Deglaze 4 - Screen Alcohol.jpg|alt=Screen Cleaning with 99% Isopropyl Alcohol|Screen Cleaning with 99% Isopropyl Alcohol
File:Deglaze 5 - Prepared Screen.jpg|alt=Screen Properly Prepared for Armour Etch|Screen Properly Prepared for Armour Etch
File:Deglaze 6 - Armour Etch Application.jpg|alt=Applying Armour Etch|Applying Armour Etch
File:Deglaze 7 - Waiting with Armour Etch.jpg|alt=Armour Etch Doing Its Work|Armour Etch Doing Its Work
File:Deglaze 8 - Armour Etch Congealing.jpg|alt=Armour Etch Congealing / Partially Removed|Armour Etch Congealing / Partially Removed
File:Deglaze 9 - Armour Etch Wiped 1.jpg|alt=Armour Etch After Being Wiped with a Paper Towel|Armour Etch After Being Wiped with a Paper Towel
File:Deglaze 10 - Armour Etch Wiped 2.jpg|alt=Screen After Armour Etch and Before 70% Isopropyl Alcohol (Looks real bad, right?)|Screen After Armour Etch and Before 70% Isopropyl Alcohol (Looks real bad, right?)
File:Deglaze 11 - Isopropyl 70 Cleaning.jpg|alt=Removing Armour Etch with 70% Isopropyl Alcohol (Phew! Much better.)|Removing Armour Etch with 70% Isopropyl Alcohol (Phew! Much better.)
File:Deglaze 12 - Edges 1.jpg|alt=Armour Etch Trapped in the Edges|Armour Etch Trapped in the Edges
File:Deglaze 13 - Edges 2.jpg|alt=Armour Etch Under the Antenna Bar Cover|Armour Etch Under the Antenna Bar Cover
File:Deglaze 14 - Screen Finished.jpg|alt=A Fully Deglazed Screen! (Ready to be reinstalled and given a final clean with Windex)|A Fully Deglazed Screen! (Ready to be reinstalled and given a final clean with Windex)
</gallery><br />
==Non-Dangerous method using Diamond paste and universal cleaner==
you need:
#Mr Proper cleaning wipes or similar. W5 works the same.
#Diamond paste. W1 or W1.5 for bad stains, W0.5 for finish. Alays test on broken screen before using
#Wide plastic spudger or card
#Hard cotton wipes(simply to contain diamond paste)
Thats pretty much it. First go with W1.5 all over the screen to damage the glare. Then go with wipes, use spudger to clean corners. Diamond paste will help to gemove harder areas. Do not use anything harder than W2, this will leave scratches on glass.
Usually takes 15-30 min for 15 inch screen.
<br />
gfg9l0nwfou7pfwlc21odsidngsmwdz
Apple Flat Rate Repair Pricing
0
1928
5684
2021-03-19T14:10:52Z
Chrisb
1
Chrisb moved page [[Apple Flat Rate Repair Pricing]] to [[Apple MacBook Flat Rate Repair Pricing]]
5684
wikitext
text/x-wiki
#REDIRECT [[Apple MacBook Flat Rate Repair Pricing]]
oi2agoprqqnbzweqidzpkba6b75l0de
Apple Hardware Test (AHT) Codes
0
212
624
2020-02-02T18:58:06Z
Inwerp
16
Inwerp moved page [[Apple Hardware Test (AHT) Codes]] to [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes]]: One page for both
624
wikitext
text/x-wiki
#REDIRECT [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes]]
llejwekovjvp60kq0qgmep5ukqeawli
Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes
0
210
5667
623
2021-03-12T05:45:04Z
Crumblenaut
317
Noted my PFM006 results on 820-01958, added communications line note for SMC errors.
5667
wikitext
text/x-wiki
Use [[SMC Sensor Codes]] to interpret '''[[ASD List|Apple Software Diagnostics(ASD)]]''' output. '''ASD''' is available only as a bootable DMG images which should be burned on
'''Apple Diagnostics(AD)''' replaces built-in '''Apple Hardware Test(AHT)''' for devices manufactured after 2013. Some older devices will also load AD instead of AHT if you update the OS or use Option+D to download it online. Many older devices lose AHT after upgrading your OS, since it wipes it from the hard drive and its not available online.
AHT Codes are more complex and give more information on the issue.
The first part is a device name:
*'''4ETH''': Ethernet controller
*'''4IRP''': Main Logic board
*'''4MLB:''' Logic board controller
*'''4PRC''': Processor
*'''4HDD''': Hard disk
*'''4MHD''': External disk
*'''4YDC''': Video card
*'''4SNS''': System sensor
*'''4MOT''': Fan motor
*'''4MEM''': Memory module
*'''4AIR''': AirPort wireless card
Most of them pretty straight-forward except '''4SNS''' which will be follower by either '''V''' (Voltage or Current sensor) or '''T''' for thermal sensor.
*'''A''': Ambient Air Sensor
*'''B''': Battery
*'''C''': Central Processors (CPU)
*'''D''': DC (Direct Current)
*'''e''': PCI-Express Slot
*'''F''': FireWire Port
*'''G''': Graphics Processor (GPU)
*'''H''': Hard Disk
*'''h''': Heat Sink (or Heat Pipe)
*'''L''': LCD display
*'''M''': Memory (or Memory Riser Boards)
*'''m''': Miscellaneous (Peripherals such as a Battery Charger)
*'''N''': North Bridge (Logic Board Controller)
*'''O''': Optical Drives
*'''P''': Power Bus
*'''p''': Power Supply
*'''s''': Trackpad
*'''W''': Airport Wi-Fi Card
For example: '''4SNS'''/1/40000000: '''TA'''00 means Ambient thermal sensor.
If your device is newer than 2013 or you booting it online from some older devices, there's '''AD''' which is much less reliable and kind of helps you to book an appointment in Genius Bar instead of showing the real issue. Use Apple MRI to gather more information.
[[File:Apple_Diagnostics.png|alt=|430x430px]]
{| class="wikitable"
|+
AD Codes
!Code
!Explanation
!Actual Board problem
|-
|ADP000
|No issues found
|
|-
|CNW001…06
|Wifi not detected
|
|-
|NDC001…6
|Camera not detected
|
|-
|NDD001
|USB Overcurrent
|
|-
|NDK001
|Keyboard problem
|
|-
|NDL001
|Bluetooth
|
|-
|NDR001
|Trackpad not detected
|
|-
|NDR003
|
|
|-
|NDR004
|
|
|-
|NDT001
| rowspan="6" |Thunderbolt issue
|
|-
|NDT002
|
|-
|NDT003
|
|-
|NDT004
|
|-
|NDT005
|
|-
|NDT006
|
|-
|NNN001
|A serial number was not detected.
|Don't forget to correct SN/CRC/CleanME
|-
|PFM001
| rowspan="7" |There may be an issue with the System Management Controller (SMC).
Almost always means that there is a short or a missing communications line (data and/or clock) between a component and the SMC.
Often means thermal or current sensor failure.
Most common problem after water damage.
|
|-
|PFM002
|
|-
|PFM003
|
|-
|PFM004
|
|-
|PFM005
|
|-
|PFM006
|Trackpad on 820-00165
Battery on 820-01958
|-
|PFM007
|
|-
|PFR001
|There may be an issue with the computer's firmware.
|
|-
|PPF001
| rowspan="3" |There may be an issue with the fan.
|
|-
|PPF003
|
|-
|PPF004
|
|-
|PPM001
|There may be an issue with a memory module.
|
|-
|PPM002
| rowspan="14" |There may be an issue with the onboard memory.
|
|-
|PPM003
|
|-
|PPM004
|
|-
|PPM005
|
|-
|PPM006
|
|-
|PPM007
|
|-
|PPM008
|
|-
|PPM009
|
|-
|PPM010
|
|-
|PPM011
|
|-
|PPM012
|
|-
|PPM013
|
|-
|PPM014
|
|-
|PPM015
|
|-
|PPP001
| rowspan="3" |There may be an issue with the power adapter.
|
|-
|PPP002
|
|-
|PPP003
|
|-
|PPR001
|There may be an issue with the processor.
|
|-
|PPT001
|The battery was not detected.
|
|-
|PPT002
| rowspan="2" |The battery will need to be replaced soon. It is functioning normally, but holds less charge than it did when it was new.
|
|-
|PPT003
|
|-
|PPT004
|The battery requires service. The battery is not functioning normally, though you may not notice a change in its behavior or the amount of charge it holds. You can continue to use your battery before it’s checked without harming your computer.
|
|-
|PPT005
|The battery is not installed properly. Shut down and discontinue use. The computer requires service.
|Check battery communication cable on 2015 and later models.
|-
|PPT006
|The battery requires service. The battery is not functioning normally, though you may not notice a change in its behavior or the amount of charge it holds. You can continue to use your battery before it’s checked without harming your computer.
|
|-
|PPT007
|The battery needs to be replaced. The battery is functioning normally but holds significantly less charge than it did when it was new. You can continue to use the battery until you replace it, without harming your computer.
|
|-
|VDC001
| rowspan="6" |There may be an issue with the SD card reader.
|
|-
|VDC003
|
|-
|VDC004
|
|-
|VDC005
|
|-
|VDC006
|
|-
|VDC007
|
|-
|VDH002
| rowspan="2" |There may be an issue with a storage device.
|
|-
|VDH004
|
|-
|VDH005
|Unable to start OS X Recovery.
|
|-
|VFD001
| rowspan="6" |There may be an issue with the display.
|
|-
|VFD002
|
|-
|VFD003
|
|-
|VFD004
|
|-
|VFD005
|
|-
|VFD007
|
|-
|VFD006
|There may be an issue with the graphics processor.
|
|-
|VFF001
|There may be an issue with the audio hardware.
|
|}
ru08ry2a7jiiy052duz8zjj1icsr62g
Apple MacBook Flat Rate Repair Pricing
0
727
6580
5683
2022-09-06T02:49:49Z
IT-Solve
181
spelling
6580
wikitext
text/x-wiki
'''These are guidelines and may not be 100% accurate any longer, but a general idea for expectations and comparison with SC vs. Apple in order to discuss the best option with the customer.'''
Use this manual as a guide while consulting customers on repair options.
Example 1: Edward Scissorhands brings in his 2017 15" MacBook Pro with a broken display. Edward explains that he dropped his MacBook Pro and would like pricing on replacing the display. You price replacement displays and find that an approximate repair quote for this is around $799 if repaired by Shiny Computers. You check Apple tier pricing and find it is slightly cheaper through Apple. You can now advise Edward that it would be best for him to go directly to Apple for this repair as not only will it be slightly cheaper, he is going straight through the manufacturer.
Example 2: Aveline de Grandpre brings in her 2015 13" MacBook Pro Retina. She is experiencing start up issues and after further diagnosis you determine that there is a bad trackpad cable and it does not appear to be caused by Aveline in any way. By looking at the tier pricing, you see that Aveline will be charged $280 through Apple (Flat Rate 1) for the repair. However, we can repair this issue for only $99. You can now confidently advise Aveline that it is more beneficial for her to have Shiny Computers complete the repair.
Apple Flat Rate & Accidental Damage Repair Pricing (Depot)
{| class="wikitable"
|'''Flat Rate 1'''
|'''Flat Rate 2'''
|'''Tier 1'''
|'''Tier 2'''
|'''Tier 3'''
|'''Tier 4'''
|-
|
*Power adapter port
*Right/Left I/O ports
*Flex cables
*Speakers
*Fans
*Microphone
*Wireless cards
*Trackpad
*Removable RAM
*HDD
*Optical drive
*Bottom case (with or without embedded battery)
*Top Case (with or without embedded battery)
*Top case/keyboard/bottom case with embedded battery
*Touch ID
|
*SSD
*MLB
*LCD
(Also includes combination of if there is also Flat Rate 1 repair needed in addition)
|
*RIO/LIO/MPM
*Enclosure
*Bottom case
*Flex cables
*Speaker
*Fan
*Microphone
*Wireless Card
*Removable RAM
*HDD
*Optical drive
*Touch ID
(Not caused by liquid)
|Only 1 of the following:
*LCD
*Top case/keyboard
(Not caused by liquid)
|More than 1 of the following:
*LCD
*Top case/keyboard
(Not caused by liquid)
|Any of the below in addition to any lower tier parts:
*Logic board
*SSD 128GB or higher
(Typically any liquid indicators that are red will fall under this tier regardless of the part)
|}
Flat Rate = Functional failure not customer-induced but out of warranty.
Tier 1 - 4 = Customer-induced damages
Pricing per model
{| class="wikitable"
|
|Flat Rate 1
|Flate Rate 2
|Tier 1
|Tier 2
|Tier 3
|Tier 4
|-
|'''MBA - 2017 or earlier'''
'''13” MBP Retina'''
|$280
|$475
|$280
|$475
|$635
|$755
|-
|'''12” Macbook Retina'''
|$280
|$575
|$280
|$475
|$735
|$975
|-
|'''13” Macbook'''
'''13” MBP with OD'''
|$280
|$475
|$280
|$360
|$520
|$755
|-
|'''13” MBP with TB'''
|$280
|$475
|$310
|$475
|$825
|$1240
|-
|'''15” MBP with OD'''
'''17” MBP'''
|$310
|$575
|$310
|$590
|$760
|$1240
|-
|'''15” MBP Retina'''
|$310
|$575
|$310
|$680
|$1030
|$1475
|-
|'''15/16” MBP with TB'''
|$310
|$795
|$310
|$680
|$1030
|$1475
|}
37w7os7s5sqnn0eyyge1sfn0lxenfxf
Apple Mail Manual Transfer
0
2024
6013
6009
2021-08-13T22:48:16Z
Chrisb
1
Chrisb moved page [[Apple Mail manual transfer]] to [[Apple Mail Manual Transfer]] without leaving a redirect: Title Case
6009
wikitext
text/x-wiki
Library:
.../Accounts (folder) (DO NOT FORGET THIS ONE)
for Mail
.../Mail (folder)
.../Mail Downloads (folder)
.../Containers/com.apple.mail (folder)
.../Preferences/com.apple.accounts.plist (file)
.../Preferences/com.apple.accountsd.plist (file)
.../Preferences/com.apple.mail-shared.plist (file)
.../Preferences/com.apple.MailMigratorService.plist (file)
.../SyncedPreferences/com.apple.mail-com.apple.mail.vipsenders.plist (file)
.../SyncedPreferences/com.apple.mail.plist (file)
for Keychain
.../Keychains (folder)
<br />
htlcbon0slt9sqrx1js7u0qh6c6ix8i
Apple Manufacturing Plant Codes
0
709
5251
1490
2020-11-23T20:09:20Z
Tim
169
Added plant codes and locations
5251
wikitext
text/x-wiki
This is a broad overview i was able to collect of the plant codes and corresponding locations/factories Apple uses.<br>
If you are able to find out more information about a specific code or have completely new ones feel free to commit a change to this list
{| class="wikitable"
|-
!Code!!Factory
|-
|E
|Singapore
|-
|F||Fremont, California, USA/Fountain, Colorado,USA (varying sources)
|-
|FC
|Fountain, Colorado, USA
|-
|XA||Elk Grove/Sacramento, California, USA
|-
|XB
|USA
|-
|QP
|USA
|-
|G8
|USA
|-
|RN||Mexico
|-
|CK||Cork, Ireland
|-
|VM||Foxconn - Pardubice, Czech Republic
|-
|SG||Singapore
|-
|MB||Malaysia
|-
|PT||Korea
|-
|CY
|Korea
|-
|EE||Taiwan
|-
|QT
|Taiwan
|-
|UV
|Taiwan
|-
|FK||Foxconn – Zhengzhou, China
|-
|F1
|Foxconn – Zhengzhou, China
|-
|F2
|Foxconn – Zhengzhou, China
|-
|W8||Shanghai, China
|-
|DL||Foxconn - China
|-
|DM
|Foxconn - China
|-
|DN||Foxconn - Chengdu, China
|-
|YM||Hon Hai/Foxconn - China
|-
|7J
|Hon Hai/Foxconn - China
|-
|1C||China
|-
|4H
|China
|-
|WQ
|China
|-
|WQ
|China
|-
|F7
|China
|-
|C0||Tech Com, Quanta Computer Subsidiary - China
|-
|C3||Foxconn - Shenzhen, China
|-
|C7||Pegatron - Shanghai, China/Foxconn, Changhai, China (varying sources)
|-
|RM||Refurbished/remanufactured
|-
|F5K
|Flextronics - USA
|-
|CK2
|Cork, Ireland
|-
|C02
|Tech Com, Quanta Computer Subsidiary - China
|-
|C07
|Tech Com, Quanta Computer Subsidiary - China
|-
|YM0
|Hon Hai/Foxconn - China
|-
|C17
|China
|-
|C1M
|China
|-
|C2V
|China
|-
|C2Q
|China
|}
cvzig5vkkwbwxok8ahlwo6nuhwtfsv9
Apple Mobile Device Public Repair Pricing
0
748
5904
5903
2021-06-12T22:17:32Z
DeTigerBoy
428
wrong document
5904
wikitext
text/x-wiki
These are the public repair prices available through Apple Support.
In most cases, we are able to beat Apple's repair pricing. However, if Apple can repair the part for lower than we can offer, or in some cases we cannot at all, you will need to refer to Apple.
Pricing is as of 12/23/20<br />
{| class="wikitable"
|+
!Device
!Front Glass
!Back Glass/Other Repairs
!Battery
|-
|'''iPhone'''
|
|
|
|-
|12 Pro Max
|329
|599
|69
|-
|12 Pro
|279
|549
|69
|-
|12
|279
|449
|69
|-
|12 Mini
|229
|399
|69
|-
|iPhone SE 2020
|129
|269
|49
|-
|11 Pro Max
|329
|599
|69
|-
|11 Pro
|279
|549
|69
|-
|11
|199
|399
|69
|-
|XS Max
|329
|599
|69
|-
|XS
|279
|549
|69
|-
|XR
|199
|399
|69
|-
|X
|279
|549
|69
|-
|8 Plus
|169
|399
|49
|-
|8
|149
|349
|49
|-
|7 Plus
|169
|349
|49
|-
|7
|149
|319
|49
|-
|6s Plus
|169
|329
|49
|-
|6s
|149
|299
|49
|-
|6 Plus
|149
|329
|49
|-
|6
|129
|299
|49
|-
|SE
|129
|269
|49
|-
|5/5c/5s
|129
|269
|79
|-
|4s
|n/a
|149
|79
|-
|4
|n/a
|199
|
|-
|
|
|
|
|-
|'''Watch'''
|
|
|
|-
|Series 5 - GPS Alum/Nike
|299
|n/a
|79
|-
|Series 5 - Cell Alum/Nike
|349
|n/a
|79
|-
|Series 5 - Cell Stainless/Hermes
|399
|n/a
|79
|-
|Series 5 - Edition Titanium
|499
|n/a
|79
|-
|Series 5 - Edition Cermamic
|800
|n/a
|79
|-
|Series 4 - GPS Alum
|299
|n/a
|79
|-
|Series 4 - Cell Alum
|349
|n/a
|79
|-
|Series 4 - Stainless, Hermes
|399
|n/a
|79
|-
|Series 3 - GPS Alum
|159
|n/a
|79
|-
|Series 3 - Cell Alum
|229
|n/a
|79
|-
|Series 3 - Stainless Steel/Hermes
|329
|n/a
|79
|-
|Series 3 - Ceramic
|800
|n/a
|79
|-
|Series 2 - Alum
|229
|n/a
|79
|-
|Series 2 - Stainless, Hermes
|249
|n/a
|79
|-
|Series 2 - White Ceramic
|800
|n/a
|79
|-
|Series 1 - 2nd Gen Alum
|199
|n/a
|79
|-
|Sport - 1st Gen
|199
|n/a
|79
|-
|1st Gen
|249
|n/a
|79
|-
|Hermes - 1st Gen
|249
|n/a
|79
|-
|Edition - 1st Gen
|2800
|n/a
|79
|-
|
|
|
|
|-
|'''iPad'''
|
|
|
|-
|Pro - 12.9" 3rd Gen
|649
|649
|99
|-
|Pro - 11"
|499
|499
|99
|-
|Pro - 12.9" 1/2 Gen
|599
|599
|99
|-
|Pro - 10.5"
|449
|449
|99
|-
|Pro - 9.7"
|379
|379
|99
|-
|5th/6th/7th Gen
|249
|249
|99
|-
|4th/3rd Gen
|299
|299
|99
|-
|1st/2nd Gen
|249
|249
|99
|-
|Air 1
|249
|249
|99
|-
|Air 2
|299
|299
|99
|-
|Air 3
|379
|379
|99
|-
|Mini 3/4/5
|299
|299
|99
|-
|Mini 1/2
|199
|199
|99
|-
|
|
|
|
|-
|Pencil 1st/2nd Gen
|n/a
|n/a
|29
|-
|Airpods - 1st Gen
|
|Lost - $69/each
|$49/each
|-
|
|
|
|
|-
|'''iPod - if available, select models/gens'''
|
|
|
|-
|Shuffle
|n/a
|39
|39
|-
|nano
|n/a
|99
|59
|-
|Classic - L2009, 160GB
|n/a
|299
|149
|-
|Touch
|129
|129
|79
|-
|
|
|
|
|}
0dgvz5xb5kpi8b9ndxd5zouh4oppsf2
Apple Public Repair Pricing
0
1929
5686
2021-03-19T14:11:32Z
Chrisb
1
Chrisb moved page [[Apple Public Repair Pricing]] to [[Apple Mobile Device Public Repair Pricing]]
5686
wikitext
text/x-wiki
#REDIRECT [[Apple Mobile Device Public Repair Pricing]]
p9x4l99xnnsinsnbbg6mt8hnretuge4
Apple Quality Programs
0
1423
5519
5518
2021-01-20T17:10:42Z
Alan.l
19
/* iPhone */
5519
wikitext
text/x-wiki
==MacBook==
===MacBook Pro: Distorted video or no video issues (NVIDIA GeForce 8600M GT)===
https://support.apple.com/en-us/HT203254<br>
Solution: replace defective G84-602-A2 (dark underfill) GPU with fixed revision G84-603-A2 (white underfill)
===MacBook Pro (15-inch, Mid 2010): Intermittent black screen or loss of video===
http://web.archive.org/web/20141121113458/http://support.apple.com/en-us/HT203554<br>
Solution: replace C9560 with aluminum polymer or MLCC capacitor
===MacBook Pro Repair Extension Program for Video Issues 15" 2011 A1286===
https://web.archive.org/web/20150220164447/https://www.apple.com/support/macbookpro-videoissues/
<br>solution 1: demux to disable the GPU using dosdude method [https://doslabelectronics.com/Demux Link] or use CMIzapper Tiresias "the GPUkiller" solution [http://www.cmizapper.com/products/tiresias-gpukiller.html Link].
<br>solution 2: replace with 820-3330 logic board.
===MacBook Pro Repair Extension Program for Video Issues 15" A1398 Mid 2012 - Early 2013===
https://web.archive.org/web/20150220164447/https://www.apple.com/support/macbookpro-videoissues/
<br>solution: Resolder U8900 with leaded solder. Triple check all joints under a microscope.
===13-inch MacBook Pro Display Backlight Service Program===
https://www.apple.com/support/13-inch-macbook-pro-display-backlight-service/
<br>solution: replace the entire screen assembly or replace/repair backlight flex cable.
==iPhone==
===iPhone 6 & 6 plus Touch Disease===
https://www.apple.com/support/iphone6plus-multitouch/
<br>solution: remove the black touch chip (Meson) using heat, run a micro jumper (M1) to the damaged pad and put a new chip on. The problem goes away once this has been done.
===iPhone 6s and iPhone 6s Plus Service Program for No Power Issues===
https://support.apple.com/iphone-6s-6s-plus-no-power-issues-program
<br>solution: replace tristar.
===iPhone 8 Logic Board Replacement Program===
https://support.apple.com/iphone-8-logic-board-replacement-program
<br>Problem: cpu disconnect on logic board marked H3K5. solution: reball cpu and it will work again.
<br />
==iPad==
===iPad Air (3rd generation) Service Program for Blank Screen Issue===
https://support.apple.com/ipad-air-3rd-gen-program-for-blank-screen-issue
<br>solution: replace screen assembly. not logic board problem.
o4ou5xx8b96275bbs1jt6lqk163pxaq
Apple SSD connectors and adapters list
0
1924
7126
7121
2024-06-22T15:25:07Z
Joesipaq
20
added ssd model
7126
wikitext
text/x-wiki
==Replaceable SSDs==
{| class="wikitable"
|+
!Gen.1 6I12 Pins
!Gen.2 7I17 Pins
!Gen.3&4 12I16 Pins
!<nowiki>Gen.5 22|34 Pins</nowiki>
|-
|[[File:Macbook SSD Gen1.png|frameless|318x318px]]
|[[File:Macbook SSD Gen2.png|frameless]]
|[[File:Macbook SSD Gen3 4.png|frameless|351x351px]]
|[[File:macssdgen5.png|frameless]]
|-
|SATA III 6 Gb/s
|SATA III 6 Gb/s
|AHCI, PCI x2&x4
|PCIe x4
|-
|MacBook Air 2010L/2011M 11"&13" (A1369,A1370)<br />
|MacBook Air 2012 11" & 13" (A1465, A1466)
MacBook Pro 2012L 13" & 15" (A1425, A1398)
iMac 2012L 2013E 21" & 27" (A1418, A1419)
|MacBook Air 2013-2017 11", 13"(A1465, A1466)
MacBook Pro 2013L-2015E 13", 15"(A1502, A1398)
iMac 21" & 27" 2014-2017(A1418, A1419) (Fusion)
'''Please note: no connector on HDD version of iMac'''
|MacBook Pro 2016-2017 2TBT
|-
|[https://www.ebay.com/itm/181915987093 Data Recovery kit (SATA/USB Adapter)]
[https://www.ebay.com/itm/233743974229 M.2 NGFF Adapter]
|[https://www.ebay.com/itm/253578524651 Data Recovery kit (SATA/USB Adapter)]
[https://www.ebay.com/itm/123940200871 M.2 NGFF Adapter] iMac & Macbook Pro
[https://www.ebay.com/itm/184692280150 mSATA Adapter] '''A1425-Only'''
[https://www.ebay.com/itm/123147457213 M.2 NGFF Adapter] '''Air-Only!'''
|[https://www.ebay.com/itm/175850962311 Data Recovery kit] (USB Adapter)
Cheaper Desktop [https://www.ebay.com/itm/265017009461 PCIE Card]
[https://www.ebay.com/itm/355395878517 M.2 NVME Adapter]
'''WARNING''':
for iMac please put capton tape on back side of m.2 connector
|Known working adapter: NFHK
[https://www.ebay.com/itm/175850904526 M.2 NVME 2240 Adapter]
|-
|Any brand M.2 SATA 2232..2280 SSD B-Key
|A1425 fits only m.2 2260 SSD or mSATA
|m.2 NVME 2280
2013/2014 devices need Bios update for nvme support
(simply install High Sierra on original drive) once.
[https://www.samsung.com/semiconductor/minisite/ssd/download/tools/ Samsung Firmware update] might be necessary
Fix kernel panic on wake issue:
sudo pmset -a hibernatemode 0 standby 0 autopoweroff 0
Kernel panic on wake should be fixed with the firmware update of
Big Sur
|Known working SSD: Sabrent Rocket 2240
2240 SSDs are difficult to obtain but some use 2280 which work very well but protrude from the adapter and are taped to the side
|}'''Gen.5 OEM Compatibility:'''
Macbook Pro 2016 (820-00875):
656-0041, 656-0041A, 656-0042, 656-0042A, 656-0043, 656-0043A, 656-0044, 656-0044A,656-0045, 656-0045A, 656-0046A, 656-0046B, 656-0066A, 656-0069A, 656-0070A
All drives from 2016 model are compatible with 2017 model.
Macbook Pro 2017-Only (820-00840):
656-0067A, 656-0074A, 656-0074B, 656-0074C, 656-0074D, 656-0074E, 656-0076B
MacBook Pro 2017 model SSDs that are compatible with 2016:
656-0072A
Piernov: Note that the SSD_BOOT_L/SSD_PWR_EN_L circuit is different between 820-00875 (2016) and 820-00840 (2017). Only the schematics for 820-00875 is available, in this one U8640/R8645 are populated while R8641/R8642 are not. On the 820-00840 it's the opposite.
[[File:A1708 2016 to 2017 SSD MOD.png|none|thumb|605x605px|to make 2017 SSD work on 2016 board, simply remove stuffed components and add NOSTUFF + R8620|alt=]]
[https://beetstech.com/blog/apple-proprietary-ssd-ultimate-guide-to-specs-and-upgrades long article with more detailed information]
==Soldered SSDs==
<br />
===T2 Macs===
T2 use Monolith SSD chips, combined into sort of RAID volume. Known method of replacement - use same board as a donor and keep IC position on board or preprogram NAND with [https://www.jcprogrammer.com/nand-programmer-p13.html JC P13] toolkit.
6fajdlwdfqw6o1wb3y380ur3e131rsi
Apple Self-Service
0
2235
7019
6897
2023-11-26T15:33:48Z
Oros
71
/* Repair IDs */ to be more clear on what type of ID are listed here
7019
wikitext
text/x-wiki
Apple Self-Service information
USA: https://selfservicerepair.com
EU: https://selfservicerepair.eu/
== Repair Manual IDs ==
These are used to verify before you can place some parts in the cart on the website
====== iPhones ======
12 = RBQEVH
12M =
12P = FWRUJK
12PM = TAGYWX
13 = WLBXAK
13M = PMCEGT
13P = RENLTC
13PM = EGKCZN
SE22 = GPCNKY
14 = LBWDCA
14+ = PHYGVK
14P = CBLXRW
14PM = XGTPKL
====== Macbooks: ======
Macbook Pro 13" M2 2022
QMXHLB
Macbook Air M2 2022
PTGVKD
MacBook Pro (13-inch, M1, 2020)
GBTWXF
MacBook Air (M1, 2020)
JFDNFL
MacBook Pro (16-inch, 2021)
HFXVCU
MacBook Pro (14-inch, 2021)
BQEZWU
====== Desktops: ======
Mac mini (M1, 2020)
DBZKXG
Mac Studio (2022)
CWQBNX
iMac (24-inch, M1, 2021, Two ports)
LVHLQJ
iMac (24-inch, M1, 2021, Four ports)
SNCHJB
Studio Display
YDVPMR
5piujpog36x2zymwmt7iejj490ndc34
Apple Software Diagnostics Sensor Names
0
207
613
608
2020-02-02T17:33:20Z
Chrisb
1
Chrisb moved page [[Apple Hardware Test Sensor Names]] to [[Apple Software Diagnostics Sensor Names]] without leaving a redirect
608
wikitext
text/x-wiki
#REDIRECT [[SMC Sensor Codes]]
5ut2mu8gm3n1iv1pfzcrlwcw7bhsngn
Audio Jack Repair and Plug Sense
0
2128
6684
6373
2022-11-30T00:45:39Z
Crumblenaut
317
Updated to include a note about renamed aliases in later models.
6684
wikitext
text/x-wiki
A common issue, especially with unibody MacBooks and MacBook Pros (2008-2012 era) is that the system will stop giving sound output through their main speakers and/or through the headphone jack.
This is most often due to having something stuck in the audio jack (e.g. a broken off headphone plug tip) OR due to AUD_CONNJ1_TIPDET losing default electrically disconnecting from AUD_CONNJ1_TIP when nothing is inserted into the jack.
'''NOTE:''' ''In later models (like the MacBook Pro 2015 13in 820-4924 board, for example) AUD_CONNJ1_TIP has been renamed to AUD_CONN_HP_LEFT and AUD_CONNJ1_TIPDET has been renamed to AUD_CONN_TIPDET2. In TRS connectors (see graphic below) the tip is the left channel, and HP presumably is short for "headphone". Despite the different naming scheme, all of the principles described below apply in a one-to-one manner.''
<br />
===Common Symptoms:===
*Still hear the Apple chime on boot (if it's not turned down in system preferences, and you can reset it to standard volume with a NVRAM reset for testing purposes);
*Not hear any sound from within MacOS itself;
*See "Digital Out" / "Optical digital-out port" as the name / type of the only output device listed in the System Preferences -> Sound -> Output tab (unless you have a second audio interface connected to the system); and
*See a dim red illumination coming out of the headphone jack itself when the system is powered on and booted into MacOS.
<br />
===Background:===
Headphone jacks for most unibody and all modern Macs support several types of connectivity across different variations of the 3.5mm (1/8in) standard. These include:
*The standard TRS (tip, ring, sleeve) analog headphone / line-out output where the audio signal for the left channel is passed to the output device using the tip of the jack, the right channel is passed to the output device using the ring of the jack, and both channels share a common ground in the sleeve around the base;
*The increasingly common TRRS (tip, ring, ring, sleeve) analog in/out configuration where the tip is the left channel, the ring adjacent to the tip is the right channel, the ring adjacent to the sleeve is the common ground, and the sleeve is the integrated mic input; and
*The mini-TOSLINK digital optical plug type which uses a single fiberoptic channel to transmit digital audio using the S/PDIF protocol and which is built with a nonconductive plastic sleeve.
[[File:3.5mm Plug Types.png|alt=Three 3.5mm Plug Types: TRS, TRRS, and Mini-TOSLINK|thumb|Three 3.5mm (1/8in) Plug Types: TRS, TRRS, and Mini-TOSLINK]]
MacBooks use a tip-detect pin and a sleeve-detect pin to determine which of these three types of plug is inserted into its headphone jack, or if no plug is inserted at all.
The behavior described above is due to the jack passing erroneous tip and/or sleeve detection to the onboard audio codec chip.
<br />
===Functional Mechanisms:===
[[File:Audio Jack Schematic (820-2936).png|alt=Audio Jack Schematic (820-2936)|thumb|Audio Jack Schematic (820-2936)]]
As indicated by the schematic, the audio jack is physically built so that AUD_CONNJ1_TIPDET normally has a physical electrical connection to AUD_CONNJ1_TIP. When a plug is inserted into the jack, the metal-to-metal conductive connection within the jack is physically opened by the plug's physical presence mechanically lifting the top arm up from the base with which it is normally in contact. This tells the MacBook's audio codec chip that there is something in the jack physically.
Furthermore, the jack is built so that AUD_CONNJ1_SLEEVEDET will not have any continuity to AUD_CONNJ1_SLEEVE unless a conductive plug (TRS/TRRS) is inserted into the jack. When a TRS or TRRS plug is inserted into the jack, AUD_CONNJ1_SLEEVEDET is shorted to AUD_CONNJ1_SLEEVE, indicating to the audio codec chip that the plug in the jack is an analog audio plug.
The configurations for the audio jack, then, are as follows:
{| class="wikitable"
|+''HEADPHONE JACK SENSE CONFIGURATIONS''
!
!TIP-TIPDET Closed
!TIP-TIPDET Open
|-
|'''SLEEVE-SLEEVEDET Open'''
|Sense: Nothing is inserted into the 3.5mm jack
Output: Internal speakers ENGAGED
|Sense: Mini-TOSLINK is inserted into the jack
Output: Digital optical out only
|-
|'''SLEEVE-SLEEVEDET Closed'''
|[https://www.youtube.com/watch?v=54e_EV3jXGc Where did you get that banana?]
|Sense: TRS/TRS analog plug inserted
Output: Analog audio out for headphones / line-out
|-
| colspan="3" |NOTE: The default configuration of the jack with nothing inserted is for TIP-TIPDET to be CLOSED and SLEEVE-SLEEVEDET to be OPEN.
<nowiki>***</nowiki> Mic detection is not detailed here. See the "AUDIO: JACK TRANSLATORS" page of the schematic for more information. ***
|}
<br />
===Dysfunctional Mechanisms:===
Assuming that there is nothing jammed in the jack that would cause the physical connection between AUD_CONNJ1_TIPDET and AUD_CONNJ1_TIP in the jack mechanics to open, then either:
*The two metal pieces inside the jack have oxidized or accumulated debris at their point of contact, and as a result the connection now has too much resistance on the line to provide a reliable continuity and so the audio codec chip has decided that there is something in the jack when there is, in fact, nothing inserted; or
*The top metal piece has developed fatigue and no longer makes physical contact with the plate to which it would normally make contact.
<br />
===Preoperative Diagnostic Testing:===
Before performing any invasive surgeries on your MacBook, be sure that faulty tip detection is your problem! A functional tip detection mechanism should give ~0 ohms resistance between the headphone jack's AUD_CONNJ1_TIP (pin 1) and AUD_CONNJ1_TIPDET (pin 2) when nothing is inserted, and when there IS a plug inserted, it should give an OL when measuring the resistance between those same pins.
If the functional behavior is not as expected but the jack's electrical measurements ARE as expected, then you may need to trace the signal path deeper into the board, ensuring no filter caps are shorted to ground, that the filtering inductors on the line are not failed open, and that proper supply voltages are being passed to the logic gates that handle the detections and pass the AUD_SENSE signals on to the audio codec chip.
<br />
<br />
===Reference Photos (A1278):===
<gallery mode="packed-hover">
File:Mac Headphone Jack Revealed (3).jpg|alt=The TIP-TIPDET connection point is circled here. Note that when a plug is inserted the top piece of metal is lifted off of the base connection slightly, thereby opening the default-closed TIP-TIPDET connection.|The TIP-TIPDET connection point is circled here. Note that when a plug is inserted the top piece of metal is lifted off of the base connection slightly, thereby opening the default-closed TIP-TIPDET connection.
File:Mac Headphone Jack Revealed (2).jpg|alt=Headphone jack with a plug inserted and the TIP-TIPDET interface OPEN|Headphone jack with a plug inserted and the TIP-TIPDET interface OPEN
File:Mac Headphone Jack Revealed (1).jpg|alt=Headphone jack with no plug inserted and the TIP-TIPDET interface CLOSED|Headphone jack with no plug inserted and the TIP-TIPDET interface CLOSED
</gallery><br />
===Solutions:===
*'''Easy but unlikely to be a persistent fix:''' If the connection point is simply oxidized you may be able to resolve the issue by disconnecting the system battery, spraying [https://smile.amazon.com/dp/B00006LVEU/ DeoxIT D5] in the headphone jack, and then inserting and removing the 3.5mm plug repeatedly to break up the oxidation between the two contact points.
*'''Involved but likely permanent fix:''' Expose the internal mechanisms of the headphone jack by removing the logic board from the system, exposing the jack's internal TIP-TIPDET connection point, and then cleaning / bending / modifying the exposed metal contacts so that they make reliable electrical contact (~0 ohms resistance between pins 1 and 2) when nothing is inserted and also separate reliably when a plug is inserted to the jack (OL between pins 1 and 2).
**Usually DeoxIT and a slight bending will work for me ([[User:Crumblenaut|Crumblenaut]]), but in the past I've also had to file the contact a bit and then tin one or both sides with solder to get it just right
*You can expose the internal mechanisms several ways, including by:
**Desoldering, removing, and disassembling the jack to remove the shielding; or
**Using flush cutters to snip the shielding connection points on the exposed side and the rear of the jack, leaving the unexposed side connected, and then by bending the metal shielding back; or
**Using a Dremel drill and a fine cutting blade to VERY CAREFULLY cut through the exposed side and rear of the jack, leaving the unexposed side connected, and then bending the metal shielding back
*'''ORRRRRRR... YOU COULD JUST REPLACE THE JACK.''' ¯\_(ツ)_/¯
<br />
GOOD LUCK, FRIENDS! :::D
<br />
jrn02rwyhwtgd9l1hly5rv89lxrkd9l
BBOX
0
761
1811
1810
2020-09-26T19:57:04Z
Chrisb
1
/* Tools Needed: */
1811
wikitext
text/x-wiki
===Tools Needed:===
#Windows computer with internet access & a USB Port
#original or mfi lightning cable for best results
#JC BBOX C3
#JC Repair Operation Platform https://www.jcprogrammer.com/download-center
#3utools http://www.3u.com/
===Setup:===
#Download & run the JC Repair Operations Platform software from https://www.jcprogrammer.com/download-center
#To open the software register for an account & login
#skip the software update by clicking "next time"
#For best speed results, change the server to the best zone for your location. [[File:BBOX Media 3.png|thumb|alt=|none]]5. Under install driver install CH341 driver (V1/B1/V1S/BBOX/Chip Module)
[[File:BBOX Media 4.png|thumb|alt=|none]]
6. Go to the "nand repair" page by clicking the "nand repair" button in the top right
[[File:BBOX Media 5.png|thumb|alt=|none]]
7. Connect the device & click the connect key until the BBOX shows "B-BOX: ONLINE"
[[File:BBOX Media 6.png|thumb|please note, if you have many USB devices connected, you may have multiple "COMS" available. Your software may not recognize the BBOX if you have the wrong COM selected.|alt=|none]]
<br />[[File:BBOX Media 1.jpg|none|thumb|BBOX online & device booted to home screen. you should be here before moving onto "Getting Into Purple ode"]]
===Getting Into Purple Mode:===
======1. Get your BBOX into "online mode"======
To get your BBOX into online mode you must
#2. While being plugged into your BBOX put the phone into [[DFU Mode Restore (iOS)|DFU mode]].[[File:BBOX Media 2.jpg|thumb|BBOX online & device booted to DFU. you should be here after completing step 2|alt=|left]]
qgzsipuxl2c4ge8rysep1zh5p16suiy
BCM15700 Camera
0
1901
5610
5609
2021-03-01T18:42:28Z
Piernov
10
Category Mac/MacBook/MacBook Air/Pro
5610
wikitext
text/x-wiki
The A1398, A1465, A1466, A1502 from 2013 to 2015 (Haswell/Broadwell) as well as A1708 machines use a FaceTime HD camera connected through a MIPI bus to a BCM15700 controller, itself connected through PCIe to the PCH. Older machines use a USB camera, newer ones have the camera handled by T1/T2/M1, they are not covered here.
The BCM15700 uses an external 4Gb framebuffer RAM through a DDR3 bus.
The BCM15700 also includes various voltage regulators (LDO and buck converters) to drive its internal logic, the MIPI bus and the RAM.
== Power rails ==
The BCM15700 only takes PP3V3_S3RS0_CAMERA as its power supply. The other power rails for the camera circuit are created by the BCM15700 itself.
RAM voltages are the usual DDR3L power rails:
* PP1V35_CAM: the VDDQ voltage for the RAM at 1.35V, 1.337kohms to ground on an 820-3476
* PP0V675_CAM_VREF/PP0V675_CAM_VREFDQ: feeds VREFDQ at 0.675V, 4.5Mohms to ground on an 820-3476
* PP0V675_CAM_VREFCA: feeds VREFCA, voltage divider at 0.675V from PP1V35_CAM
== Crash during macOS boot ==
If the BCM15700 is unstable/defective, it can crash, causing the driver to crash when booting macOS and in turn causing a reboot of the machine. Linux would not crash in this situation.
macOS Sierra and Mojave may show something like this when booting in verbose mode:
<nowiki>
AppleCamIn::init
AppleCamIn::probe
AppleCamIn::start</nowiki>
Unfortunately these debug messages seem to have disappeared with Big Sur, and it crashes after:
<nowiki>
IOG Flags 0x3
Generation from SMC report as 2</nowiki>
The 25MHz clock generated by the clock generator (SYSCLK_CLK25M_CAMERA from U1900 on an 820-3437) can cause it to crash if the clock generator itself is defective or if there is an issue on its power rail, such as a burnt resistor (R2042 on an 820-3437). Interestingly, Linux is less likely to have issues than macOS if the clock is not perfect.
The BCM15700 can be disabled by disconnecting the CAMERA_PWR_EN line (removing R2030 on an 820-3437, R2033 on an 820-4924). This should avoid the crash mentioned above, but of course camera will not work.
See https://boards.rossmanngroup.com/threads/820-3476-820-3437-stuck-on-progress-bar-with-applecamin.54959/#post-64298
== Troubleshooting using Linux ==
In a terminal:
<nowiki>
lspci</nowiki>
can tell you if the BCM15700 is at least detected on the PCIe bus. You should see something like:
<nowiki>
Multimedia controller: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera</nowiki>
If it is not detected then you probably have an issue with its power supply or with the PCIe bus between the chip and the PCH (check the capacitors) or the chip itself is defective. If it is detected, you could have an issue with the camera itself rather than the BCM15700 controller.
Linux does not have a native official driver for the BCM15700, however there is a reverse engineered driver that works perfectly fine but it must be installed manually.
This driver is very verbose and show information about the controller and RAM initialization in the kernel log when it is loaded.
The driver is available here: https://github.com/patjak/bcwc_pcie
=== Installation on Ubuntu 20.04 ===
In a terminal:
<nowiki>
sudo apt install git curl build-essential
git clone https://github.com/patjak/facetimehd-firmware
cd facetimehd-firmware
make
sudo mkdir /lib/firmware/facetimehd
sudo cp firmware.bin /lib/firmware/facetimehd
git clone https://github.com/patjak/bcwc_pcie
cd bcwc_pcie
make
sudo make install
sudo depmod
sudo rmmod bdc_pci
</nowiki>
Then open a second terminal, type:
<nowiki>
sudo journalctl -f</nowiki>
Go back to the first terminal and type:
<nowiki>
sudo modprobe facetimehd</nowiki>
You should see the log in the second terminal.
=== Debug logs ===
==== Successful initialization ====
Here is a picture of part of the logs of what a successful initialization looks like:<br>
[[File:Linux facetimehd log.jpg|500px]]
==== Errors ====
Here is an example of an error, this one is related to RAM but it was in fact caused by the BCM15700 controller itself (which includes the framebuffer RAM controller):<br>
[[File:Linux facetimehd error.jpg|500px]]
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
[[Category:MacBook Pro]]
ibnu5plrf0oj5megbtvw5d4fqnobmtx
Backlight Troubleshooting
0
40
7695
7546
2024-09-13T17:17:03Z
Inwerp
16
/* LUXE (RAA209100B) */
7695
wikitext
text/x-wiki
[[File:steve-jobs.webp|thumb|Steve Jobs demonstrating corroded PPVOUT_SW_LCDBKLT_FB on his MacBook Air]]
== First things first ==
# '''<u>MOST IMPORTANT THING EVER!</u>''' <u>Never work, test or turn on 13" devices without screwed in edp-tcon connector. I</u><u>f</u> <u>eDP</u> <u>Cable</u> <u>jumps out of the connector, it will destroy your CPU</u> <u>edp IO</u> <u>since backlight VOUT is 0.2MM away from EDP_AUX_N which goes directly to the CPU.</u> <u>on 15" you can swap edp mux IC, but 13" kills cpu instantly. the best practice is to use tweezers and actively discharge caps on backlight rail before disconnecting.</u>Always discharge Backlight caps before unplugging the Display (wait 20-30 seconds or use 10 ohm resistance to discharge it).
# Before looking for Backlight problem, check if you really have an image. Dozens of times i've seen people troubleshooting backlight, narrowing it down to "no backlight enable" without having a picture too. It is really important to keep in mind, this is valuable for all macs''': if you do not have image, if display is not recognized - there never will be a backlight.''' If there was waterdamage on Display connector near the LCD VOUT pin, it is highly likely that CPU EDP Aux line is dead. On 15/16 inch Macbooks you can simply replace gmux IC which acts as sort of protection for CPU/GPU.
# Check with known good Display if possible. Rule out Flexgate problem (might happen even on "fixed" models). Use [[MacBook LCD Screen Compatibility]] page to find test screen which should have a backlight.
# '''Do PRAM reset''', on T2 and M1 Macs, do DFU revive/restore to rule out T2 IO problem. It is very rare, but not zero chance. especially if the device is clean and lost its backlight after an update. do not underestimate this, there is nothing dumber than having a backlight after 2 hours of soldering and then finally doing PRAM reset "just in case".
==Backlight Circuit ICs used in MacBooks==
The backlight circuits in MacBooks manufactured from 2009 to 2020 operate on the same basic principle. Three controllers were used during this period: LP8550, LP8545, and a two-chip circuit consisting of LP8548 and LP8549.
#LP8550 MacBook Pro PRE 2012 Retina / MacBook Air till 2017. [https://www.ti.com/lit/ds/symlink/lp8550.pdf?ts=1641743667771&ref_url=https%253A%252F%252Fwww.google.com%252F Datasheet]
#LP8545 was used on first Retina Macbook 2012 (820-3332, 820-3662). This chip is almost identical to LP8550 [https://www.ti.com/lit/ds/symlink/lp8545.pdf Datasheet] is also publically available. BOOST SW FET is moved outside the IC, Feedback voltage divider too.
#2-chip (LP8548 + LP8549) circuit was first introduced in year 2013 on Retina MacBooks A1502, A1398. MacBook Air uses this chip combination since 2018. There are a few later revisions, but they all seem to be compatible between same gen of the device. for example, all 2012-2015 would work fine. all TBT will work up to M1 models. There is no datasheet available, but basically this is the same LP8545 split into two parts: Boost part + Current Sink/Logical part. There is also driver for Keyboard backlight integrated into LP8548 part.
<br />
====LP8550 and LP8545 Basic operation principle====
The LP8550/8545 backlight driver can be divided into three parts:
=====Boost converter.=====
This section of the IC generates high voltage from PPBUS_G3H and boosts it to the default maximum for the platform when it receives the Enable signal. If the brightness is adjusted to a lower level, it generates a lower voltage to optimize power consumption. The main function of this circuit is to drive LED stripes within the screen, typically through the VOUT or VLED test points on the TCON board.<br />[[File:Booster circuit.jpg|frameless|415x415px]] <br />Simplified diagram from The LP8545 datasheet. T1 FET and feedback voltage divider are integrated in LP8550.
=====LED-Retun / Feedback / Current sink part.=====
[[File:LED Return.jpg|frameless|170x170px]] >> [[File:LED Return 2.jpg|frameless|374x374px]]
LED return/feedback/current sink: This part of the IC connects the cathode part of the LED stripe to ground through PWM-controlled FETs (current sinks), which adjusts the brightness of the screen. LED_RETURN_1..6 lines are present on the eDP/LVDS connector, and a broken line can cause uneven lighting on some parts of the screen(so-called "Stagelight" effect).
*Logical part
[[File:LP8545 Logic part.jpg|frameless]]
This circuit controls PWM, high voltage generation, I²C communication with PCH/MCU/gMUX/tCon processors, and has an EPROM with a stored brightness profile and slopes.
=====Configuring Backlight Slope on fresh LP8550 after replacement=====
Please refer to [[LP8550 Slope Configuration|Piernov's LP8550 Slope configuration software and instructional video.]] If you use new LP8550 it is quite easy to flash it with original smooth brightness change slopes.
====LP8548 + LP8549 Combination====
The LP8548+LP8549 combination is a split variant of the LP8545. The LP8548 is a BOOST IC with an I²C communication part, controlled by the LP8549 placed on the TCON board since the MacBook Pro 2014. The LP8549's main I²C interface is directly connected to the TCON LCD controller, freeing six pins on the eDP connector. Refer to the 820-3787 schematics/boardview for both chips' locations, as this board has both chips nearby and still has LED_RETURN lines on the eDP connector.[[File:820-3787.jpg|none|thumb|As you may see there is a communication line between two chips. LP8549 could be considered as "primary". ]]
==== LUXE (RAA209100B) ====
M1 + 2021 and later 14 and 16 inch models use quite different backlight system. It is BGA like LP8550 and there are SPMI lines to the SoC.
As prior models it only outputs backlight if image is present. LED is now a matrix on all backligh Lid.
One of common symptoms on damaged LCD panel would be very blurry monochrome image produced by backlight behind the reset / pixelated LCD.
Instead of PRAM reset, first thing to check would be questioning if the device has original Display or not. If someone installed non original screen on A2442 / A2779 model without chip transfer, backlight will be off untill LID Open / Close trigger loop.
Chip itself is a simple buck-boost converter, sending power to backlight driver inside of the LCD. Secondary backlight driver is located in separate tcon board inside of the screen. It has i2c and SPI lines attached to SoC, however it is most likely interfaced by Parade DP855A LCD MCU inside of the LCD TCON.
Sometimes after fixing waterdamaged LUXE driver, there will be dead power regulator in Backlight tcon. Chip has only apple part number and most likely is some customized slim TI power driver. chip is located closer to the Camera/ALs cable and has PN A2485 is 338S00820. It is only donor-sourced chip ( A2442, A2485 and most likely A2779).
A2442 338S00821
This backlight system also has flickering issue if LCD is transferred without SN cloning (either by editing ROM contents or by transferring Parade + SPI from old LCD)
==Repair and Troubleshooting==
===LP8550 / LP8545===
'''0. Before attempting any repairs, perform a PRAM reset and check the SMC_LID line.'''
#Check Fuse, check if line is shorted / by any damage replace i-pex eDp connector (Refer to [[MacBook Parts List|MacBook Parts List)]] ALWAYS check for short on cable side, both connected and disconnected. If the pin is burned in many cases it will burn the insulation under the VOUT pin shorting it to ground once inserted. Normal resistance is kOhms.
#Check if Enable is present on both Backlight power switch and IC itself.
#Check if FB(Feedback) line is corroded on VIA near the Booster Diode. This is a common issue on MacBook Air boards. To check it, remove D7701 and measure in diode mode(Red probe to ground, black on pin 2 of the D7701). OL would indicate a broken connection to the LP8550
#Check if there is communication with the backlight IC, and if it has VDDIO and VIN power supply.
#If nothing helps, replace LP8550 and before putting new one use diode mode to check if all traces are good (0.4-0.8V voltage drops on all relevant pins)
Basically that's it. LP8550 troubleshooting is pretty straightforward compared to later models with dual chip system.
<br />
===LP8548 + LP8549===
'''0. Do a PRAM Reset, check LID, check [[A1706/A1708 TConn Backlight Pinout (FlexGate)|Flexgate]](2016+ Models), replace eDP Cable line before touching this circuit at all.'''
Boost circuit part troubleshooting is quite similar (same feedback function, same PPBUS voltage if no boost, for example). However, it is actually being controlled by TCON board which makes troubleshooting a little bit confusing.
If FUSE / boost circuit checks out, check these two testpoints on TCON Board (similar on all devices, new displays have no marks on them)
[[File:TCON Backlight communication.png|none|thumb|300x300px|TCON Backlight SDA / SCL testpoints]]
If there is communication going on and lines are not shorted (0.4-0.5V drop in diode mode) check VLED voltage under the backlight cable:
[[File:TCON Backlight VOUT.png|none|thumb|300x300px|TCON Backlight VLED Voltage testpoint]]
Please note that no backlight AND good voltage on VLED does not necessarily indicate flexgate or dead LED stripe. Since Current Sink side is on TCON Board, it needs to reach LP8548 on Logicboard before it runs PWM driver. (I2C_BKLT_SDA/SCL). It also needs communication with PCH/GMUX (I2C_TCON_SDA/SCL) or EDP_BKLT_PWM+SMBUS_SMC_0_S0_SDA/SCL on older boards.
If you ever messed with 2017-2019 Display firmware you might have seen that ALS / Truetone / Backlight slope is a part of display firmware. Basically
If communication between TCON and LP8548 is disturbed, you might have 50V on VLED and no backlight or 0v VLED but enable signal from GMUX.
So basically, if you do not have high voltage on VLED, troubleshoot the logicboard (enable signal, VDDD / VDDA, Boost circuit, fuse, etc.) but also keep in mind that communication line is also necessary to turn on boost circuit, so the problem might be on TCON/Display side, so check PP5V_S0SW_LCD(display will have picture without 5V power but no backlight and no boost).
If you have high voltage but no backlight, inspect communication lines first. This IC has two separate 5V supplies for booster and communication circuits, so check LP8548 VDDD/VDDA precisely: if it is corroded and supplies for example, only 4.3V to VDDD (oddly it is from the opposite side of datalines), BOOST will work, but SPI communication part of the IC will fail to properly talk back to the TCON board. (also, communication level is 5V unlike 1.8/3.3v on most lines)
Most common symptom of bad TCON side/TCON power /TCON communication would be a short burst on backlight power, you will see it as some voltage on VOUT which will quickly go down as caps discharge.
====GAY-GAV Backlight repair====
If you have classic GAY-GAV PP5V_G3S short circuit and there is a hole in LP8548, after you replace both 5V voltage regulators(PVCCIOS0 U8110 and PVCCEDRAM U7710) and Backlight driver, check Feedback voltage divider (LCDBKLT) and PP5V_S0SW_LCD power switch.
As you may guess, LP8550 may mainfest same symptoms as any of these two chips, so if you stuck with high voltage but no backlight - replace it before opening screen and checking if cable is bad. <br />
===Known test possibilities:===
all screens from the same year will turn on backlight. (For example 2019 16" will turn on backlight on 13 and 15 inch screens or even provide sign of image)
If for some reason backlight works during the Apple logo (on boot) and backlight is turned off on user login window or after boot completion, check LAS (Lid Angle Sensor) for liquid(Macbook 16" only).
=== T2-M1 Backlight Driver compatibility ===
T2 = LP8549B1-04 , M1 = LP8549B1 A07
With T2 donor = PPVOUT_BKLT is boosting to 50Volt but no backlight on LCD. No flexgate issue etc. You must have donor from M1.
(credits to iBoff Matt)
==Old troubleshooting guide==
===820-00138 BKLT_EN high but LCDBKLT_EN_L is not being pulled down===
this is a pretty tricky one, i found 3-4 deadend posts on badcaps / Rossmann's with no solution for this issue .
The problem is that there is no real 820-00138 boardview available, in most cases there is 820-3662 boardview or similar. however PDF seem to be the right one. The difference between commonly distributed boardview and real one is that there is no U7750 on board, and this is the source for BKLT_SCL + BKLT_SDA. To inspect backlight circuit use 820-00163 or 00462(this is DG board version) which is totally fine and has absolutely the same backlight circuit design.
These two are critical for backlight to turn on, this is somehow similar to iMac design, where display is the one who really turns backlight and only once image output is stabilized. This might seem overenginered, but it is kind of bugfix for possible graphical artifacts on system poweron.
On 820-00138 I2C_BKLT_SCL + I2C_BKLT_SDA are coming from eDP connector J8300, pins 3 and 4, they measure 5v unlike most other I2C lines (3.3v).
'''For 820-4924 with LCDBKLT_EN_L is not being pulled down'''
If the connection between U7700 and R7700 is broken on the ISNS rails LCDBKLT_EN_L will stay high. Make sure that there is continuity between U7700 Pin9 to R7700 Pin4 and U7700 Pin10 to R7700 Pin3. The trace goes between the board layers and might look perfectly fine.
===Rossmanns Guide===
(https://docs.google.com/presentation/d/1PkeO_lC5WTPScSV3ZzEEjVuDWeQtL2eHK6jEcf7axA0/edit#slide=id.gb813305ed3_143_1678) Pages 145-149 or search for "Standard backlight circuit faults!" if pages change over time<blockquote>PRAM RESET! Low boost can be the brightness being down.
Check voltage after backlight diode.
If backlight is 45V or more there is no load on the backlight circuit. Use a known good screen and check the connector.
If backlight is 25V-40V the boost circuit is working. Check the connector, cable, and LCD.
If backlight is PPBus voltage your boost circuit isn't working. Check the feedback trace, LCD driver, and enables.
If backlight is 0 check for short then work your way back toward PPBus. The LCDBKLT_FET, fuse, and enable transistors are all suspect at this point. Also check the voltage dividers.
checking SMC_LID (it shouldn't give an image either if it's missing)
To have boost on this circuit, the LCD must communicate. Be sure to use a known good LCD when troubleshooting.
Measuring before the inductor you should have PPBus, and after it you have some random rounded-square-ish (or triangle-ish) signal that a cheap multimeter won't know what to do with. Measure after the diode unless you are using an oscilloscope.
Missing LCD_BKLT_PWM: Inject voltage or jumper from PP3V3_S0 or similar.
Some great info from Louis Rossmann (User name - zzz) ifixit forum
Most "common" problem with no backlight is ball A5 on LP8550 or LCD connector, but guessing is BS and should not be done here.
put multimeter in diode mode, red probe on ground, black probe on pins 3/4 of LCD connector.
0.0 or 0.007 means direct short to ground, usually inside LCD connector or LCD cable.
0.200-0.300 is bad LED driver.
0.459-0.511 is bad feedback via or corroded away feedback ball under LP8550
0.565 is corroded solder ball or bad switch trace inside LP8550
Measure voltage along each point in the circuit. Before F9700, after F9700. At output.
At backlight output, measured on pin 3 or 4 of the LCD connector,
0v means short to ground, blown fuse, or no LCD connected. Check that you see an image on the LCD, check backlight fuse, check board via from FET after fuse to boost coil.
8v means no short to ground, good fuse, but no boosting. Check BKL_EN is 2.7 to 3v at voltage divider going to enable pin of WLED driver, check BKL_PWM signal exists.
27v or higher means all good, but your LCD cable or LCD backlight itself is blown.
If you see power along the line, where is it? Where does it stop?
If you replace a fuse with a short to ground anywhere in the line you have wasted your time, and a precious little 0603 package. :(
Lastly if it worked for a few months and then died most likely your problem is on bad feedback via/ball on LP8550, pins 3/4 coming corroded on LCD connector, or BKL_EN voltage divider resistors in that order.
Have fun! Louis Rossmann<br /><ref>repair.wiki</ref></blockquote>
[[Category:Mac]]
[[Category:MacBook]]
[[Category:Troubleshooting Guide]]
<references />
mhllgr87z9kj82jm6jcn7evhh459z69
Basic Troubleshooting
0
682
6064
1586
2021-09-17T03:58:04Z
IT-Solve
181
/* Problem - No display */ capslock check
6064
wikitext
text/x-wiki
<br />
==Basic basic basic!==
*PRAM/SMC reset first!
*Remember to try booting in Safe Mode by holding left shift key during boot.
*Have the proper tools ready and available - known good/functional spare parts, Shiny diagnostic boot drives, external monitors, proper adapters, known good keyboard/mouse, etc. ALWAYS have good bits in your kit! Periodic inspections and requesting replacements when needed is a must!
*Instructions for malware cleanups, basic terminal commands, SAVE LINKS AS FAVORITES for good instructions, wikis, etc. for easy reference.
*Utilize manuals and forums in Zoho!
----
==Problem - No display==
*Is Mac turning on at all? Check for sounds (fan, chime). Check MagSafe light - is it green/amber?
*Check for response from the Caps Lock, which should respond if the system is up and loaded. If does, it is most likely a damaged screen.
**If Mac is booting (chimes, signs of light, but no display), check to see if backlight is bad by shining a flashlight through the Apple logo on the other side of display. If you see a picture on the front of display where the light is shining in (login screen, desktop, loading progress bar, etc.), the backlight is bad and logic board repair/replacement should be considered.
**If there are no signs of life, open bottom cover and check for liquid damage - corrosion/residue on logic board, cables, connectors, inside bottom cover, flex cables, etc. Check for abnormal smells or fried components. Check to make sure RAM is properly installed (can be displaced if dropped or hard bang).
***Disconnect all connectors (starting with the battery first ALWAYS) and see if any signs of life after everything is disconnected. If shows life, power down and reconnect one cable at a time (powering down before connecting each cable) until you can pinpoint what is causing the issue. If still no signs of life, logic board repair/replacement should be considered.
***Check keyboard and hard drive (if either are bad, they can cause no boot in some models).
----
==Problem 2 - Keyboard stopped working==
**Retina/Air models - a bad trackpad and/or trackpad cable can cause the keyboard to no longer function. Test with known working trackpad/cable and confirm issue.
**If some keys are functional and others are not - check for evidence of liquid damage (inside Mac, keyboard connector, keyboard flex, sticky/crunchy feeling keys when typing, etc.). If it is a Mac with butterfly keyboard (newer models), check model number and see if it qualifies for Quality Repair Program through Apple (if no liquid damage is present).
**Check with known working keyboard and see if issue is resolved.
**Check for software issue - log in as another user or Guest and see if issue is still present. If issue is not present under different user, log back into original user and check Accessibility settings to make sure “Mouse Keys” is not enabled in the “Mouse & Trackpad” section. Check for malware or other applications which may interfere.
----
==Problem 3 - No power==
*Try SMC/PRAM resets.
*Open Mac and inspect for liquid damage.
*Disconnect batter and use genuine 85w MagSafe - does Mac boot automatically without pressing power button?
*Remove existing battery and replace with fully charged, known good battery and try to boot.
*Follow similar troubleshooting steps as mentioned above in display section - disconnecting all connectors from logic board and connecting one by one.
*Disconnect battery and keyboard and try power on pads (non-retina models - instructions can be found here.
*Check keyboard (power button attached) - try with known good keyboard.
*Check DC board - try with known good board.
*The following components are sometimes a cause for no power: bad keyboard, bad SSD, bad DC in board, bad DC in board flex cable, bad trackpad, bad trackpad cable, RAM not properly inserted or bad (you do not always get RAM beeps in some situations).
----
==Common model specific issues==
*Mid-2012 non-Retina - 13” A1278 models - LCD flickering and system freezing due to defective lower RAM slot. Solution would be to run with one stick of RAM in good slot or replace logic board.
*2011 27” iMac and 15”/17” MacBook Pro models - AMD GPU failure - Symptoms include no boot, discoloration/vertical lines/artifacts, glitching, freezing during loading, rebooting, or gray screen. Other symptoms may present as well not listed here, but these are the common ones. Run GPU test to confirm issue if possible. The only model we can currently fix is the 15” MacBook Pro. We can replace the logic board with a 2012 15” MBP logic board. There are no fixes for 27” iMac or 17” MacBook Pro.
*2012/Early 2013 15” MacBook Pro Retina - Power buck issues - Will not fully boot/black display - logic board repair is required.
*Late 2013/Mid 2014 15” MacBook Pro Retina - black outs/random shut downs - CPU power state issue - logic board repair required.
*2008/2009/2010 15”/17” MacBook Pro - Kernel panic due to bad component on logic board - logic board repair is required.
*2015 MacBook Pro Retina 13” - Track pad cable defective causing no boot.
*2012 MacBook Pro non-Retina 13” - Hard drive cable defective - symptoms include (but not limited) a prohibitory symbol or folder with question mark when starting up, slow drive, freezing at loading bar - confirm by booting into diagnostics drive and checking for CRC errors in Drive DX.
[[Category:Troubleshooting Guide]]
fp6ediptdl9b171lq0735jt4ai5hsa1
Basic iPhone LB Troubleshooting
0
43
6249
543
2021-11-23T11:45:50Z
Brunorivera
597
Inserted some troubleshooting and organized the old text.
6249
wikitext
text/x-wiki
# '''Visual Inspection'''
#* Check for any missing sticker or shield then follow next steps
# '''Connect DCPS'''
#* Draw max current? If draw max current you have VCC MAIN line shorted.
#* Draw some current? So you have probably a cap leaking some current. Check for any liquid damage
#* No current draw? Follow next steps
# '''Press Power Button for 1 second'''
#* Check for current next you pressed the power button. It should be something around 60-90mah
#* High current? Check for any ugly cap around NAND or VDD_BOOST caps
# '''Tristar test'''
#* Check voltage on battery fpc without battery connect just with charger connected. This should jump around the charger voltage while it is looking for battery. If it goes below 3v like 0.6v flat you have a bad tristar.
[[Category:iPhone]]
ozc73c3ivp5tfd8si39ukw1eu145x8o
Battery Lifespan
0
728
1555
2020-08-28T16:48:13Z
Chrisb
1
Created page with "Batteries are considered consumed at * 500 cycles for iPhones * 1000 cycles for iPads * 1000 cycles for Watches * 300 cycles for A1181 and silver key MBP * 500 cycles for rem..."
1555
wikitext
text/x-wiki
Batteries are considered consumed at
* 500 cycles for iPhones
* 1000 cycles for iPads
* 1000 cycles for Watches
* 300 cycles for A1181 and silver key MBP
* 500 cycles for removable unibody MacBooks
* 1000 for non removable battery MacBooks
If a battery is less than 80% capacity or greater than 80% of its consumed cycle count, it should normally be replaced when refurbishing. If a computer is under warranty only look at the capacity. Anything under 70% will likely perform badly.
iy4ox84bk4qaewtwgu0exvijm2kq8f2
Beginner Troubleshooting
0
814
1795
1794
2020-09-20T18:21:20Z
Chrisb
1
/* 2. What not to do */
1795
wikitext
text/x-wiki
You have a laptop that does not power on, powers on but shows no image, crashes, etc… You want to fix it but you don't know where to start.
There are 2 situations:
#You just want your laptop fixed
#You want to learn about fixing laptops
#
Sorry, but if you're in situation number 1, we recommend you to use the services of a trustworthy professional repair shop.
Unfortunately, if you're not serious about learning, you will waste your time and money, and you will make us waste our time as well.
If you are in situation number 2, then please continue and read until the end. This serves both as directions on how to deal with your laptop problems and how to post on a forum, Discord, or [[{{TALKPAGENAME}}|this discussion page]].<br />
Remember that this is a place for mutual help. It's free as in not paid, so when you ask for something you have to realize people invest their time out of their day for you, without counterpart.
And when you help someone else, you do it for free without expecting anything in return.
It's also free as in freedom. You are free to ask questions, but people are also free to answer them or not. If you want to help this community, the best way is to learn and help people back when you're confident enough.
Tip: if you make effort in your communication and thinking process, people are more likely to want to help.
[https://badcaps.net/forum/showthread.php?t=88758 Link to Piernov's original on BadCaps]
=='''1. Where to begin'''==
==='''1.1 Identifying the hardware you are dealing with'''===
It is very important for you and us to know exactly the machine you are working with and what is inside.<br />
===='''1.1.1 Machine model number'''====
Find the '''full''' model number of the machine.
For example it may be "HP Pavilion 17-f166nf". "HP 17" or "HP Pavilion" is '''not enough''', there are hundreds of laptop that fit this name.
If you find multiple model numbers, write them all.<br />
===='''1.1.2 Specifications'''====
Find what CPU, GPU, RAM, storage device is actually in the machine. It is not always relevant to the problem, but it helps confirm the parts are compatible or recognize known unreliable parts.
*'''CPU''': specify full model number. Not "Core i7", but "Core i7-3615QM". If you can't find it, read the sSpec from the CPU package, it starts with SL or SR like "SR0MP".
*'''GPU''': specify full model number, like "Radeon HD 6490M". If you can't find it, read the part number on the GPU die. It starts with "216-" on mobile AMD GPU like "216-0809000". For NVidia it can be like "GF-GO7300-B-N-A3", "G84-602-A2", "N10M-GE2-S".
*'''RAM''': specify capacity and frequency like 1600MHz or bandwidth like 12800. For DDR3, confirm if it's PC3 or PC3L.
*'''Storage device''': capacity and type (IDE HDD, SATA HDD, SATA SSD, M.2 SATA SSD, M.2 NVMe SSD, eMMC…). Model number isn't necessarily required but in some cases it can help to know if there is a firmware upgrade available for exemple.
===='''1.1.3 Motherboard model number'''====
Motherboard model number is the most useful if you are troubleshooting a motherboard problem. It helps finding pictures, schematics, boardviews, known issues…<br />There is always a number written on the board itself. In some cases there's also a sticker that tells a variant.<br />There are several different board manufacturers, common ones are:
*'''Quanta''': found in HP, Dell, Acer, Toshiba, a few Lenovo… Model number on the board is "DA''0''xxxxMByyy" (first ''0'' is optional), "xxxxx" is the actual model and "yyy" contains the revision. For example DAY11AMB6E0 for Quanta Y11A rev E. Warning: 0 and O are hard to distinguish when reading from the board, for example DA0OP6MB6D0 for Quanta OP6.
*'''Compal''': found in HP, Dell, Acer, Toshiba, Lenovo… Model number is "LA-xxxx''P''" (''P'' is optional), the older, the lower the number is. Like LA-4082P from 2007 or LA-E541P from 2017.
*'''LCFC''': found in Lenovo, it's actually Compal. Model number is "NM-xxxx"
*'''Wistron''': found in Acer (Wistron was part of Acer a long time ago), some Dell, HP, Lenovo… Model number is a "xxxxx-x" (x being a digit), often associated with a name. For example "Richie MB 11241-1".
*'''Inventec''': Toshiba, some Acer, HP… Model number is often "xxyyzz" with "x" being a letter, "y" a digit and "z" an optional letter. There's also a "6050xxxxxxxx-MB-xx" number that can be easier to spot. For example "SA10E" and "6050A2052401-MB-A04" for Inventec San Antonio 10E.
*'''Foxconn''': Sony, some HP. HP have a weird model number like "CHICAGO_HR_HPC MV_MB_V1" or "PM_I_HPC_S MV_MB_V3". Sony come with an "MBX-xxxx" number that's easy to identify, and another number, like "MBX-202" and "M790".
*'''Pegatron''': a few Acer and Toshiba. Acer in general have a "xxyyzz" with "x" being a letter, "y" a digit and "z" an optional letter. Toshiba have a weird model number like "PLF/PLR/CSF/CSR UMA"
The following manufacturers make their own boards (except maybe a few models here and there):
*'''Apple''': board model number is "820-xxxxx", like "820-3462". It's written black on black so it's hard to spot.
*'''Asus''': board model number follows the same format as the laptop model number, it can be the same or similar, and sometimes different.
*'''MSI''': model number is "MS-xxyxz", with x being digits, y a digit or a letter and z a optional digit for the revision. Some boards have 2 different model numbers like "MS-16J5" and "MS-1795" (with a 1 appended for the revision).
*'''Samsung''': model number is name associated with a "BA41-xxxxxx" number, like "Bremen-D" and "BA41-01197A".
*'''Clevo''': they manufacture laptops for a lot of "small local" brands. There are often 2 model numbers on the board, like "6-71-W25S0-D02" and "W251ESMB-D0".
*'''Toshiba''': a few business grade machines only. Something like "FLESY3" or "FHNSY1"
HannStar don't design boards, they manufacture the PCB. "J MV-4" and "94-V0" are not board model numbers, they are generic markings about PCB characteristics.
If unsure, send high-resolution pictures of the board. They are always welcome in any case.<br />
==='''1.2 History, symptoms, state of the machine…'''===
Always collect the most information you can about what happened to the machine. What's not working right? When did the problem happen? What was being done with the machine at that moment? Did it start acting up months ago? Was it ever in contact with liquid? Was it ever dropped? Was it repaired in the past already? etc…
These give essential hints to where the problem can be.
But of course, don't entirely trust what people tell you. Confirm the symptoms for yourself and write them down.<br />Once you identified what's not working as it should, do a visual inspection of the machine.
Look for any physical damage (bent, broken, missing stuff) and liquid damage, both on the chassis and the board, and take pictures if there is any.
Always make sure the correct AC adapter was used with the machine. Genuine original AC adapter of the correct brand and correct power rating. Even if the connector is correct, it doesn't mean it will work and it can even damage the machine.<br />
==='''1.3 Troubleshooting'''===
As a first step you should always disconnect the battery. Also check RTC coin cell battery and perform a clear CMOS.<br />
===='''1.3.1 Parts'''====
Always exclude the possibility of a part other than the motherboard being the problem before troubleshooting the board.
Swap what you can, disconnect what you can and see if the behaviour changes. Write down your findings.
Battery-related issues are 99% of the time the battery itself. Even if the battery is new. There are so many garbage batteries on the market that you sometimes get 2 or even 3 bad batteries in a row. This is especially true for Apple machines.<br />
===='''1.3.2 Board'''====
Here we will give just a few pointers to what kind of troubleshooting has to be done if you suspect a board issue.<br />'''Powers on but no display'''
*Check if it's no backlight, no image or both
**If no image:
***Check if external display works, try with internal LCD disconnected as well.
***Measure voltage on LCD power rail(s)
**If no backlight but image is present
***Try to locate the fuse (or resistor or inductor) to backlight rail and check if it's blown
***Measure voltage on backlight rail, backlight enable signal, brightness adjustment signal
*Check if laptop is POSTing: pressing caps lock key triggers caps lock LED, activity of USB drive blinks when turning on, audio plays, HDD is being read, etc… If it's not POSTing:
**Check RAM compatibility
**Reseat RAM and clean RAM slots
**Measure exact voltage on CPU VCore
**Check CPU Reset signal
**Follow power sequence if it exists in the schematics
**Follow list of power rails if it exists in the schematics
'''No power'''
*Check if DC-in jack LED lights up
*Check voltage on all the large inductors
*Follow power sequence if it exists in the schematics
*Follow list of power rails if it exists in the schematics
Note: don't forget to trigger power button when measuring for the rails that only come up when machine is turned on.
'''Powers on, display ok but something is wrong afterwards'''
*Exclude software issue by booting from another drive with Windows 10/Linux/macOS
<br />
=='''2. What not to do'''==
==='''2.1. Never reflow large BGA'''===
It won't fix the problem since 99% of the time it's not an contact issue between the BGA and the logic board. There's a high risk of damage the board even further.
If you want to confirm if an AMD/NVidia chip is bad, you can heat it up to 200°C max for a minute and a half, no flux. It'll come back to life for a short while and then die again, because it's bad. In this case it has to be replaced.
==='''2.2. Don't suspect that something is shorted with no reason'''===
Shorted components are not the only failure mode of a laptop. Additionally, some places will measure low resistance to ground under normal operation. In general, high power low voltage (<2V) power rails will measure less than a few hundred ohms to ground. CPU VCore will measure a few ohms only. GPU VCore with newer NVidia GPU can even measure less than 1 ohm. It's normal. If you suspect a short to ground, always report your exact resistance to ground measurements.
==='''2.3. Never randomly inject voltage'''===
Voltage injection is used to find a short to ground. Only consider it '''after''' you found that there is a short to ground and '''after''' doing a visual inspection trying to find a broken component.
==='''2.4. Never inject 19V'''===
If the 19V main power rail is missing, there's a reason, often because a protection kicked in to avoid more damage. For example, the 19V power rail could be shorted to the CPU through a bad high-side MOSFET. In that case, the charging circuit protection kicks in and turns off the DC-in MOSFET. With enough luck, the CPU didn't take too much of a hit yet. If you inject 19V, you are sure to destroy it.
Always measure exact resistance to ground to see if there is a possibility of high-side MOSFET short. Always start at 1V and check if any of the large BGA (CPU/GPU/PCH) is warming up. Monitor the power consumption.
==='''2.5. Never randomly replace components'''===
If you don't follow a proper troubleshooting process, randomly replacing components will rarely solve the problem and it can create additional issues.
==='''2.6. Never randomly bridge MOSFETs/fuse/components'''===
Bridging components can easily lead to the destruction of the board without no way to repair it.
If it's a fuse, replace it with a matching fuse. If you don't, it will not be able to protect the board and if the source of the problem is still there, some other component will go up in flames.
If it's a MOSFET, its purpose is to stop current from flowing through it when turned off, and allow current to flow through it when turned on. It's not necessarily always turned on, otherwise it wouldn't be there. If it's turned off when it shouldn't be, then there is an issue elsewhere in the circuit, bridging the MOSFET won't solve it.
==='''2.7. Don't apply power to the board with missing components'''===
As a general rule, if a component is on the board, it's because it's useful for something. Engineers don't like adding a bunch of useless components on the board, it's harder to draw the schematics and route on the PCB.
Some of them can be removed without creating problem if power is applied, but others can kill the board with no possibility of repair.
For example, if you remove a buck controller or a MOSFET driver, the MOSFET gates will be floating. They'll charge up enough so that the MOSFET turns on. Of course, you don't want the 19V from the main power rail to go straight through the CPU VCore MOSFET to the CPU.
__FORCETOC__
[[Category:Mac]]
[[Category:Troubleshooting Guide]]
gby93tedes5t2zquvzy6smnwa8xn04o
Beyond Economical Repair (BER)
0
1821
5349
2020-12-23T18:25:16Z
QuiveryNut
206
Created page with "When a repair will cost the customer more than the device is worth."
5349
wikitext
text/x-wiki
When a repair will cost the customer more than the device is worth.
i4lkr4kmu8dp6jx6ggxd1hp8xz2ecsw
Big Sur Upgrade Loop
0
1891
5566
5565
2021-02-11T22:08:42Z
Andrewh
195
Andrewh moved page [[Big Sur Install/Update Loop]] to [[Big Sur Upgrade Loop]] without leaving a redirect
5565
wikitext
text/x-wiki
When upgrading to Big Sur, some users<sup>[1]</sup> may get stuck in a loop in Boot Recovery Assistant where the user has two options:
* "Select a user you know the password for:"
** No passwords work (normal login password, Apple ID password, 1234, [blank], etc.)
* "Forgot all passwords?"
** Using Apple ID/password to attempt to reset the user account password or using FileVault recovery key fails (Message says "The supplied account was unable to unlock this volume.") and only gives the option to restart the computer, restarting the loop.
To get around the loop, the best way (so far) is to:
# Hook up the Target computer (ie the one in the loop) in Target Disk Mode to a Host computer running High Sierra or Mojave<sup>[2]</sup>.
# Clone the data partition to a temporary drive (e.g. with Carbon Copy Cloner).
# Erase the Target computer.
# Install the desired version of macOS.
# During macOS setup, migrate the data back from the temporary drive.
[Note 1: Initial impressions from the couple cases I've run into are that it seems to happen when the user tries to upgrade when they have little to no free space on their drive, causing the upgrade to crash, leading to the computer loading into Boot Recovery Assistant with an error that says "An error occured preparing the software update." and showing the startup disk selection menu where there are no disks available to choose to startup from, only leaving the user the options to restart or shut down, where restarting causes the loop.]
[Note 2: A Host machine running Catalina or Big Sur will not work; when attempting to mount the Target computer on Catalina or Big Sur, no matter what you type for the FileVault password it will not accept it, whereas it will accept it on High Sierra or Mojave.]
nkc2r9sez23755sniybv67c6fmzxihs
Board Number by A Number
0
99
7700
7699
2024-10-07T13:14:35Z
Francis
4
7700
wikitext
text/x-wiki
See [[Schematics and Boardviews Availability]] to find out if the files are currently available on the internet.
==Summary table==
{| class="wikitable" style="width: 100%" ;
! colspan="7" width="885" |<h3><strong>MacBook Pro Unibody</strong></h3>
|-
!<strong>Screen Size</strong>
!<strong>EMC</strong>
!<strong>Model N°</strong>
!<strong>Date</strong>
!<strong>Model ID</strong>
! colspan="2" |<strong>Board Number</strong>
|-
! style="font-weight: 400;" |<strong>13</strong>
| style="font-weight: 400;" |EMC 2326
| style="font-weight: 400;" |A1278
| style="font-weight: 400;" |Mid 2009
| style="font-weight: 400;" |MacBookPro5,5
| style="font-weight: 400;" |820-2530
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2351
| style="font-weight: 400;" |A1278
| style="font-weight: 400;" |Mid 2010
| style="font-weight: 400;" |MacBookPro7,1
| style="font-weight: 400;" |820-2879
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2419
| style="font-weight: 400;" |A1278
| style="font-weight: 400;" |Early 2011
| style="font-weight: 400;" |MacBookPro8,1
| style="font-weight: 400;" |820-2936
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2555
| style="font-weight: 400;" |A1278
| style="font-weight: 400;" |Late 2011
| style="font-weight: 400;" |MacBookPro8,1
| style="font-weight: 400;" |820-2936
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2554
| style="font-weight: 400;" |A1278
| style="font-weight: 400;" |Mid 2012
| style="font-weight: 400;" |MacBookPro9,2
| style="font-weight: 400;" |820-3115
| style="font-weight: 400;" |
|-
! style="font-weight: 400;" |<strong>15</strong>
| style="font-weight: 400;" |EMC 2255
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Late 2008
| style="font-weight: 400;" |MacBookPro5,1
| style="font-weight: 400;" |820-2330
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2325
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Mid 2009
| style="font-weight: 400;" |MacBookPro5,3
| style="font-weight: 400;" |820-2532
| style="font-weight: 400;" |820-2330
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2324
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Mid 2009 2.5Ghz
| style="font-weight: 400;" |MacBookPro5,4
| style="font-weight: 400;" |820-2533
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2353
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Mid 2010
| style="font-weight: 400;" |MacBookPro6,2
| style="font-weight: 400;" |820-2850
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2353-1
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Early 2011
| style="font-weight: 400;" |MacBookPro8,2
| style="font-weight: 400;" |820-2915
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2363
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Late 2011
| style="font-weight: 400;" |MacBookPro8,2
| style="font-weight: 400;" |820-2915
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2556
| style="font-weight: 400;" |A1286
| style="font-weight: 400;" |Mid 2012
| style="font-weight: 400;" |MacBookPro9,1
| style="font-weight: 400;" |820-3330
| style="font-weight: 400;" |
|-
! style="font-weight: 400;" |<strong>17</strong>
| style="font-weight: 400;" |EMC 2272
| style="font-weight: 400;" |A1297
| style="font-weight: 400;" |Early 2009
| style="font-weight: 400;" |MacBookPro5,2
| style="font-weight: 400;" |820-2390
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2329
| style="font-weight: 400;" |A1297
| style="font-weight: 400;" |Mid 2009
| style="font-weight: 400;" |MacBookPro5,2
| style="font-weight: 400;" |820-2610
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2352
| style="font-weight: 400;" |A1297
| style="font-weight: 400;" |Mid 2010
| style="font-weight: 400;" |MacBookPro6,1
| style="font-weight: 400;" |820-2849
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2352-1
| style="font-weight: 400;" |A1297
| style="font-weight: 400;" |Early 2011
| style="font-weight: 400;" |MacBookPro8,3
| style="font-weight: 400;" |820-2914
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2564
| style="font-weight: 400;" |A1297
| style="font-weight: 400;" |Late 2011
| style="font-weight: 400;" |MacBookPro8,3
| style="font-weight: 400;" |820-2914
| style="font-weight: 400;" |
|}
{| class="wikitable" style="width: 100%" width="885" ;
! colspan="7" width="885" |<h3>MacBook Pro Retina</h3>
|-
!<strong>Screen Size</strong>
!<strong>EMC</strong>
!<strong>Model N°</strong>
!<strong>Date</strong>
!<strong>Model ID</strong>
! colspan="2" |<strong>Board Number</strong>
|-
! style="font-weight: 400;" |<strong>13</strong>
| style="font-weight: 400;" |EMC 2557
| style="font-weight: 400;" |A1425
| style="font-weight: 400;" |Late 2012
| style="font-weight: 400;" |MacBookPro10,2
| style="font-weight: 400;" |820-3462
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2672
| style="font-weight: 400;" |A1425
| style="font-weight: 400;" |Early 2013
| style="font-weight: 400;" |MacBookPro10,2
| style="font-weight: 400;" |820-3190
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2678
| style="font-weight: 400;" |A1502
| style="font-weight: 400;" |Late 2013
| style="font-weight: 400;" |MacBookPro11,1
| style="font-weight: 400;" |820-3476
| style="font-weight: 400;" |820-3536
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2875
| style="font-weight: 400;" |A1502
| style="font-weight: 400;" |Mid 2014
| style="font-weight: 400;" |MacBookPro11,1
| style="font-weight: 400;" |820-3476
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2835
| style="font-weight: 400;" |A1502
| style="font-weight: 400;" |Early 2015
| style="font-weight: 400;" |MacBookPro12,1
| style="font-weight: 400;" |820-4924
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2978
| style="font-weight: 400;" |A1708
| style="font-weight: 400;" |2016 2xTBT3 No TB
| style="font-weight: 400;" |MacBookPro13,1
| style="font-weight: 400;" |820-00875
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3071
| style="font-weight: 400;" |A1706
| style="font-weight: 400;" |2016 4xTBT3 TB
| style="font-weight: 400;" |MacBookPro13,2
| style="font-weight: 400;" |820-00239
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3164
| style="font-weight: 400;" |A1708
| style="font-weight: 400;" |Mid 2017 2xTBT3 No TB
| style="font-weight: 400;" |MacBookPro14,1
| style="font-weight: 400;" |820-00840
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3163
| style="font-weight: 400;" |A1706
| style="font-weight: 400;" |Mid 2017 4xTBT3 TB
| style="font-weight: 400;" |MacBookPro14,2
| style="font-weight: 400;" |820-00923
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3124
| style="font-weight: 400;" |A1989
| style="font-weight: 400;" |2018 4xTBT3 TB
| style="font-weight: 400;" |MacBookPro15,2
| style="font-weight: 400;" |820-00850
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3358
| style="font-weight: 400;" |A1989
| style="font-weight: 400;" |2019 4xTBT3 TB
| style="font-weight: 400;" |MacBookPro15,2
| style="font-weight: 400;" |820-00850
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3301
| style="font-weight: 400;" |A2159
| style="font-weight: 400;" |2019 2xTBT3 TB
| style="font-weight: 400;" |MacBookPro15,4
| style="font-weight: 400;" |820-01598
| style="font-weight: 400;" |
|-
|
|EMC 3456
|A2289
|2020 2xTBT3 TB
|MacBookPro16,3
|820-01987
|
|-
|
|EMC 3348
|A2251
|2020 4XTBT3 TB
|MacBookPro16,2
|820-01949
|
|-
|
|EMC 8162
|A2338
|Late 2020 M1
|MacBookPro17,1
|820-02020
|
|-
|
|EMC 8162
|A2338
|Mid 2022 M2
|Mac14,7
|820-02773
|
|-
!<strong>14</strong>
|EMC 3650
|A2442
|Late 2021 M1
|MacBookPro18,3
|820-02098
|
|-
|
|EMC 3650
|A2442
|Late 2021 M1
|MacBookPro18,4
|820-02098
|
|-
|
|EMC 8102
|A2779
|2023 M2 Pro
|Mac14,9
|
|
|-
|
|EMC 8102
|A2779
|2023 M2 Max
|Mac14,5
|
|
|-
|
|EMC 8407
|A2992
|2023 M3 Pro
|Mac15,6
|
|
|-
|
|EMC 8407
|A2992
|2023 M3 Max 14-core
|Mac15,10
|
|
|-
|
|EMC 8407
|A2992
|2023 M3 Max 16-core
|Mac15,8
|
|
|-
! style="font-weight: 400;" |<strong>15</strong>
| style="font-weight: 400;" |EMC 2512
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Mid 2012
| style="font-weight: 400;" |MacBookPro10,1
| style="font-weight: 400;" |820-3332
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2673
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Early 2013
| style="font-weight: 400;" |MacBookPro10,1
| style="font-weight: 400;" |820-3332
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2674
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Late 2013
| style="font-weight: 400;" |MacBookPro11,2
| style="font-weight: 400;" |820-3662
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2876
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Late 2013
| style="font-weight: 400;" |MacBookPro11,2
| style="font-weight: 400;" |820-3787
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2745
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Mid 2014
| style="font-weight: 400;" |MacBookPro11,3
| style="font-weight: 400;" |820-3662
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2881
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Mid 2014
| style="font-weight: 400;" |MacBookPro11,3
| style="font-weight: 400;" |820-3787
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2909
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Mid 2015
| style="font-weight: 400;" |MacBookPro11,4
| style="font-weight: 400;" |820-00138
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2910
| style="font-weight: 400;" |A1398
| style="font-weight: 400;" |Mid 2015
| style="font-weight: 400;" |MacBookPro11,5
| style="font-weight: 400;" |820-00163
| style="font-weight: 400;" |820-00426
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3072
| style="font-weight: 400;" |A1707
| style="font-weight: 400;" |Late 2016
| style="font-weight: 400;" |MacBookPro13,3
| style="font-weight: 400;" |820-00281
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3162
| style="font-weight: 400;" |A1707
| style="font-weight: 400;" |Mid 2017
| style="font-weight: 400;" |MacBookPro14,3
|820-00928
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC3215
| style="font-weight: 400;" |A1990
| style="font-weight: 400;" |Mid 2018
| style="font-weight: 400;" |MacBookPro15,1
|820-01041
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC3215
| style="font-weight: 400;" |A1990
| style="font-weight: 400;" |Mid 2018
| style="font-weight: 400;" |MacBookPro15,3
|820-01041
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3359
| style="font-weight: 400;" |A1990
| style="font-weight: 400;" |2019
| style="font-weight: 400;" |MacBookPro15,1
| style="font-weight: 400;" |820-01814
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3359
| style="font-weight: 400;" |A1990
| style="font-weight: 400;" |2019
| style="font-weight: 400;" |MacBookPro15,3
|820-01814
| style="font-weight: 400;" |
|-
! style="font-weight: 400;" |<strong>16</strong>
| style="font-weight: 400;" |EMC 3347
| style="font-weight: 400;" |A2141
| style="font-weight: 400;" |2019
| style="font-weight: 400;" |MacBookPro16,1
|820-01700
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3651
| style="font-weight: 400;" |A2485
| style="font-weight: 400;" |2021 M1
| style="font-weight: 400;" |MacBookProXX,X
| style="font-weight: 400;" |820-02100
| style="font-weight: 400;" |
|-
|
|EMC 3651
|A2485
|2021 M1
|MacBookPro18,1
|820-02382
|
|-
|
|EMC 3651
|A2485
|2021 M1
|MacBookPro18,2
|820-02382
|
|-
|
|EMC 8103
|A2780
|2023 M2 Pro
|Mac14,10
|
|
|-
|
|EMC 8103
|A2780
|2023 M2 Max
|Mac14,6
|
|
|-
|
|EMC 8408
|A2991
|2023 M3 Pro
|Mac15,7
|
|
|-
|
|EMC 8408
|A2991
|2023 M3 Max 14-core
|Mac15,11
|
|
|-
|
|EMC 8408
|A2991
|2023 M3 Max 16-core
|Mac15,9
|
|
|}
{| class="wikitable" style="width: 100%" width="885" ;
! colspan="7" width="885" |<h3>MacBook Air</h3>
|-
!<strong>Screen Size</strong>
!<strong>EMC</strong>
!<strong>Model N°</strong>
!<strong>Date</strong>
!<strong>Model ID</strong>
! colspan="2" |<strong>Board Number</strong>
|-
! style="font-weight: 400;" |<strong>11</strong>
| style="font-weight: 400;" |EMC 2393
| style="font-weight: 400;" |A1370
| style="font-weight: 400;" |Late 2010
| style="font-weight: 400;" |MacBookAir3,1
| style="font-weight: 400;" |820-2796
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2471
| style="font-weight: 400;" |A1370
| style="font-weight: 400;" |Mid 2011
| style="font-weight: 400;" |MacBookAir4,1
| style="font-weight: 400;" |820-3024
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2558
| style="font-weight: 400;" |A1465
| style="font-weight: 400;" |Mid 2012
| style="font-weight: 400;" |MacBookAir5,1
| style="font-weight: 400;" |820-3208
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2631
| style="font-weight: 400;" |A1465
| style="font-weight: 400;" |Mid 2013
| style="font-weight: 400;" |MacBookAir6,1
| style="font-weight: 400;" |820-3435
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2631
| style="font-weight: 400;" |A1465
| style="font-weight: 400;" |Early 2014
| style="font-weight: 400;" |MacBookAir6,1
| style="font-weight: 400;" |820-3435
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2924
| style="font-weight: 400;" |A1465
| style="font-weight: 400;" |Early 2015
| style="font-weight: 400;" |MacBookAir7,1
| style="font-weight: 400;" |820-00164
| style="font-weight: 400;" |
|-
! style="font-weight: 400;" |<strong>13</strong>
| style="font-weight: 400;" |EMC 2334
| style="font-weight: 400;" |A1304
| style="font-weight: 400;" |Mid 2009
| style="font-weight: 400;" |MacBookAir2,1
| style="font-weight: 400;" |820-2375
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2392
| style="font-weight: 400;" |A1369
| style="font-weight: 400;" |Late 2010
| style="font-weight: 400;" |MacBookAir3,2
| style="font-weight: 400;" |820-2838
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2469
| style="font-weight: 400;" |A1369
| style="font-weight: 400;" |Mid 2011
| style="font-weight: 400;" |MacBookAir4,2
| style="font-weight: 400;" |820-3023
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2559
| style="font-weight: 400;" |A1466
| style="font-weight: 400;" |Mid 2012
| style="font-weight: 400;" |MacBookAir5,2
| style="font-weight: 400;" |820-3209
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2632
| style="font-weight: 400;" |A1466
| style="font-weight: 400;" |Mid 2013
| style="font-weight: 400;" |MacBookAir6,2
| style="font-weight: 400;" |820-3437
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 2632
| style="font-weight: 400;" |A1466
| style="font-weight: 400;" |Early 2014
| style="font-weight: 400;" |MacBookAir6,2
| style="font-weight: 400;" |820-3437
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC2925
| style="font-weight: 400;" |A1466
| style="font-weight: 400;" |Early 2015
| style="font-weight: 400;" |MacBookAir7,2
| style="font-weight: 400;" |820-00165
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3178
| style="font-weight: 400;" |A1466
| style="font-weight: 400;" |2017
| style="font-weight: 400;" |MacBookAir7,2
| style="font-weight: 400;" |820-00165
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3184
| style="font-weight: 400;" |A1932
| style="font-weight: 400;" |Late 2018
| style="font-weight: 400;" |MacBookAir8,1
| style="font-weight: 400;" |820-01521
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3184
| style="font-weight: 400;" |A1932
| style="font-weight: 400;" |True Tone 2019
| style="font-weight: 400;" |MacBookAir8,2
|820-01521
| style="font-weight: 400;" |
|-
| style="font-weight: 400;" |
| style="font-weight: 400;" |EMC 3302
| style="font-weight: 400;" |A2179
| style="font-weight: 400;" |Early 2020
| style="font-weight: 400;" |MacBookAir9,1
| style="font-weight: 400;" |820-01958
| style="font-weight: 400;" |
|-
|
|EMC 3598
|A2337
|Late 2020 M1
|MacBookAir10,1
|820-02016
|
|-
|
|EMC 4074
|A2681
|Mid 2022 M2
|Mac14,2
|820-02536
|
|-
|
|EMC 8611
|A3113
|2024
|Mac15,12
|820-03285
|
|-
!<strong>15</strong>
|EMC 8301
|A2941
|2023
|Mac14,15
|
|
|-
|
|EMC 8612
|A3114
|2024
|Mac15,13
|
|
|}
==11”==
===A1370 MacBook Air 11" MagSafe 1===
820-2796 2010 MacBook Air 11"<br>
820-3024 2011 MacBook Air 11"
===A1465 MacBook Air 11" MagSafe 2===
820-3208 2012 MacBook Air 11"<br>
820-3435 2013/2014 MacBook Air 11"<br>
820-00164 2015 MacBook Air 11"
==12”==
===A1534 MacBook 12"===
820-00045 2015 MacBook 12"<br>
820-00244 2016 MacBook 12"<br>
820-00687 2017 MacBook 12"
==13”==
===A1181 MacBook===
820-1889 2006/M2007 MacBook T2400/T2500/T5600/T7200/T7400<br>
820-2213 M2007 MacBook T7200/T7400<br>
820-2279 L2007/E2008/White L2008 MacBook<br>
820-2496 2009 MacBook<br>
===A1237 MacBook Air 2008===
820-2179 MacBook Air 13" E2008
===A1278 Macbook (Pro) 13" Unibody===
820-2327 2008 MacBook Unibody<br>
820-2530 2009 MacBook Pro 13"<br>
820-2879 2010 MacBook Pro 13"<br>
820-2936 2011 MacBook Pro 13"<br>
820-3115 2012 MacBook Pro 13"
===A1304 MacBook Air 2009===
820-2375 MacBook Air 13" L2008/2009
===A1342 Plastic MacBook===
820-2567 2009 MacBook Unibody<br>
820-2883 2009 MacBook Unibody (Early 2010 board revision)<br>
820-2877 2010 MacBook Unibody
===A1369 MacBook Air 13" MagSafe 1===
820-2838 2010 MacBook Air 13"<br>
820-3023 2011 MacBook Air 13"
===A1425 MacBook Pro 13" Retina===
820-3462/3190 2012/E2013 MacBook Pro 13" Retina
===A1466 MacBook Air 13" MagSafe 2===
820-3209 2012 MacBook Air 13"<br>
820-3437 2013/2014 MacBook Air 13"<br>
820-00165 2015/2017 MacBook Air 13"
===A1502 MacBook Pro 13" Retina===
820-3476 L2013/2014 MacBook Pro 13" Retina<br>
820-3536 L2013 MacBook Pro 13" Retina 4GB RAM<br>
820-4924 2015 MacBook Pro 13" Retina
===A1706 MacBook Pro 13" Touch Bar===
820-00239 2016 MacBook Pro 13" Touch Bar<br>
820-00923 2017 MacBook Pro 13" Touch Bar
===A1708 MacBook Pro 13" Two USB C===
820-00875 2016 MacBook Pro 13" Two USB C<br>
820-00840 2017 MacBook Pro 13" Two USB C
===A1932 MacBook Air 13"===
820-01521 2018 MacBook Air 13"
820-01521 2019 MacBook Air 13"
===A1989 MacBook Pro 13" Touch Bar===
820-00850 2018 MacBook Pro 13" Touch Bar<br>
820-00850 2019 MacBook Pro 13" Touch Bar
===A2159 MacBook Pro 13" Touch Bar Two USB C===
820-01598 2019 MacBook Pro 13"
===A2179 MacBook Air 13"===
820-01958 2020 MacBook Air 13"
===A2251 MacBook Pro 13" Touch Bar 4 TBT3===
820-01949 2020 MacBook Pro 13" Touch Bar 4 TBT3
===A2289 MacBook Pro 13" Touch Bar 2 TBT3===
820-01987 2020 MacBook Pro 13" Touch Bar 2 TBT3
===A2337 MacBook Air 13" M1===
820-02016 2020 MacBook Air 13" M1
===A2338 MacBook Pro 13" M1/M2===
820-02020 2020 MacBook Pro 13" M1<br>
820-02773 2022 MacBook Pro 13" M2
===A2681 MacBook Air 13" M2===
820-02536 2022 MacBook Air 13" M2
==14”==
===A2442 MacBook Pro 14" M1===
820-02098 2021 MacBook Pro 14" M1
===A2779 MacBook Pro 14" M2===
820-02841 2023 MacBook Pro 14" M2
===A2992 MacBook Pro 14" M3 Pro===
820-02918 2023 MacBook Pro 14" M3
==15”==
===A1150 MacBook Pro 15" E2006===
820-1881 T2400/T2500/T2600<br>
820-1993 T2400/T2500/T2600<br>
820-2056 T2600
===A1211 MacBook Pro 15" L2006===
820-2054
===A1226 MacBook Pro 15" 2007===
820-2101
===A1260 MacBook Pro 15" E2008===
820-2249 MacBook Pro 15” E2008
===A1286 MacBook Pro 15" Unibody===
820-2330 L2008/E2009 MacBook Pro 15"<br>
820-2523 M2009 with dGPU<br>
820-2532 E2009 MacBook Pro 15" dGPU<br>
820-2533 M2009 MacBook Pro 15" iGPU<br>
820-2850 2010 MacBook Pro 15"<br>
820-2915 2011 MacBook Pro 15"<br>
820-3330 2012 MacBook Pro 15"
===A1398 MacBook Pro 15" Retina===
820-3332 2012/E2013 MacBook Pro 15" Retina<br>
820-3662 L2013/2014 MacBook Pro 15" Retina iGPU<br>
820-3787 L2013/2014 MacBook Pro 15" Retina dGPU<br>
820-00138 2015 MacBook Pro 15" Retina iGPU<br>
820-00163/820-00426 2015 MacBook Pro 15" Retina dGPU
===A1707 MacBook Pro 15" Touch Bar===
820-00281 2016 MacBook Pro 15" Touch Bar<br>
820-00928 2017 MacBook Pro 15" Touch Bar
===A1990 MacBook Pro 15" Touch Bar===
820-01041 2018 MacBook Pro 15" Touch Bar<br>
820-01326 2018 MacBook Pro 15" Touch Bar Radeon Pro Vega<br>
820-01814 2019 MacBook Pro 15" Touch Bar<br>
820-01827 2019 MacBook Pro 15" Touch Bar Radeon Pro Vega
==16”==
===A2141 MacBook Pro 16"===
820-01700 2019 MacBook Pro 16" Radeon Pro 5300M/5500M<br>
820-02037 2019 MacBook Pro 16" Radeon Pro 5600M
===A2485 MacBook Pro 16" M1===
820-02100 2021 MacBook Pro 16" M1 Pro<br>
820-02382 2021 MacBook Pro 16" M1 Pro
===A2780 MacBook Pro 16" M2===
820-02890 2023 MacBook Pro 16" M2 Pro
==17”==
===A1151 MacBook Pro 17" E2006===
820-2023
===A1173 iMac 17" E2006===
820-1919
===A1195 iMac 17" M/L2006===
820-1960 M2006 iMac 17"<br>
820-2090 L2006 iMac 17" Intel GMA 950
===A1208 iMac 17" L2006===
820-2052 L2006 iMac 17" ATi Radeon X1600
===A1212 MacBook Pro 17" L2006===
820-2059
===A1229 MacBook Pro 17" 2007===
820-2132
===A1261 MacBook Pro 17" 2008===
820-2262
===A1297 MacBook Pro 17" Unibody===
820-2390 E2009 MacBook Pro 17"<br>
820-2610 M2009 MacBook Pro 17"<br>
820-2849 2010 MacBook Pro 17"<br>
820-2914 2011 MacBook Pro 17"
==20”==
===A1174 iMac 20"===
820-1888
===A1207 iMac 20"===
820-2031
===A1224 iMac 20" Aluminum===
820-2143 2007 20" iMac<br>
820-2223 2008 20" iMac<br>
820-2347 2009 20" iMac<br>
820-2542 (2009)/2010 20" iMac Edu
==21.5”==
===A1311 iMac 21.5" Unibody===
820-2494 2009 21.5" iMac<br>
820-2784 2010 21.5" iMac<br>
820-2641 2011 21.5" iMac i5-2400s<br>
820-3126 2011 21.5" iMac
===A1418 iMac 21.5 Slim===
820-3302 2012 iMac 21.5"<br>
820-3172 E2013 iMac 21.5" Edu<br>
820-3482 L2013 iMac 21.5"<br>
820-3588 L2013 iMac 21.5"iGPU<br>
820-4668 2014 iMac 21.5"<br>
820-00034/820-00430 2015 iMac 21.5" Dual Core<br>
820-00431 2015 iMac 21.5" 4K<br>
820-00597 2017 iMac 21.5" 4K<br>
820-00629/820-01069 2017 iMac 21.5"<br>
820-01061 L2017 iMac 21.5" 4K Core i5 7400 3.00GHz<br>
===A2116 iMac 21.5" 4K===
820-01237 2019 iMac 21.5"
==24”==
===A1200 iMac 24"===
820-1984
===A1225 iMac 24" Aluminum===
820-2110 2007 24" iMac<br>
820-2301 2008 24" iMac<br>
820-2491 2009 24" iMac
===A2438 iMac 24" M1 4× USB-C===
820-02009
===A2439 iMac 24" M1 2× USB-C===
820-02188
==27”==
===A1312 iMac 27" Unibody===
820-2507 2009 27" iMac Core2Duo<br>
820-2733 2009 27" iMac i5/i7<br>
820-2901 2010 27" iMac<br>
820-2828 2011 27" iMac
===A1419 iMac 27" Slim===
820-3298 2012 iMac 27" 512MB VRAM<br>
820-3299 2012 iMac 27"1/2GB VRAM<br>
820-3478 2013 iMac 27" 1GB VRAM<br>
820-3481 2013 iMac 27" 2GB VRAM<br>
820-4652 L2014/M2015 iMac 27" Radeon R9 M290/M290X<br>
820-5029 L2014 iMac 27" Radeon R9 M295X<br>
820-00134 L2015 iMac 27" Radeon R9 M395<br>
820-00291 L2015 iMac 27" Radeon R9 M380/M390<br>
820-00292 L2015 iMac 27" Radeon R9 M390<br>
820-00609/820-01134 2017 iMac 27"
===A1862 iMac Pro===
820-00967 2017 iMac Pro
===A2115 iMac 27" 5K===
820-01236 2019 iMac 27"<br>
820-01779 2020 iMac 27" Radeon Pro 5300/5500 XT<br>
820-01823 2020 iMac 27" Radeon Pro 5700/5700 XT
==*==
===A1176 Mac mini 2006/2007===
820-1900
===A1283 Mac mini 2009===
820-2366
===A1347 Mac mini===
820-2577 Mac mini 2010 320M<br>
820-2993 Mac mini 2011 Dual-core HD3000<br>
820-3017 Mac mini 2011 Server Quad-core HD3000<br>
820-3059 Mac mini 2011 Dual-core 6630M<br>
820-3227 Mac mini 2012 Dual-core HD4000<br>
820-3228 Mac mini 2012 Quad-core HD4000<br>
820-5509 Mac mini 2014 HD5000
===A1993 Mac mini===
820-00939 Mac mini 2018<br>
===A2348 Mac mini===
820-02091 Mac mini 2020 M1<br>
===A2816 Mac mini M2 Pro===
820-02832 Mac mini 2023 M2 Pro
__NOEDITSECTION__
[[Category:Mac]]
c7xo0qwf5971x4x9w8djbtweim8goa6
Board Number by Screen Size
0
528
1149
2020-04-29T16:39:43Z
Chrisb
1
Redirected page to [[Board Number by A Number]]
1149
wikitext
text/x-wiki
#REDIRECT [[Board Number by A Number]]
pxr0iml1jhl3li7zfctsg1q206jes2h
Board Number by Year
0
527
1148
2020-04-29T16:38:36Z
Chrisb
1
Redirected page to [[Board Number by A Number]]
1148
wikitext
text/x-wiki
#REDIRECT [[Board Number by A Number]]
pxr0iml1jhl3li7zfctsg1q206jes2h
Boot Camp
0
2102
6316
6311
2021-12-28T13:13:32Z
Piernov
10
typo
6316
wikitext
text/x-wiki
==Partitioning==
When installing in Legacy BIOS mode, a Hybrid MBR is required.
macOS Disk Utility will automatically create a Hybrid MBR when creating a MS-DOS FAT partition if it's one of the first 4 partitions on the drive. Note that the EFI partition at the beginning of the drive is hidden so it probably limits it to the first 3 partitions.
==Quirks by model==
===MacBook Pro 17" 2007 A1229===
====Issues====
EFI 1.x with UGA only, see [[Boot Camp#EFI 1.x UGA/UEFI 2.x GOP|EFI 1.x UGA/UEFI 2.x GOP]]. Windows cannot be installed in UEFI mode, only Legacy BIOS mode.<br>
Affected by the "Select CD-ROM Boot Type:" bug (see [[Boot Camp#"Select CD-ROM Boot Type:"|"Select CD-ROM Boot Type:"]]), the workaround does not seem to work<br>
Seems to be affected by the Legacy BIOS USB boot bug. (see [[Boot Camp#Legacy BIOS USB boot|Legacy BIOS USB boot]])
To install Windows:
* Use a DVD-ROM that does not trigger the "Select CD-ROM Boot Type:" bug
* Or perform pre-installation in Legacy BIOS mode from another machine
This machine can boot Windows XP to Windows 11, however Boot Camp drivers don't work on Windows 11 (see below).
====Drivers====
Latest Boot Camp drivers package for this machine is 4.0.4033 (https://support.apple.com/kb/DL1630).<br>
=====Windows 10=====
The Boot Camp drivers package is designed for Windows 7 but it will also work on Windows 10, provided you enable compatibility mode on "Drivers/Apple/BootCamp64.msi" and run this file from an administrator PowerShell.<br>
Note that it will install an old version of NVidia drivers which can cause issues on Windows 10, so it has to be uninstalled before installing the newest version from Windows Update or NVidia website.
=====Windows 11=====
The Boot Camp drivers package is not compatible with Windows 11. It will cause two separate issues:
* "WDF_VIOLATION" BSoD shortly after desktop appears
* 99% CPU usage, slow as hell
For now there is no known solution to these issues. Also, uninstalling drivers from safe boot can help solving the first issue but not the second one. Restoring to a system restore point taken before installing the driver package or resetting Windows 11 to factory (from recovery menu) is required.
As a result the following features do not work on Windows 11:
* Keyboard multimedia keys
* Touchpad multi-touch/right click
* iSight webcam
* Bluetooth
* Maybe others
WiFi works with drivers provided by Microsoft.
==Issues==
===Eject optical disk during installation===
It is not possible to eject the optical disc during the installation process by pressing on the "Eject" key of the keyboard. As a result, it is not possible to swap discs during installation. Therefore, Windows "upgrade-only" discs cannot be used (as they require to insert the previous Windows version disc to allow installation), and Windows editions that came on multiple discs (such as Windows XP Media Center Edition 2005) cannot be installed properly either. Either the installation will fail or the additional packs for this special edition won't be installed).
On the Mac Pro you might be able to press the physical eject button of the DVD drive, although it is not available on the front panel.
===EFI 1.x UGA/UEFI 2.x GOP===
Older Macs (2008 and older? not sure) only have UGA EFI drivers available.
Windows is not compatible with UGA, , so it cannot be installed in EFI mode on these machines. Actually, Windows 10 installer will boot but there will be no display.
Windows is only compatible with GOP, which is what can be found on all standard UEFI.
To confirm whether the machine has UGA or GOP available, install rEFInd, reboot and at the rEFInd screen go into About menu.
OpenCore's "GopPassThrough" does not solve this issue, although it is required to get OpenCore GUI to load.
Modern Linux distributions are not affected by this issue, they handle UGA properly, however they may be affected by another issue (VBIOS not loaded in EFI mode so some graphics drivers don't work properly).
==="Select CD-ROM Boot Type:"===
Older Macs will not be able to boot some optical discs in Legacy BIOS mode and will get stuck on a "Select CD-ROM Boot Type:" message. Issue is mainly present with burnt Windows 7 and 8 DVD.<br>
On some Macs, pressing repeatedly or holding the "1" key and the "Return" key may help get past this message. Other Macs will register the "1" key press but not the "Return" key so they will still get stuck there.
There is a way to burn a DVD that will not trigger this.
See https://apple.stackexchange.com/questions/172048/select-cd-rom-boot-type-error-during-windows-install .
===Legacy BIOS USB boot===
Older Macs (at least 2006, some 2007 and maybe newer) will have trouble booting from USB drive in Legacy BIOS mode, whereas booting in UEFI mode works.
USB optical drives may still work properly.
1cw26cfig9qrgb9awjxe1c7onzy5pd9
Booting PPC from USB
0
137
546
393
2020-02-02T11:24:49Z
Piernov
10
Category Mac PowerPC
546
wikitext
text/x-wiki
To boot a PowerMac (or an iMac, iBook, eMac, etc...) from an USB stick or drive<ref>Original source Macintosh Repository[https://www.macintoshrepository.org/articles/115-how-to-boot-ppc-powermacs-g3-g4-g5-from-a-usb-stick-or-drive-]</ref>, if you have a G5 or late G4 model, first refer to the boot from CD guide and if it does not work, then follow these instructions:
1. Plug your USB stick or drive in an USB port
2. Power the computer on (or restart it if it's already running) and immediately...
3. ...hold down those 4 keys together: [ CMD + OPT/ALT + O + F ] until you see the white Open Firmware screen.
4. Then at the Open Firmware command prompt, type this and press ENTER: '''boot usb0/disk@1:,\\:tbxi'''
''(Please make sure that there are '''2 backslashes''' before :tbxi just in case this page contents gets screwed up in the future)''
'''Note:''' You may have to change '''usb0''' for '''usb1''' depending on which port you plugged your USB stick in. If it still doesn't work, you can try this command: '''boot ud:,\\:tbxi'''
'''Note 2:''' If you want to boot a non-Macintosh partition, say for instance a PPC Linux distribution, then change '''tbxi''' for '''yaboot'''
'''Note 3:''' If you get a CAN'T OPEN error, it means that you forgot to plug in your USB stick ''BEFORE'' powering on the computer, so turn the Mac off and start over from step #1.
<references />
[[Category:Mac]] [[Category:PowerPC]]
fpel971xz1vbk6yiglehgnkzmuy4oxa
Bootup Signal Order
0
784
5207
5206
2020-11-08T17:19:21Z
Piernov
10
5207
wikitext
text/x-wiki
==Ivy Bridge Haswell and Broadwell==
===Legend===
'''GREY''' boxes are power rails<br>'''GREEN''' boxes are power good signals<br>'''BLUE''' boxes are enable/reset signals<br>'''YELLOW''' boxes are clocks<br>'''ORANGE''' boxes are not a signal "coming on" but still important steps in the sequence.
----
===S3 to S0 State for Ivy Bridge Haswell and Broadwell===
[[File:S3 to S0 State.pdf|800x800px]]<br>
This comes after "G3 to S3 State for Ivy Bridge Haswell and Broadwell" and before "S0 to Reset State for Ivy Bridge Haswell and Broadwell". All credit to Piernov.
----<br />
===S0 to Reset State for Ivy Bridge Haswell and Broadwell===
[[File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf|800x800px]]<br>
This comes after "S3 to S0 State for Ivy Bridge Haswell and Broadwell" and before "Reset to EFI POST State for Ivy Bridge Haswell and Broadwell". All credit to Piernov.
====Errata====
Somewhere in there, PM_SYSRST_L is required to be high, otherwise the platform will stay in a reset state.
----<br />
===Reset to EFI POST State for Ivy Bridge Haswell and Broadwell===
[[File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf|800x800px]]<br>This comes after [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]]. All credit to Piernov.
90xz98z6pfxkuvf1ck6zeowjz2gwswb
CD3215 Bootup Sequence
0
18
7033
6946
2023-12-16T14:21:30Z
Inwerp
16
7033
wikitext
text/x-wiki
== CD3215 Revisions ==
CD3215 is a customized version of TPS65982/86 Texas Instruments power controller. Due to OTP configuration it is not compatible with OEM TPS chip. OTP configuration is coded in suffix: B01, B03, C01, C03.
B and C series are not the same. B03 is used on some A1708/06 logicboards (2016) and can be replaced with C series if you swap all chips.
B01 and B03 are interchangable on A1534 boards, but C revision seem not to work.
== 20V Sequence ==
[[File:A1706_USB-C_Sequence.jpg|none|frame|20V sequence]]
'''Bold text'''==Getting 20V on the charger==
If a CD3215 does not have the LDO outputs, test the lines for shorts, otherwise the chip is missing power or bad.
[http://www.ti.com/lit/ds/slvsd13c/slvsd13c.pdf Data sheet] of closest Ti chip.<br><br>A bad CD3215 can often cause a loop at step 10. All of the CD3215s need to be fully functional and communicate with the SMC before the CD3215 connected to the charger will request 20V.
The TBT ROM is required to get to 20V. It is powered by the CD3215 on the opposite side. It will not boot unless it can communicate. It seems with liquid in that area, the trace between the LDO of the CD3215 and TBT ROM gets damaged at the test point. Without communication with the TBT ROM, the 1.1V BMC LDO (PIN 35) won't come up while other LDOs will be present. The 1.1V BMC LDO is used to drive the logic negotiating USB-PD (USB 2.0 communications to charger). When that happens, when USB-C is connected to this CD3215, it will not negotiate 20V and get stuck on 5V, not cycling.
When one CD3215 in the system is bad, it will often cause others to not work as well, and they will often be power cycling after starting USB-PD negotiation as a result.
The CD3215 in one pair work in a master-slave fashion. For example on 820-00281, U3200 is the master while U3100 is the slave. The master is connected directly to the TBT ROM (U2890), while the slave (U3100) reads the TBT ROM firmware through the master (U3200). As a result, if the master (U3200) is not working properly, the slave (U3100) won't work either.
If all ports in all orientations are stuck at 5V, not power cycling, 1.1V BMC LDOs are good and the CC1/CC2 show good diode mode measurements, then there is probably an issue related to the communication between SMC and the USB-C controllers. Make sure to check that SMC_RESET_L and SMC_USBC_INT_L are properly pulled up to 3.3V.
Please note, the chip designations and net names are from an A1706.
{| class="wikitable sortable mw-collapsible"
|+Steps Before 20V on Charger
|-
|'''Step'''||'''Source'''||'''Name of Net'''||'''Voltage'''
|-
|1||J3300||PP20V_USBC_XB_VBUS||5V
|-
|2||U3200
(Check these voltages
on each CD3215)
|PP3V3_UPC_XB_LDO||3.3V
|-
| || ||PP1V8_UPC_XB_LDOA||1.8V
|-
| || ||PP1V8_UPC_XB_LDOD||1.8V
|-
| || ||PP1V1_UPC_XB_LDO_BMC '''(On active port after reading TBT ROM)'''
BMC stands for "Binary Mark Code" which is a communication protocol for PD interface.
Lack of this LDO is a clear indicator that either cd3215 is failed or its bootcode is corrupted<br />
|1.1V
|-
|3||U3200||HV_GATE1||High(5v, later 20V)(Air 10v, later 20V)
|-
| ||U3200||HV_GATE2||High(5v, later 20V)(Air 7.8v, later 20V)
|-
|4||Q3200||PPDCIN_G3H||5V
|-
|5||U7000||TBA_VDDA (PPCHGR_VDDA)||5V
|-
|6||U7000||PM_EN_P3V3_G3H (NC_CHGR_EN_VR1)||3.3V (5V on many boards)
|-
|7||U6903||PP3V3_G3H||3.3V
|-
|8||U5000||PP1V2_G3H_SMC_VDDC or PP1V2_S5_SMC_VDDC||1.2V
|-
|9||U5165||PP3V0_G3H_AVREF_SMC or PP3V0_S5_AVREF_SMC||3.0V
|-
|9.1
|U7000
|SMC_RST
|3.3v
|-
|10||U5000||SMBUS_SMC_4_G3H_SCL||3.3V (clock)
|-
| ||U5000||SMBUS_SMC_4_G3H_SDA||3.3V (data)
|-
|11||U3200||USB_XB_CC1 (USBC_XB_CC1)||0.8V (data) (verify)
|-
| ||U3200||USB_XB_CC2 (USBC_XB_CC2)||0.8V (data) (verify)
|-
|12||J3300||PP20V_USBC_XB_VBUS||20V
|-
| ||J3300||PP20V_USBC_XB_VBUS||20V
|-
|13||J3300||HV_GATE1||>20V
|-
| ||J3300||HV_GATE2||>20V
|-
|14||Q3200||PPDCIN_G3H||20V
|-
|15||R7015||TBA_AUX_DET||5V
|-
|16||U7000||SMC_RST_L||3.3 (verify)
|-
|17||U7000||Q7030 Q7040 opening||Unknown (low maybe)
|}
==Booting fully==
Thunderbolt ROM is required to get 20V o as well as proper communication between all CD3215 chips, TBT Rom and SMC/T2. However, Thunderbolt controller itself might prevent TBT ROM from being read. TBT SPI chip is shared between CD3215 and TBT Controller, so if you have damage around TBT area, it would be a good idea to disconnect TBT IC from TBT SPI (instead of desoldering just move straps between TBT IC and TBT SPI. TBT Rom is only necessary on the side you have charger plugged in. If you remove TBT rom on inactive side, it will not prevent other side to switch into 20V(confirmed on T2 boards).
After you remove an underfilled chip, it is a good idea to check all pads which have vias underneath it. Even if pad seem fine, there might be a broken via. Use Diode mode and check such lines as i2C_UPC_T_SDA/SCL/INT. almost all datalines are usually 0.4V voltage drop. By waterdamage check UPC_TA_DBG* pulldown resisters - if this line is floating, this will cause master not to read SPI ROM.
[https://logi.wiki/index.php/MacBook_Diode_Mode_Measurements#CD3215C Diode measurements on #CD3215C footprint]
==Troubleshooting Techniques==
<youtube>6fEQS1MsZIw</youtube>
==Extra Data==
===piernov 11.8.2020 at 9:29 AM===
@ChrisB [VA, US] U3100/U3200 were 5V not cycling. U3200 was missing 1.1V BMC LDO. U3100 is missing it too, however it's the slave so it gets the TBT firmware through U3200 so that's normal. (I'm not sure if the slave could cause the master to have missing 1.1V BMC LDO though) At one point U3200 3.3V LDO was sending out 4.2V, so that was going to the TBT ROM (U2890) as well, I doubt it damaged it but it's a possibility. UB300 and UB400 were power cycling with 1.1V BMC LDO present, so they seem to be working fine, cycling being caused by the other pair.
→ Bad TBT ROM U2890 (1:24:00)
<youtube>https://www.youtube.com/watch?v=alhLFikA3g8</youtube>
===Satyrcon 11.12.2020===
Issue: 820-00840 wont take anything from charger, either port, or orientation.
Visible inspection resulted in marks on CC1/2 pins on both USB-C ports.
Diode mode measurement showed ~0.550V on 3 of them, one ~0.040V.
Replacing the port fixed the issue.
Conclusion: One damaged CC pin can cause the whole lot to stop functioning.
===Nrjnapu 08.05.2021===
820-00840 and 820-00875: U3100/U3200 were 5V not cycling. All LDO voltages were present. If battery is connected goes to 20V but 0mA and PPDCIN_G3H is 0V because Q32100/Q3200 closed due to 0v on UPC_XA_GATE1/UPC_XB_GATE1 . SMBUS_SMC_4_G3_SCL and SMBUS_SMC_4_G3_SDA at Step10 were 3.42V without any pull down, i.e. no communication between SMC and U3100/U3200. Resolved by reflowing SMC chip on 820-00875 and SMC replacement in case of 820-00840.
Conclusion: communication between SMC and U3100/U3200 should be checked at Step10 by using oscilloscope.
===Dusten Mahathy 11.27.21===
820-00928
5v and 100mA for about 10 seconds then would jump to 20v 60mA - PPBUS not being generated. Initially found short on SMBUS_SMC_5_G3_SDA caused by D6950. After diode replacement, same result. Resolved issue by replacing SMC.
Voltages I had
*PPBUS_G3H - 0.300
*PP3V3_G3H - 3.4
*TBA_GATE_Q1 - 0
*TBA_GATE_Q2 - 0
*TBA_GATE_Q3 - 0
*TBA_GATE_Q4 - 0
*PPVIN_G3H_P3V3G3H - 19.8
*TBA_AUX_DET - 5.07
*HPWR_EN_L - 3.36
*SMC_RESET_L - 3.4
*TBA_VDDA - 5.07
*TBA_VDDP - 5.07
*PM_EN_P3V3_G3H - 5.08
*PPDCIN_G3H_CHGR - 19.8
*SMC_BC_ACOK - 3.4
*CHGR_AMON - 0
*CHGR_BMON - 0
'''Guruji 17.01.2022'''
820-01041
I had no shorts in anyone of the usbc ports
PP3V3_G3H_RTC_X 3.3V
PP3V3_UPC_XA_LDO 3.3V
USBC_XA_CC2 WAS GIVING ME COMMUNICATION ON OSCILLOSCOPE
USBC_XA_CC1 SAME WAS COMMUNICATING
UPC_XA_FAULT_XA FLAG IS 0V WHEN ANY PORTS ARE BAD
PP1V8_UPC_XA_LDO 1.8V
PP1V8_SLPS2R 1.76V
12C_TBT_XA_INT_L 1.8
PP1V1_UPC_XA_LDO_BMC 1.1V
I2C_UPC_XA_BDG_CTL_SDA 0.8V ERROR R3108
I2C_UPC_XA_DBG_CTL_SCL 1V ERROR R3109
SO THE RESISTORS WHERE BAD r3108 &R3109 ARE 1MEG WHICH GAVE ME WEIRD VALUES AND ALSO THESE RESISTOR MUCH BE PULLED UP WHICH THE TRACE TO PP3V3_UPC_XA_LDO WERE OPEN TRACE .
SOLUTION: CHANGED THE r3109 AND r3108 AND REPAIR THE TRACE GAVE ME 20v AND VOILA LAPTOP POWERED ON.
'''Leshuq 17.02.2022 '''
Some words about '''820-00840''' and it's compatibility with different revisions of CD3215:
As we know, 820-00840 comes with CD3215'''C00''' revision and won't accept anything else.
Recently I've got my way around this. I've got 820-00361 '''DVT''' board that came with factory '''B03''' revision chips.
Board looks quite similar to 00840. In charging curcuitry I think the only difference it the TBT ROM, which is U2890.
So I decided to pull TBT ROM from 00361 and put it to 00840.
Well, that worked. Now my 00840 board accepts '''B01''' and '''B03''' revisions as well. Didn't tried putting back C00, though.
For those curious I've dumped the original contents of 00361 board's TBT ROM and uploaded them [https://repo.doslabelectronics.com/system_images/tbt/U2890_ROM_for_B01_B03_support.BIN here].
===[https://it-solve.au/macbook-repairs-adelaide IT-Solve] - 13.09.2022===
For Reference: I got A1708 00875 with blown CD3215B03 and replaced both with CD3215C00. Did not work as not cross-compatible. Following '''Leshuq's''' experience, swapped TBT ROM from 00840 which uses CD3215C00 onto the 00875 and '''did not work'''. Still stuck at 5V 0.02A
<br />
===Crumblenaut - 16.09.2022===
[https://electronics.stackexchange.com/a/333099 This page] helps describe what USB-C power supplies need from USB-C devices in order to give ANY power on VBUS - namely a 5.1k pulldown resistance on BOTH the CC1 and CC2 pins, provided by the connected device. Until then, VBUS will provide no power - not even 5V.
If you're not getting ANY USB-C multimeter readings, check diode mode on the CC lines of your CD3215 (they'll typically read ~0.35V to ~0.5V) and see if one stands out from the others. These often just have a capacitor and a diode between them and ground, and so the requisite resistance to engage ANY power on the given port is provided by a functional CD3215. If the ports themselves aren't damaged, then the issue is most likely one or many CD3215's.
Note that the board that brought this to light for me is an A1707's 820-00281, and it had THREE ports that gave NO response to a USB-C power adapter via a multimeter, and ONE port that worked perfectly at 20V to power and charge the system.
This also suggests that if you have any one CD3215 that's causing the system to stick at 5V, then it can prevent any of them from switching to 20V... but as long as you have a functional master CD3215 to TBT ROM connection and the others are failed to the point that they won't trigger any voltage input from a power supply, then the system may be able to function on that one port.
''Please take the information in my comment here with a grain of salt until it's verified further. ;)''
<br />
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Pro]]
k5wfcpsaleipx835ky53cyf29pnanwb
CD3217 and T2 Power on Sequence
0
597
7697
7696
2024-09-23T20:29:11Z
Inwerp
16
/* 820-02862 (MacBook Pro M3) */
7697
wikitext
text/x-wiki
{{DISPLAYTITLE:CD3217 and T2 Power on Sequence}}
=== T2 power sequence checkpoints ===
Calpe PMU is a very complex chip with multiple functions and buck converters inside. There are numerous things to check before you replace it if you do not have T2 power.
# primary power supply is PP3V3_G3H_RTC. This line is different from PP3V3_G3H supply and it is very important to understand that Calpe passes 3V3_G3H_RTC through to PP3V3_G3H before it issues PMU_VDDMAIN_EN which is a main enable signal for 3/5V regulator. It seems that it is issued once we got 20v on charger and ISL9240 switches into buck mode thus it is T2 firmware dependant.
# one of the main checkpoints to look at is Calpe LDO section(Page called PMIC LDOs in schematics). everything except S5 outputs (which are switched proactively by T2 via i2c interface later) should be present.
=== CD3217 checkpoints ===
If a CD3217 does not have the LDO outputs, test the lines for shorts, otherwise the chip is missing power or bad.
[http://www.ti.com/lit/ds/slvsd13c/slvsd13c.pdf Data sheet] of closest Ti chip.<br><br>A bad CD3217 can often cause a loop at step 10. All of the CD3217s need to be fully functional and communicate with the SMC before the CD3217 connected to the charger will request 20V
These documents are for specific boards, but will likely apply to most T2 Mac. Any net names and designators will be specific to the board it is from.
All 4 port macs require right side to be sourced from donor. Reason for that is preconfigured custom i2c address which is unlike CD3215 is hardcoded in internal bootrom. Left side uses straps to set i2c address but if you put OTP-Configured cd3217 from right side it wont work.
inrush mosfet pair is integrated into CD3217, so after DCIN short (if it happened before Buck-Boost converter) you can expect weird charging behaviour. if your mac works from battery and from charger separately but stops taking DCIN once you plug in battery - try to replace CD3217. if all ports have same behavior, it is quite possible that customer plugged PD-passive power supply (some displays have 2-3A 5V supplies). into all ports sequenually and killed all of them.
on M1 device might cause weird charging only if device is turned off.
==820-01055==
[[File:820-01055 Component Placement.pdf|800x800px]]
[[File:820-01055 Power Sequence.pdf|2319x2319px]]
[[File:820-01055 Power On Chart.pdf|800x800px]]
==820-01598==
[[File:820-01598 Prometheus Power Sequence Diagram LO2.pdf|800x800px]]
===T2 Power rails resistances (820-01700)===
PPVDDCPU_AWAKE 10-15 Ohm
PP0V82_SLPDDR 30-40 Ohm
PPVDDCPUSRAM_AWAKE 100-120 Ohm
PP1V1_SLPS2R 1-2 kOhm
PP0V9_SLPDDR 40 Ohm
PP1V8_SLPS2R 4 kOhm
===820-001700 CD3217 Compatibility issues and OTP Config===
4TBT port devices have mixed OTP/Strap configured i2C address for CD3217. On CD3215 each controller got its address with debug straps around it, however logicboards with more than 2 CD3217 use OTP (firmware configured) address. There is no known method of changing this configuration however it might be possible with devboard for similar TPS Chip, so most likely, it will not be ever possible to configure chips from other devices to be used on 820-01949 or 820-001700
[[File:820-001949 OTP.png|none|thumb|820-001949 Addresses]]
Left side of the laptop uses hardware (Strap) configured addresses, right side gets address from OTP config burned into CD3217. Thus, 1949/01700 cd3217 is interchangeable but you need to match right side.
If you have a logic analyzer, you can connect to the i2c line on the debug connector to see which exact port is malfunctioning. This might be also helpful if you have a bunch of randomly sourced cd3217s and you wish to find one with the right address.
820-01949 and 820-001700 are not interchangable because they seem to use different 5V output control. charging will work but usb connectivity wont.
'''<s>Information below might be obsolete/incorrect since it was more or less speculation based on repair experience, not actual board / datasheet analysis</s>'''
<s><br />
CD3217s from 2020/M1 boards will not work.</s>
<s>Symptoms of compatibility issue: PPBUS ~12.30, all ports are switching to 19V with T2 boot/or one side will turn 19v, another stays on 5v (19v 0.05-0.1A) there will be a visible heat spot on T2 1st pin corner (inner side since T2 itself is approx 2 smaller than IC)</s>
<s>Device will start from charged battery, there will be no issue with usb devices but charger wont be recognized.</s>
<s>Generally 001700 behaviour is very inconsistent. some boards might start with only one cd3217 present on board (should be the one connected to tbt rom of course), some will stuck in 5V 0.2A, some will stuck in 19v 0.1A(basically same power consumption).</s>
<s>Probably there are multiple revisions of the board, images pending. If you can add some more info, please report your revision / cd3217 behaviour below.</s>
[[File:T2 PMIC 001700 revision 2.png|thumb|<s>T2 PMIC 001700 revision 1(black dot inductors)</s>|alt=|none]]
<s><br /></s>
[[File:T2 PMIC 001700 early revision.png|thumb|<s>Revision 2 (white dots)</s>|alt=|none]]
===820-001700 CD3217 revisions list===
Case 1: MacBook Pro 16" 2019 With CD3217 rev. 9AP0NVQ No power with one side of newer 12P1FXQ(took from 2020 board), Symptoms: quick T2 boot, 19V mode + hot T2 Corner on original side, 5v 0.2A on another. PPBUS 12.3V
===820-01987===
CD3217 B12 09P09CQ
Possibly alternative revision with TI logo on chip, CD3217 B12 02P04ES
===820-01598===
CD3217 B12 97P146Q
=== OTP Configuration on M1+ devices ===
all 2 TBT port machines without magsafe - no OTP configuration
all 3 TBT port machines (14, 16"): Magsafe (U5500 i2c: 0x3A) and HDMI side (UG400 i2c: 0x3B) are OTP-configured and need to be sourced from donor.
Macbook Air M2 has only one OTP configured port which is Magsafe (U5500 i2c: 0x3A). this means it might be interchangable with U5500 on 3USBC+Magsafe machines
OTP Register contents:
ATC0
0000000: 81 01 00 17 18 18 AA 02 9F 66 B2 82 00 00 01 55 .........f.....U
0000010: D9 38 00 00 00 00 00 00 00 00 .8........
ATC1
0000000: 01 00 02 17 1F 1F AA 02 9F 66 B2 82 00 00 01 55 .........f.....U
0000010: D9 38 00 00 00 00 00 00 00 00 .8........
HMP1(Magsafe)
0000000: 81 01 00 17 0F 1A FE 4B 9F 66 C2 81 00 00 01 55 .......K.f.....U
0000010: D9 38 00 00 00 00 00 00 00 00 .8........
=== 820-02862 (MacBook Air M2) ===
this board seem to have 2 strap-configured and 1 OTP configured chip for Magsafe(U5500)
CD3217B13 is not compatible with any other revisions.
While buying chips beware of 1/3 chance of getting magsafe chip which will most likely not work on strap-configured position (UF400, UF500). There is also a high chance of getting chips from 14 and 16" macs which would have 50/50 chance of having OTP i2c address override configuration.
Try to find supplier with chip position markings or use donor board.
=== 820-02862 (MacBook Pro M3) ===
Like all other 14/16 inch M macs it has CD3217B13 controllers
like all other models with >2 usbc ports, 2 OTP and 2 Strap-configured. It is not clear from the schematics, which ones are strap configured, which ones are OTP.
Most likely UF400 UF500 are strap-configured, UG400 and U5500 are also OTP.
==Small T2 top side diode measurements==
There are more power lines than 1v1slps2r, they just somewhat got lost in the process of uploading. Maybe I'll fix that later.
Those are in case you wonder if you have a broken line between T2 and it's RAM, or have some pins torn.
[[File:T2 RAM Pinout.jpg|none|thumb|650x650px|credits to @leshuq / @lisochenko]]
==T2 types==
А2159, А2289 - Big T2 Package (PMU is also different!)
А1932, А2179, А1989, А1990, А2141, A2251 - Small T2 Package
Important note: T2 have differences in the supported amount of SSD. T2 supporting up to 512GB has 1GB RAM, T2 supporting up to 1TB and above has 2GB RAM. When replacing RAM, it is important to take into account the amount of RAM, otherwise the replaced memory of the wrong size will not work. Also, if you want to increase the size of the SSD (for example, from 512GB to 1TB on the A2141), it will not be enough to replace only the T2 RAM from 1GB to 2GB, you will need to install the T2 that can work with 2GB RAM, in other words, you need a T2 that originally came with 2GB of RAM.
Known types of RAM + APL number:
*APL1027 with h9hknnn8kumuvr 1GB Hynix Chip.
*339S00467 - 2GB
*339S00533 - 1GB
There is also BOM table in schematics, but it listed apple part number(339Sxxxxx) does not seem to correlate (based on 5 boards). However, it lists 2 different Ram manufacturers, Hynix and Micron.
__FORCETOC__
{{DEFAULTSORT:CD3217_and_T2_Power_on_Sequence}}
lk56s7w60zszkug51tljz07vljluw16
CPU/PCH code table and stencil list
0
2166
6533
2022-06-10T22:05:35Z
Inwerp
16
Created page with "{| class="wikitable" |+PCH !Code !Name !Stencil ! |- |SR2C4 |HM170 |Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] stor..."
6533
wikitext
text/x-wiki
{| class="wikitable"
|+PCH
!Code
!Name
!Stencil
!
|-
|SR2C4
|HM170
|Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store
|[[File:SR2C4.png|frameless]]
|-
|SR40F
|QMS380
|Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store
|[[File:Intel SR40F.png|frameless]]
|-
|SR40B
|HM370
|Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store
|[[File:SR40B.png|left|frameless]]
|-
|SR17D
|HM87
|Only 90x90 Stencils available. seek for [https://aliexpress.com/item/32405210982.html?s SUHMS 90x90 Stencil] + universal base.
Unfortunately it would be hard to match IC height. Look for 90x90 Reballing kit.
|[[File:SR17D.png|frameless]]
|}
ihtxr6smai3hw61t488as4iaj6lbcky
CRT Safety and Basic Guidelines
0
2017
6418
6061
2022-02-09T23:08:08Z
Nobluesky
182
Added repair.wiki page beacuse it's different and a good resource as well.
6418
wikitext
text/x-wiki
==Guidelines for working safely on CRT monitors or TVs :==
<big>'''DISCLAIMER : very high voltage up to 40 KV (40 000V) depending on the model is present inside and the electric charge can still be deadly for a long while after unplugging the device from mains. The electric charge may last months in the worst cases.<br>'''
If you don't know what you are doing, I strongly advise against tinkering inside a CRT as a first project. They are cool looking, but not safe.
<br>
The following information is only here for informational purposes and to reduce risks while working. If you still want to proceed, it's at your own risk and we deny any responsibility should anything bad happen.</big>
<br>
<br>
Always work inside the CRT with power cord unplugged (duh). While unplugged, turn it on to start discharging some capacitors (it's a start, it's not enough).<br>
Carefully open the device without touching the insides.<br>
Keep one hand behind your back at all times until the tube and capacitors are discharged or while mains power is still present so you avoid current circulating through the heart. Take off any metal jewel, ring or watch, those are entry points into the body for the electricity.
<br>
And to avoid releasing the vaccum abruptly or shattering the tube, don't bump into the fragile tip and the board socketed on the end of the tube, called the neck board. Also avoid touching or messing up the yoke and its adjustment rings (the enamled copper wires assembly around the tube), or it'll be a nightmare to make the thing work properly again.
<br>
The tube has a positive, the anode, under a rubber cap that you must not touch either as rubber can loose its insulating properties in such old devices. Avoid the high voltage wire as well (usually red) connected to it coming from the board. The other danger zones in a CRT are around the black high voltage flyback transformer on the board (usually covered in black dust from the static electricity, refer to pics below), and the large capacitors on the board (their leads go behind the PCB so you may touch them from under the circuit board, where the solder joints are). These capacitors are usually rated between 100 to 200V, sometimes up to 400V.
Avoid touching the neck board too. And if ever you test the thing open, note the metal heatsinks on the board can be energized or tied to live potential. Older CRTs (1960s to 1980s or so can even have the whole metallic chassis tied to live, especially in arcade cabinets). Also in vacuum tube TVs, some tubes under a metal shield emit X-rays so don't open the shield or stand near those while it's on!
<br>
===Discharging procedure===
First, find an insulated screwdriver, a copper cable with insulation (stripped on both extremities) and a pair of thick gloves, preferably heavy duty leather or real electrician gloves.
Strongly attach one end of the wire to your screwdriver shaft, ensuring a good contact. Tie or alligator clip the other end to chassis ground, aka the metal shielding of the case. Sometimes you have a massive metal sheet shield all around the largest side of the tube, sometimes you only have small naked metal braids running along the tube from the corners to the back, usually with one or several springs attached to them (see images at bottom of the page). Locate the proper place and tie your wire to it.
Avoid using the retaining screws in the corners of the tube as contact point, they have a rubber ring and don't make contact with the chassis ground.
<br>
Once both ends are properly connected, with one gloved hand, while touching only the screwdriver plastic handle, you can insert the tip of the screwdriver under the rubber cap, reaching for the center. Touch the center part a few times. You may hear a pop or simply nothing.
<br>
Remember, you are short circuiting a giant glass capacitor with two plates, so the outside and the inside of the tube. It's like a large Leyden jar. Positive is the anode leading inside, negative is the outside shielding and conductive paint. The charge is held between the two with the glass as an insulator.
<br>
Note the tube may even get charged again by sitting alone because of static electricity, so you want to do that again before reconnecting the anode, even if the buildup charge is not as strong.
<br>
Next, once you're certain you did the previous step properly, you can separate the anode cap from the tube like this :
[[File:anode cap removal.png|x300px]]
<br>
Take pictures from all angles before disconnecting any connectors inside, it'll help greatly while putting it back together.
<br>
Next come the large capacitors on the board. Reaching them can take a few careful steps disconnecting and removing the board from the device. Be careful you're not touching the solder joints side of the PCB or you could be severely shocked.
<br>
Wear safety glasses, like the ones used for grinding, to avoid melted metal in your eyes in case you short circuit the capacitors accidentally. Start by measuring the 100V or more capacitors between their two corresponding solder joints under the board with a reliable multimeter and probes (real CAT safety rating for such voltages, not a chinese crappy one). Firmly apply the probes on the solder joints without slipping (don't short the cap) in Volts DC, highest caliber of the meter (600VDC usually). If you read below 10V, you may short them with an insulated screwdriver.
<br>
If it's higher, they must be discharged with resistors. You have to find a compromise between speed and thermal dissipation. I used a 1 meg resistor because it was 0,5w but it took around 30 minutes for the largest one in my particular monitor. You could also find a large wound resistor of the appropriate rating, let's say around 15-30K ohms and 10 Watts.
Secure the resistor legs to your multimeter probes and monitor the voltage until it goes down to safe levels, around 10V. More can still generate a huge spark, even around 20-30V.
Remove your meter and free the probes from the resistor, then measure again after a minute (it could climb back up). Do that with all large 100V+ capacitors.
<br>
Congratulations, your board is now safe to work on. Take off the annoying safety gear and enjoy recapping/RGB modding/dusting with a soft brush :-D
<br>
The more dust there is inside, the more the CRT was used and may be worn!
<br>
===Common issues, as a starting point (does not replace a full diagnostic with schematic or measurements) :===
Unstable, unreliable, won't stay on, takes an unusually long time to light up or image bouncing : replace electrolytic capacitors, possibly bad flyback, issue with inrush limiting NTC or power regulation
<br>
Bad geometry, curved image side changing a lot with brightness : Bad ceramic caps for vsync, Bad flyback
<br>
Dim picture brightness or washed out colors : bad voltage regulation, issue with inrush limiting NTC, worn tube
<br>
Middle bright spot or vertical straight line on black screen : bad yoke? Major deflection issue
<br>
Collapsed image (horizontal straight line in the middle of black screen) : Bad joints on the neck board (micro-cracked) or bad main vertical transistor, convergence circuit issue
<br>
Colored patches (mostly green, orange and pink) in large concentric patterns or in a specific spot : degaussing circuit not working because of bad PTC (can you hear it engaging at power on ?) Ensure no unshielded speakers are nearby. Your CRT may have been exposed to unshielded monitors for a long time and degaussing is not enough. Waving a large electromagnet in front of it may help.
<br>
Image sideways more than the OSD menu can fix or deformed corners : The yoke has moved, is not stuck properly to the screen. The magnets on plastic tabs glued on the tube have detached, other electronic issue.
<br>
Colors overlapping (RGB borders superimposing on image details) : The yoke rings or yoke itself have been moved.
<br>
===Useful videos and links===
Another take on the matter at repair.wiki that can be a great complement to this page : https://repair.wiki/w/CRT_repair_and_troubleshooting
Safety and discharge :
<br>
https://www.youtube.com/watch?v=a6FMpvs71pc<br>
https://www.youtube.com/watch?v=1CVXzlkOjGg<br>
https://www.youtube.com/watch?v=N39PZB8gYhk<br>
https://www.youtube.com/watch?v=d1mQupQHFkc<br>
https://www.youtube.com/watch?v=DEC75Gb4I-w<br>
https://www.youtube.com/watch?v=JeX5Y7Amk0o
<br><br>
Repair dim image :
<br>
https://www.youtube.com/watch?v=hCopsoy0lQI
<br><br>
Choose capacitors for recapping (replaçing all electrolytics) :
<br>
https://www.youtube.com/watch?v=zNhjXvzdcLU<br>
https://www.youtube.com/watch?v=uyBjMWzzmf8
<br><br>
Why you should not discharge capacitors with a screwdriver :
<br>
https://www.circuitspecialists.com/blog/discharge-capacitors-in-switch-mode-power-supplies/
<br><br>
Useful info about all kind of picture discolouration issues :
<br>
http://wiki.diyfaq.org.uk/index.php/CRT_picture_discolouration<br>
https://www.electronicsrepairmadeasy.com/2017/08/solving-crt-television-color-picture.html
===Illustrating images with a Sony monitor from 1999 and an US TV ( TV base pictures courtesy of user RogerB from Discord)===
[[File:crt monitor details 1.jpg|left|thumb|x600px]]
[[File:crt monitor details 2.jpg|left|thumb|x600px]]
[[File:crt tv details 1.jpg|left|thumb|x900px]]
[[File:crt tv details 2.png|left|thumb|x500px]]
[[File:crt tv details 3.jpg|left|thumb|x500px]]
8rqq1t1lyh08vyizrrih8d1hgswzng7
Catalina
0
101
548
219
2020-02-02T11:25:18Z
Piernov
10
Category Mac
548
wikitext
text/x-wiki
== File System ==
https://eclecticlight.co/2019/10/08/macos-catalina-boot-volume-layout/
[[Category:Mac]]
7k0gx14eqnew2mnknwrx5u2zryb1mfy
Change macOS System Version
0
749
1578
2020-08-28T17:43:15Z
Chrisb
1
Created page with "Follow this procedure when you need to update macOS from a version prior to 10.8 to a more recent OS. Make sure a password is set up for the admin user. THIS WILL NOT WORK..."
1578
wikitext
text/x-wiki
Follow this procedure when you need to update macOS from a version prior to 10.8 to a more recent OS.
Make sure a password is set up for the admin user. THIS WILL NOT WORK IF THERE IS NO PASSWORD.
<br />
# Log in to the customers admin user account.
# Open Terminal.
# Copy and paste the following command: ''sudo nano -w /System/Library/CoreServices/SystemVersion.plist''
# Press enter
# Enter the admin password (it will not show any characters as you type!) and press enter.
# Use the arrow keys to navigate to the end of the version number where shown highlighted below. Replace this number with 10.8.6[[File:Image 2-28-20 at 1.19 PM.jpg|none|thumb]]
# Use the arrow keys to navigate to the end of the second number shown below and replace again with 10.8.6
# [[File:Image 2-28-20 at 1.22 PM.jpg|none|thumb]]<br />
# Press control + x to exit and when prompted to save modified buffer type y to save.
# Press enter to accept the default file name.
# Exit Terminal.
# Restart and run the OS installer that you wish to upgrade to.
2nkkiuu2nskb1eq5k9sjfkr780k3zhv
Charging Current Graphs
0
2158
6486
6485
2022-04-19T22:18:25Z
Chrisb
1
6486
wikitext
text/x-wiki
===iPad Pro 11 Inch First Generation===
====iPad Turned On, showing display turned off and on====
[[File:iPad Pro 11 Display on offreal.jpg|alt=iPad Turned on, showing display turned on and off|900x900px|iPad Turned on, showing display turned on and off]]
==== iPad Pro 11 Board Only ====
[[File:iPad Pro 11 Board Only.jpg|alt=iPad Pro 11 Board Only|900x900px|iPad Pro 11 Board Only]]
==== iPad Pro 11 Drained Battery ====
[[File:iPad Pro 11 Drained Battery.jpg|alt=iPad Pro 11 Drained Battery|900x900px|iPad Pro 11 Drained Battery]]
==== iPad Pro 11 LDO Short ====
[[File:Not charging pro 11 PP3v3 LDO SHORT.jpg|alt=Not charging pro 11 PP3v3 LDO SHORT|900x900px|Not charging pro 11 PP3v3 LDO SHORT]]
i3klpctndgj2xg59xedw5vsdmsf8dw2
Clean EFI ME Region
0
1822
7128
6865
2024-06-25T21:53:10Z
Crumblenaut
317
Updated the dead link to the Intel FIT repository to a new, working one.
7128
wikitext
text/x-wiki
===Problem, Symptoms, and Background:===
There are many issues that can be addressed by cleaning the Intel Management Engine (ME) region of your Mac's firmware. When clean, the ME region performs an initial handshake with your board's PCH on first boot and stores values related to that specific PCH in its EEPROM memory. When the ME region gets damaged or when swapping an SPI ROM chip from one logic board to another, there will more than likely be a mismatch between what the firmware expects to see and what it actually registers. This can lead to a number of issues, including:
*A long POST delay (prior to Apple chime and boot menu)
*The system hanging indefinitely on its loading screen with the Apple icon and a partially or even fully filled bar
*The system being able to boot into Windows/Linux/etc. but never successfully into MacOS or any MacOS installers
*The system being able to boot into EFI ASDs but not OS ASDs
*Freezing or kernel panics while booting macOS
*Error messages during verbose boot mode resembling "busy timeout[0], (60s): 'IGPU'"
*The fan always running at full speed
*Hard, spontaneous shutdown after 30 minutes
*No POST situations
*More obscure, fringe symptoms like the webcam not working on some Mac boards
To resolve these issues, the ME region has to be cleaned with a specific procedure. Using copy/paste hex editing or tools like MEInject will write in a raw ME region without Apple's Mac-specific manufacturer settings for the ME region, which can result in similar symptoms as a "dirty" ME region. Many replacement chips purchased off of the internet may not have a properly cleaned ME region - either they'll be dirty or raw, and neither will function properly.
The proper and reliable way is to use the Intel Flash Image Tool (FITC) from the Intel Management Engine Tools set that matches your firmware's ME version.
<i>The following instructions have been derived directly from the "How to clean ME Region on Apple machines" video posted by the legendary Piernov here: https://www.youtube.com/watch?v=exfG5Iywmjk </i>
<br>
===Quick Notes:===
<b>In short, the process involves these steps:</b>
#Desolder and attach the board's SPI ROM chip to your programmer.
#Save a full image of the firmware exactly as it was found.
#Analyze the image to know what ME version you're working with.
#Extract and save the settings stored in the original firmware.
#Extract a clean ME region file from a firmware in a repository.
#Create a clean ME region binary from the extracted region file.
#Replace the ME region binary from your original image with the clean ME region binary you've just created.
#Rebuild the firmware image with your original settings and a clean ME region.
#Verify your rebuilt firmware image.
#Reflash the rebuilt image to your SPI ROM chip.
#Reattach the chip to the logic board, NVRAM reset, and enjoy a clean ME region!
<b>Some helpful context:</b>
*Firmwares are identical amongst all logic boards with the same model number - e.g. 820-00165. Different board specs do NOT require different firmwares - e.g. An 820-00165 i7 / 8GB board will use the same firmware as an 820-00165 i5 / 4GB board.
*ME regions are generally intercompatible within the same primary model line of Macs - e.g. MacBook Air 7,1 and MacBook Air 7,2 use the same ME region. This process depends on access to a repository of firmwares uploaded by gdbinit on GitHub, and within that repository for any given Mac___ X,Y, as long as there's an image that matches your generation's primary model number (X), you can use that even if there may not be a ME region for your specific submodel (Y).
*Always use the most recent firmware that matches your model.
*Always use the Intel Management Engine Tools package that matches the ME version found with ME Analyzer.
*If it becomes necessary to replace the original BIOS chip on your logic board, BE SURE TO ONLY USE A BIOS CHIP FROM THE SAME BOARD MODEL (or, if necessary, at least the same model year). Different years may have different voltage or SPI mode settings that could be fully incompatible.
*This is the manual, guaranteed-to-work, straight-from-Piernov means of getting a clean ME region in your board's firmware. Other folks have found success using the Apple-EFI-Patchers created by sadponyguerillaboy and uploaded on GitHub, found here: https://github.com/sadponyguerillaboy
<b>For this method, you will need:</b>
*A EEPROM programmer and appropriate adapters to fit your SPI ROM chip. A common recommendation is the TL866II Plus.
*A WSON8 8x6 and 6x5 combo adapter board for MacBook Pro and MacBook Air SPI ROM chips (or 6mm / 0.25in width kapton tape and a SOP8 ZIF riser)
*Reading/programming software for your EEPROM programmer. For the TL866II Plus, that software is called Xgpro.
*ME Analyzer: https://github.com/platomav/MEAnalyzer
*UEFITool: https://github.com/LongSoft/UEFITool
*Intel Flash Image Tools: https://winraid.level1techs.com/t/intel-converged-security-management-engine-drivers-firmware-and-tools-2-15/30719
*Firmware with a clean ME region, pulled from a repository hosted by gdbinit on GitHub: https://github.com/gdbinit/firmware_vault
<b>A FINAL NOTE BEFORE YOU BEGIN:</b>
*<b>The symptoms exhibited by a dirty, mismatched, or raw ME Region can also be induced by a faulty PCH [ME Disable Strap] circuit. Therefore, before going through all of this work, <u>be sure you've checked to see that your PCH ME Disable Strap circuit is intact, undamaged, and functional</u>. No matter how clean your ME Region is, your system will not function properly with the PCH ME Disable Strap engaged. See [[ME Disable Strap]] for more info.</b>
<br>
===Step-By-Step Guide:===
<b>1) Desolder and attach the board's SPI ROM chip to your programmer.</b>
*Before beginning work, take a reference photo of the SPI ROM chip on your logic board, making sure the SPI ROM chip's text is clear and legible.
*Desolder original or donor SPI ROM chip from the source logic board.
*Solder the new chip to the appropriate side of your WSON8 ZIF riser. Be sure that pin 1 of the chip - indicated by a dot etched/silkscreened in one of the corners - is aligned with where pin 1 should be on your riser.
**If you don't happen to have a WSON8 ZIF riser on hand you can use the SOP8 riser that most likely came with your programmer, but you'll need to insulate the WSON8's central ground plane from the pins on the SOP8 riser, as there will be overlap. A small strip of 6mm kapton tape placed on the edge of one side of the SOP8's pads should overlap over the other side's pads enough so that the chip's ground plane is prevented from shorting on any of the SOP8 riser's pads.
***IF YOU DO THIS, USE A MULTIMETER TO CHECK ALL POINTS AGAINST GROUND TO ENSURE NOTHING IS SHORTED TO GROUND! ONLY PIN 4 OF WSON8 PACKAGE CHIPS SHOULD CONNECT TO GROUND.
*Install the ZIF riser in your programmer so that pin 1 of the riser is aligned with slot 1 of the ZIF connector. Typically pin 1 of the ZIF connector is closest to the ZIF lever.
*Connect your programmer to your computer.
<b>2) Save a full image of the firmware exactly as it was found. Create EXTRACTED.BIN</b>
*Open your programmer software on the connected computer.
*Detect and select the SPI ROM chip model from the software's list.
**Within Xgpro (the software that comes with a TL866II Plus), and go the "Select" menu --> "25 Flash Detect". Press the "Detect" button to have the software approximate the connected model of chip, but then be sure to select the specific chip from the software's menu BASED ON THE ACTUAL PRINTING ON THE CHIP ITSELF, not just what's detected. The photo you took in step 1 will be a great reference!
*Read the firmware into the software, then save the entirety of what's read off the chip as a BIN file. (You can name it whatever you like but for the purposes of this guide, I'd suggest naming it <b>EXTRACTED.BIN</b> and placing it in a temporary folder for use with this project that we'll refer to as your "working folder" throughout this guide.) --> EXTRACTED.BIN
**Within Xgpro, you read the chip with the green-circled READ button, and once it's completely read, you can use the Back button to close the read window.
**Once the chip data has been read, just use File --> Save to create your EXTRACTED.BIN file. All of default settings for reading and saving should be just fine.
**It wouldn't be a bad idea to create a duplicate of the file as a backup and call it something like EXTRACTED.BIN.BACKUP
*You can either close or leave Xgpro open after this, but if you close it, be sure that you have the correct SPI ROM chip model selected when you reopen it!
<b>3) Analyze the extracted image to know what ME version you're working with. Create EXTRACTED.TXT</b>
*Duplicate your saved BIN file to the folder with the ME Analyzer tool (MEA.exe).
*Run the MEA.exe
*Load the BIOS you've just saved by typing in its filename or dragging the file into the command prompt window where MEA.exe is running, then press enter.
*Copy/paste the output displayed in the command prompt window into a text file and save it as a text file. --> EXTRACTED.TXT
<b>4) Extract and save the settings stored in the original firmware. Create EXTRACTED.XML</b>
*Download and unpack the Intel ME System Tools for the ME Version listed from the ME Analyzer output.
*Open the extracted folder, then the Flash Image Tool subfolder, then launch fitc.exe.
*Open EXTRACTED.BIN by dragging it into the Flash Image Tool window.
*Verify that "ME Region\Configuration\Boot Guard" has the "Boot Guard Profile Configuration" item value set to "Boot Guard Profile 0 - No_FVME"
*Verify that "ME Region\Configuration\Integrated Clock Controller" has the "Default Lock Enables Mask" item value set to "0:Default"
*Save the settings into an XML file in your working folder. --> EXTRACTED.XML
<b>5) Extract a clean ME region from a firmware in a repository. Create REPOSITORY.RGN</b>
*Access gdbinit's firmware repository at https://github.com/gdbinit/firmware_vault
*Find the most recent (highest numbered) firmware in the firmware repository that matches your device and duplicate it into your working folder.
**If there isn't a perfect match to your Mac model - e.g. MacBookAir7,2 - then use the most recent file matching the first number of your model instead. (e.g. Both MacBookAir7,1 -AND- MacBookAir7,2 would use MBA71_0178_B00.fd)
*Open UEFITool and load the firmware file you pulled from the repository.
*In firmwares for systems from 2015 and later, you'll see "ME Region" at the top level of the hierarchy displayed upon loading the file. Right click on "ME Region", select "Extract As Is", and save that file with a .rgn extension --> REPOSITORY.RGN
*In pre-2015 EFI files you will probably have to dig deep to find the "Raw section" of the EfiCrc32GuidedSectionExtract folder, then right click on the "Raw section" select "Extract Body", and safe that file with a .rgn extension --> REPOSITORY.RGN
**In Piernov's video, the firmware from an 820-3437 board for a 2013/2014 13in MacBook Air has its ME region stored in the following path:
***UEFI Capsule / UEFI image / EfiFirmwareFileSystemGuid / EfiUpdateDataFileGuid / EfiFirmwareFileSystemGuid/MeRegionUpdateVolume/Compressed section / EfiCrc32GuidedSEctionExtract/Raw Section
<b>6) Create a clean ME region binary from the extracted region file. Create ./REPOSITORY/ME Region.bin</b>
*Open the Intel Flash Image Tool you used earlier (FITC.exe), drag the REPOSITORY.RGN file into the window, and then close the Flash Image Tool without saving anything. (This seemed counterintuitive at first, but this actually does something - when FITC.exe opens the region file, it creates a file we'll pull out and use now.)
*Now browse into the folder where FITC.exe is stored and you'll see a folder named after your RGN file - "REPOSITORY" in our case - and within the "REPOSITORY" folder there will be a "Decomp" folder that's storing a "ME Region.bin" file in it.
*View the "ME Region.bin" file's properties and note its file size (specifically "Size", NOT "Size on disk").
**You can save that file size info into your EXTRACTED.TXT file if you want, but it's not necessary.
<b>7) Replace the ME region binary from your original image with the clean ME region binary you've just extracted. Overwrite ./EXTRACTED/ME Region.bin with ./REPOSITORY/ME Region.bin</b>
*Navigate back to the Intel Flash Image Tool folder with FITC.exe in it, and alongside the REPOSITORY subfolder you'll see another folder named after your original BIN file - "EXTRACTED" - and just like in the previous step, within the "Decomp" folder contained therein, you'll see several binary files that were decompiled out of your original chip's firmware, including one called "ME Region.bin".
*View THAT file's properties and ensure that its file size (again, just "Size", NOT "Size on disk") are identical.
*Assuming they are, you want duplicate the ./REPOSITORY/ME Region.bin over to the ./EXTRACTED/ folder, thereby overwriting the original "ME Region.bin" file (which you don't need anymore) with the one you exported from firmware pulled from the repository.
<b>8) Rebuild the firmware image with your original settings and a clean ME region. Create ./Build/outimage.bin</b>
*Finally, open the Intel Flash Image Tool - FITC.exe - again.
*Go to File --> Open and select the EXTRACTED.XML file you saved earlier. (It will point to all of the assets you need - no need to load any BIN files manually.)
*From the menu, choose Build --> Build Image.
**You may have a BootGuard warning pop up, as well as a warning about setting PTT HW to Disabled. Say yes to continue, ignoring both warnings - they are expected, okay, and those settings are REQUIRED for Macs, despite the scary text about irreversible changes being locked in.
*Congratulations! With that, you have created your complete firmware image with a properly cleaned ME Region in the "Build" subfolder of the Flash Image Tool. --> outimage.bin
<b>9) Verify your rebuilt firmware image.</b>
*Duplicate the outimage.bin to your working folder.
*Double check that everything went as it should by running outimage.bin through the ME Analyzer again as described in step 3.
**If it doesn't pop any errors you should be good, but you can also compare it to the output from your original run of MEA.exe that you copy/pasted into EXTRACTED.TXT.
<b>10) Reflash the rebuilt image to your SPI ROM chip.</b>
*Open your programmer software, load the outimage.bin file that you copied to your working folder, and write it back to the chip!
**If you closed your software after step 2, be sure that the correct SPI ROM chip is selected before attempting to program it!
**Before writing back to the chip, it would be a good idea to be sure that the programmer, software, and SPI ROM chip are all talking to each other properly by reading the chip again by following the instructions in step 2. If you do this, you'll need to reopen the outimage.bin file again before attempting to reprogram the chip!
**With Xgpro, you use the PROG button to rewrite the SPI ROM chip! All of its default settings work just fine.
<b>11) Reattach the chip to the logic board, NVRAM reset, and enjoy a clean ME region!</b>
*Desolder the SPI ROM chip from your ZIF riser and resolder it to the logic board, ensuring that you have the chip in the proper orientation by using the photo you took before you began work and/or the dot on the SPI ROM chip (which indicates pin 1) to match where pin 1 is on the schematic.
*Rebuild and power on the computer, but for good measure perform a series of 3x NVRAM resets on first boot by holding Cmd + Opt + P + R until the system has chimed a total of FOUR times before releasing the key combination.
*After this if your issues were caused by a damaged or dirty Intel ME Region, they should now be fully resolved!
<b>ENJOY! :D</b>
<br />
=== Using older version UEFITool on old EFI (ME version 10 and below) Macs ===
It seems using FITC results in a "no image" on 820-00045 board and probably some others.
As a solution i found that if you simply use older UEFITool (0.21.5 for example) which allows you to write blocks to EFI image, to both cut and import configured ME region it will work. Please note it will only work if you take ME image from update file (which means it would be preconfigured)
So step by step would be:
# Open update file with UEFITool, navigate to ME region and "Extract As Is"
# Open original image, navigate to ME refgion and "Replace as is" with newely created file
# Save result image and enjoy.
1k6h5uaadsg68bmdyq3ogl3wbhkpueg
Clean ME Region
0
1823
5368
2020-12-24T13:46:03Z
Chrisb
1
Chrisb moved page [[Clean ME Region]] to [[Clean EFI ME Region]]
5368
wikitext
text/x-wiki
#REDIRECT [[Clean EFI ME Region]]
d1ywc7h30izmbizposb1fh14fz12lup
Cleaning Policies From Chrome
0
729
6288
6147
2021-12-06T11:45:16Z
Francis
4
Typo
6288
wikitext
text/x-wiki
#Open the '''Terminal app''' (Go > Utilities > Terminal or press Command+Space and search Terminal)
#Enter the commands below, hit Enter after each<syntaxhighlight lang="bash">
defaults write com.google.Chrome HomepageIsNewTabPage -bool false
defaults write com.google.Chrome NewTabPageLocation -string “https://www.google.com/”
defaults write com.google.Chrome HomepageLocation -string “https://www.google.com/”
defaults delete com.google.Chrome DefaultSearchProviderSearchURL
defaults delete com.google.Chrome DefaultSearchProviderNewTabURL
defaults delete com.google.Chrome DefaultSearchProviderName
</syntaxhighlight>
#Restart Chrome
After cleaning the policies from Chrome, go back to chrome://policy and look for any more malicious looking entries. Use the above syntax as a guide to remove them.
As a last resort use the following command. They will remove all Chrome settings:<syntaxhighlight lang="bash">
defaults delete com.google.Chrome
</syntaxhighlight>
qwr24rp2uxjrpqil7q8r7x0wqn31tgw
Common Mac Issues/Models
0
730
6672
6671
2022-11-09T16:49:34Z
Chrisb
1
/* 2015 MacBook Pro retina 13" A1502 */
6672
wikitext
text/x-wiki
Below is a list and information on common issues with certain Mac models. This list is strictly a guideline and all diagnostics should be completed before confirming any issue. Do NOT assume every Mac in a certain model has the "common" issue without first confirming!
Additional Apple Quality Repair Programs are available for newer model Macs with known issues which can be found [https://support.apple.com/exchange_repair here].
<br />
==2011 - 27" iMac A1312 / 2011 MacBook Pro 15" A1286 & 17" A1297==
Many of these Macs experience GPU failure which present the following symptoms:
*Display shows discoloration or vertical lines throughout.
*Freezing during loading
*Rebooting during loading
*White/Gray screen
(These are typical symptoms and not all inclusive. Run GPU/VST test in order to confirm.)
[[A1286/A1297 Common Issues]]<br />
==2012 MacBook Pro 13" A1278 (non-retina, with optical drive)==
*Hard drive cable failure - You may see a very slow, yet healthy drive, CRC errors, failure to complete updates, prohibitory symbol upon start up (circle with slash), or folder with question mark. You may need to reinstall the OS after replacing cable.
*LCD flickering/system freezing - This is due to defective RAM slot. Running off of one RAM stick in the good slot or replacing logic board resolves issue.
[[A1286/A1297 Common Issues]]<br />
==Mid 2012 - Early 2013 MacBook Pro retina 15" A1398==
*Start up issue where fans spin, but display remains black and does not fully boot - This is caused by a power issue with GPU. Repairing the logic board resolves the issue. (Note: This is not the ONLY cause for this symptom, just common. Please rule out other issues in order to confirm.)
[[A1398 Common issues]]<br />
==Late 2013-2015 MacBook Pro retina 15" A1398==
*Random shutdowns - This is caused by low voltage in one of the cores of the CPU if that core is unstable. This requires logic board replacement or possible repair if approved. You must rule out liquid/bad RAM/software issues/battery, etc.
[[A1398 Common issues]]<br />
==2010 MacBook Pro 15" A1286==
*Random shut downs - After ruling out obvious issues (liquid/RAM/battery), repairing the logic board resolves the issue.
[[A1286/A1297 Common Issues]]<br />
==2015 MacBook Pro retina 13" A1502==
*Trackpad/keyboard not working - Replacing the trackpad cable may resolve this issue.
[[A1502 Common Issues]]
qpc7kozx6zm81gok64696r5dccv3hzx
Common iPhone Problems
0
2101
6295
2021-12-08T19:08:07Z
Chrisb
1
Created page with "iPhone 7 A1660 Baseband - No service and unable to activate iPhone 7 Audio IC - Grayed out speakerphone icon, no or intermittent audio from device. Bluetooth audio will stil..."
6295
wikitext
text/x-wiki
iPhone 7 A1660 Baseband - No service and unable to activate
iPhone 7 Audio IC - Grayed out speakerphone icon, no or intermittent audio from device. Bluetooth audio will still work.
af29ptx5g9gn6xynp0uwsr7hwjv3w25
Compatible Schematics and Diode Measurements
0
1409
3052
2020-10-06T15:49:13Z
Chrisb
1
Chrisb moved page [[Compatible Schematics and Diode Measurements]] to [[Compatible Schematics and Diode Mode Measurements]]
3052
wikitext
text/x-wiki
#REDIRECT [[Compatible Schematics and Diode Mode Measurements]]
qv9f1m2bd5c6kr7bem7npkah50n99ih
Compatible Schematics and Diode Mode Measurements
0
618
3051
1278
2020-10-06T15:49:13Z
Chrisb
1
Chrisb moved page [[Compatible Schematics and Diode Measurements]] to [[Compatible Schematics and Diode Mode Measurements]]
1278
wikitext
text/x-wiki
#REDIRECT [[MacBook Compatible Schematics and Diode Measurements]]
f0qjdc2dzb552nb3vk2mf97ecybx6qc
Critical Update Required
0
117
254
2019-12-09T22:21:22Z
Chrisb
1
Redirected page to [[Critical Update Required Troubleshooting]]
254
wikitext
text/x-wiki
#REDIRECT [[Critical Update Required Troubleshooting]]
965lf4xuws4qsa2syj1mhgi5hwncjzi
Critical Update Required Troubleshooting
0
116
1588
1449
2020-08-28T21:12:16Z
Chrisb
1
1588
wikitext
text/x-wiki
[[File:Critical Update Required.jpg|thumb|Critical Update Required]]
The Critical Update Required error message can appear when either [[bridgeOS]] is corrupt, or there is a hardware fault that affects bridgeOS.
Troubleshooting this error is difficult, follow the steps in order below to isolate the cause:<br>
*Boot in to Safe Mode (by holding shift) and download MacOS 10.X combo update dmg.
*Create Time machine backup from safe mode (if possible/needed) and Reinstall a newer macOS if available.
*Make sure the Lifeboat connector cover is on the logic board. It is required to boot even to a known good external drive.
*Boot to a known good, [[Compatible macOS]].
*[[DFU mode restore]] (T2 Macs only. Backup data if important)
*Boot the bare board with a known good USB C port, connect it to power, keyboard, USB C to video output, and known good macOS. Please note that not all USB C to video output adapters will display during the EFI portion of boot. The original [[Apple USB-C Digital AV Multiport Adapter]] did not. The second generation HDMI 2.0 adapter has not been tested.
**If the bare board will not boot, you have a logic board problem.
***Use a detailed visual inspection to look for bad [[test points]], [[solder pads]], and components. Repair any obvious damage.
***Check power supplies of all components that can cause bridgeOS to fail (check list below).
***Check all data lines of components that can cause bridgeOS to fail (check list below).
***Check all data and power lines of NANDs. There are a couple of test points that tend to corrode and fail.
***Flux and clean any BGA chips that might have been affected by liquid.
***Check around Apple pay NFC Chip (U3905), PMU (U4200) area and check L4202-L4205 for outputs. That area is prone for corrosion, re-ball chip if necessary. (820-00239)
***Ultrasonically clean the board. This is a last resort since it will likely erase signs of liquid damage. Take high resolution pictures before cleaning any board you work on. Bake the board at 125C for an hour with a [[PID Controlled Oven]]. Tiny amounts of residual liquid can disrupt some high speed communication lines under larger BGA chips.
**If the bare board boots, you have a problem with a connected device. Connect them one by one until you get the Critical Update Required error again. The following components are known to cause this problem.
***Touch Bar display
***Touch Bar digitizer
***[[T-Conn]] (this can be be cleaned with an [[Ultrasonic Cleaner]].)
***[[Touch ID]] (this can be be cleaned with an Ultrasonic Cleaner.)
***Power button (this can be be cleaned with an Ultrasonic Cleaner.)
***Anything controlled by T1/T2
[[Category:Mac]]
[[Category:MacBook]]
[[Category:Troubleshooting Guide]]
o8pnh19jt8igxeithwdj9reodrd2nk6
DFU Mode Restore
0
732
1560
2020-08-28T16:51:23Z
Chrisb
1
Created page with "DFU mode can be done on Mac or iOS devices: [[DFU Mode Restore (Macs)]] [[DFU Mode Restore (iOS)]] <br />"
1560
wikitext
text/x-wiki
DFU mode can be done on Mac or iOS devices:
[[DFU Mode Restore (Macs)]]
[[DFU Mode Restore (iOS)]]
<br />
2dqydrnh2r7mx238pghmjnk4ni1qf20
DFU Mode Restore (Macs)
0
118
7602
7584
2024-08-11T23:29:23Z
Inwerp
16
/* T2 SoC ROM Manipulation and Serial Number Restore */
7602
wikitext
text/x-wiki
[[File:DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m.png|thumb]]
==Supported Macs:==
All MacBooks starting with T2 support this feature.
*2018+ A1989/A2159 13" MacBook Pro
*2018+ A1990 15" MacBook Pro
*2019 A2141 16" MacBook Pro
*2018+ A1932 13" MacBook Air
*2018+ A1993 Mac mini
*2017 A1862 iMac Pro
*2019 A1991 Mac Pro
*2020 A2338 13" M1 MacBook Pro
*2020 A2337 13" M1 MacBook Air
*2020 A2348 M1 Mac mini
*2021 A2442 14" M1 Pro / M1 Max MacBook Pro
*2021 A2485 16" M1 Pro / M1 Max MacBook Pro
*2022 A2681 13" M2 MacBook Air
*2022 A2338 13" M2 MacBook Pro
*2023 A2779 14" M2 Pro / M2 Max MacBook Pro
*2023 A2780 16" M2 Pro / M2 Max MacBook Pro
==Scenarios for restore:==
'''DO NOT EVER "REFLOW" T2 or any other chips, even if you seen someone did it it "magically worked". If you found this page, probably you are suspecting T2 issue, so even if DFU won't help you - DON'T REFLOW T2.'''
DFU on Beta software might brick the device so keyboard method wont work anymore, however it does not seem to affect anything if you do jumper method DFU.
DFU mode is needed to restore the T2 firmware when:
*Failed macOS upgrade/reinstall/Security Update
*Failed Combo or Delta update
*Unable to boot into the current OS Internet Recovery using command + option + R
*Unable to successfully create computer account and log in after erasing and reinstalling (M1 computers specifically)
*Looping apple logo with no loading bar after waterdamage on power button (820-00850 confirmed case)
*CPU / PCH replacement: since ME+EFI image is located on BridgeOS partition, to do classical "clean ME" procedure after PCH swap, you need to do full DFU restore. Whis will put uninitialized ME image to BridgeOS partition. Revive is enough to perform CleanME, so if you swapped CPU for data recovery, you can first backup with Target Disk mode, then try revive and full boot.
*waterdamage on TouchID / Power button connector. One of weirdly common reasons for currupt BridgeOS firmware is corroded TouchID connector. It is hard to tell why, but many devices stuck in G3H/T2 state are being repaired after revive.
*5V 0.2a>0.05A loop and no battery charge, unable to DFU from keyboard (SoC Rom corruption)
*some sources claim that PP3V3_S5 power output might be "shorted" to ground(10-50 Ohm) if there is T2 iBoot&BridgeOS corruption. possible explanation is that this output is firmware/configurable pin which is turned to ground per default but it is really questionable claim.
Other reasons to restore:
Essentially anytime you see something that communicates with T2 not function, a DFU restore may resolve. However, rule out other possibilities first!
A few examples:
#Battery communication lines being pulled down - but not short causing battery not being recognized and not charging. T2 handles SMC communications now. Battery stats and settings are stored in SoC Rom and will be reset with Revive, so DFU Revive might be considered as SMC configuration reset.
#Raise/Wake not working properly. I've had two scenarios:
*1: LID_OPEN_LEFT, LID_OPEN_RIGHT, and IPD_LID_OPEN would all function properly when triggered, however the unit would not sleep when lid closed. DFU restore fixed
*2: (820-01958) SMC_LID_RIGHT was low - 1v1 instead of the 1v8 it should be. Causing the unit not to fully wake when raising the lid (did respond when lid was closed) The camera also did not work, which lead me to U4850. I replaced U4580, which fixed the camera, however the SMC_LID_RIGHT line was brought even lower to .110v I isolated the issue to T2. I attempted a restore, this did not work. I tied IPD_LID_OPEN to SMC_LID_RIGHT to put a bandaid on the situation. Obviously this way the unit won't functional properly.
The moral of the story here, is before you attempt a DFU restore, for something that could be T2, attempt to rule out everything else before the restore, as you could brick the unit, and be in a worse condition.
===Beware of the risk!===
Rule out parts or any other board issue that is possible before DFU restoring the unit. There are many things that can cause a DFU restore to fail. The problem is, if you fail a DFU restore, you may end up in a different error state than your original issue. For example:
If you have a board that comes in, with no power. You plug it into another unit, to check if its in DFU mode. It's not. Let's say PP3v3_G3H is shorted. Let's call this '''Failure State A'''.
Now you're in '''Failure State A''', and you decided to force the unit into DFU, and attempt a restore. At this point, it would fail, and you would be stuck in recovery, let's call this '''Failure State B'''. Now you're at '''Failure State B''', it makes it 10x harder to diagnose '''Failure State A''', simply because you can't follow the power structure anymore. At this point, if you find you're short on PP3v3_G3H and remove it, you would have to restore again and PRAY that it works. It does not always. There have been many cases, where the unit came in with liquid damage, clearly a '''Failure State A''' type of situation, but the client attempted to restore before sending it, making it into a '''Failure State B'''. It seems half the time, after I fix '''Failure A''', that I am able to get out of '''Failure B''' after restore. The half that is unsuccessful, is, I'm sure because of a damaged trace or something like that - however, with it being in recovery, or '''Failure State B''', it's much harder to diagnose.
===Requirements:===
Most boards require touchpad, some boards require Touchpad + Touchbar for full restore. Check trackpad/use known good part on waterdamaged devices before doing DFU Restore.
You will need:
*a host Mac which has minimum OS of 10.13.5, Apple Configurator 2.6 or newer installed (from App Store), and an internet connection.
*USB-C cable which supports data, USB A to C cable, or Thunderbolt 3 cable. Apple OEM charging cable will work too.
*Target Mac (one that is being put in DFU) is connected to power. Do not use the left port closest to track pad for power - you will need this for data.
*Target Mac has charged and functional battery/you have power supply plugged in into functioning port. After initial Phase of iBoot restoer (SoCrom) there will be issued a reset signal which resets external power supply but in theory it keeps being powered from DFU port. If PPBUS voltage sinks below threshold, T2 will lose its power and reset into recovery mode. This usually seen as a "usb connection" error roughly after approx 30-40 sec. If something like that happens with your mac, monitor PPBUS / T2 SLP Voltages to confirm and try good known precharged battery.
Make sure Host Mac is powered up, iTunes is not open if applicable (fully quit) and open Apple Configurator 2.
==How to put Mac into the DFU mode==
=== If the host machine is Apple silicon, you can follow this guide to put targets in DFU through terminal: https://www.bkurtz.io/posts/macvdmtool/ ===
==== '''Keyboard method for Intel MacBook Pro and MacBook Air''' ====
Make sure Mac is shut down (hold power button for 5 seconds). Plug in data cable to Host Mac (any port) then into the left port closest to track pad in the Target Mac. Hold right shift + left option + left control + power keys simultaneously for about 3 seconds (according to Apple, other sources say 4-8 seconds). NOTE: We found that if you press the power button for 1 one thousand and then simultaneously hold the right shift + left option + left control, you should be successful each time. We also found that we were able to get in DFU mode around 4 to 6 (one one thousand, etc.) seconds. The Target Mac will remain as a black screen but you should see the DFU box pop up in Apple Configurator window on the Host Mac.
==== '''Keyboard method''' '''For Apple silicon M1 MacBook Pro and MacBook Air''' ====
Make sure Mac is shut down (hold power button for 5 seconds). Plug in data cable to Host Mac (any port) then into the left-side port closest to the screen in the Target Mac. Press the power button for about half a second, then also press and hold Left Control + Left Option + Right Shift for 10 seconds, then release all keys except power and hold power until the Target Mac shows up in Apple Configurator on the Host Mac.
'''For Intel Mac mini and iMac Pro''' - Disconnect power cord fro
m Target Mac. Plug in data cable on Target Mac to port closest to the HDMI port. Hold down power button and plug the power cord back in. Continue holding power button for about 3 seconds. The Target Mac will remain as a black screen but you should see the DFU logo in Apple Configurator window.
'''For M1 Mac mini''' - Disconnect Target Mac from power for at least 10 seconds. Plug in data cable on Target Mac to port closest to ethernet and into any port on Host Mac, then press and hold power while reconnecting power, then release power. The status indicator color should be amber.
'''For 2019 Mac Pro''' - Disconnect power cord from Target Mac. Plug in data cable on Target Mac to USB-C port farthest from the power button. While holding the power button, connect the power cord and continue to hold the power button for about 3 seconds. [[File:SOC FORCE DFU Jumper.jpg|alt=A DFU jumper that's been installed and then cut once the board booted into DFU mode properly.|thumb|A DFU jumper that's been installed and then cut once the board booted into DFU mode properly.]]
====DFU Mode using Jumper method====
logic behind that: T2 signal lines are in many cases not inverted like on intel platform, but they need to be pulled high to trigger. SOC_DFU_RESTORE should be pulled either to 1.8v on T2 or 1.25V on M1 models.
#locate FORCE_DFU jumper. on some Macbook Air boards there is just a testpoint which needs a wire to connect it with 1.8V. This signal needs to be pulled up to 1.8v to activate FORCE_DFU
#power-reset the device (unplug the battery, plug it back).
#Jump FORCE_DFU to 1.8v line, keep it jumped
#connect DFU cable to the device. It will both activate and autostart the macbook which will act as a proper "power button" trigger, switching the device straight into DFU.
#release the jumper (otherwise board would never be able to go past 1st stage of DFU restore)
This results DFU mode in 10/10 cases unless there is something wrong with T2/Jumper/CD321*/Cable
MacBook Air 2018 820-01521 board needs a physical jumper wire from testpoint (there is no debug "button" footprint on board). you can use PP1V8 ouput of T2 PMU as a pullup on the other side of the board
M1(820-02020, 820-02016 and similar)
Most apple silicon boards will not have populated pullups or jumpers on board, so you need to check the schematics for your particular board and figure how to really pull FORCE_DFU to 1.25V
Example: [[File:MacBook M1 Air 2020 DFU Jumper.png|none|thumb|MacBook Air M1 2020 DFU Jumper. '''RV020''' is not stuffed on most boards, so even though pullup is here, FORCE_DFU is not really connected. so instead of jumping pads use lower pin of the RV020 to connect it to SWV011 PP1V25_S2 pin or populate it with 0 Ohm, resister. |403x403px]]
Opposite on MacBook Pro M1 13" (820-02020) - there will be a missing 1.25V pullup resister RV005 which is unfortunately located on the keyboard side of the board. if you do not want to disassembly the device, so you have to find PP1V25 somewhere else.
Since it is located quite far away, it would be better to solder a small wire between any exposed line and debug pad.
If you have trouble using tweezers, just solder a jumper wire and cut it once you see device is in DFU mode.
Silicon Mac DFU restore also restores operating system partition. You can use a better cable(TBT4) to speed up the process.
====DFU Mode using external switch====
Apple offers the option to access DFU in manual mode, forcing SOC_FORCE_DFU signal to 1V8_SLPS2R power rail; for T2 machines.
Almost all the boards have the pads available for this purpose.
Be aware, A1932 & A2179 don't have such pads!
For long time wire jumper method has been used.
However, is not easy to reach DFU and you need to resolder new wire each time.
For this reason, I recommend to attach an external switch connected to the corresponding pads:
#A1989 RE032
#A1990 SWK003
#A1932 & A2179 between pin 1/R8010 to pin 1/C7845, or other convenient 1V8_SLPS2R point
#A2141 SWK003
#A2159 SE032
#A2251 RE032
#A2289 SE032
In case of Mx machines, 1V25_S2 (or 1V2_S2) is used instead of 1V8_SLPS2R:
#A2337 SWV011 solder RV020 first, or connect the switch directly to its pad 1
#A2338 SV004/5 solder RV005 first, or connect the switch directly to its pad 2
#A2442 SV100/10 solder RV120 first, or connect the switch directly to its pad 2
[[File:DFU + ONOFF.jpg|thumb]]How to use the mentioned switch:
#Connect power cable and DFU cable.
#To avoid any weird symptom, force the machine off, pressing power button 5-8 seconds.
#Press FORCE_DFU switch for 3-5 seconds; you should see DFU logo now.
If machine resists to enter DFU, try "playing" with FORCE_DFU and power button.
Sometime, the touch ID may cause problems; doesn't allow to enter DFU, or causing DFU failure.
To avoid such problems, I recommend to use an external switch soldered on the PMU_ONOFF_L pads, similar with FORCE_DFU switch.
==== DFU mode using MacVDMTool ====
You can also use [https://github.com/stacksmashing/macvdmtool MacVDMTool] to put your mac into DFU mode. This tool uses your TBT Controller on Host mac to send VDM message to your M1 and Intel target macs.
VDM means "Vendor Defined Message" and this is a custom PD signal which is sent directly to CD3217 controller to trigger DFU mode. The host device must be Apple Silicon in order to work!
Run as SUDO.
== NO DFU Mode Troubleshooting ==
#measure DFU_STATUS voltage. 1.8v indicates T2 is in DFU mode. In some cases pin might be shorted in T2 and needs external Pullup so CD3215/17 would be switched into DFU.
#If DFU Status is high but device is not visible with known good cable - inspect TBT ROM and CD3215/17. To properly allow DFU Connection CD321* should be initialized and TBT rom should be loaded. If you suspect TBT controller, remove SPI straps betweeт TBT SPI ROM and TBT Controller.
#if DFU_status is low, inspect if T2 is fully powered and receivesd signal. The easiest way to get DFU is described above.
#if you have low resistance on DFU_STATUS line and it comes from SoC, try to temporarily force it high state with 100-200Ohm resister to pullup voltage (1.8/1.25 depending on platform)
== T2 SoC ROM Manipulation and Serial Number Restore ==
The SoC ROM is an SPI Flash chip that contains the iBoot bootloader as well as all SMC variables, such as battery statistics and charge logs. It also stores the machine's serial number (SN). While the iBoot bootloader is encrypted, the remaining information is stored in ASCII format. This allows you to determine the machine's serial number without needing access to the chassis or booting the machine.
One alternative method for repairing a "no DFU" device is to erase the SoC ROM, which forces the T2 chip into DFU mode as if a jumper were present. This approach has been promoted by many channels that sell T2 Flash tools, which are typically CH341 chips with soldered WSOP8 adapters, priced between $200 and $300. Due to numerous instructional videos on this subject, there's a non-zero chance of purchasing a board with an incorrect SoC ROM dump, possibly downloaded from random sources like badcaps or vinafix. Let's clarify some misconceptions:
* DFU Restore fully restores the SoC ROM with an "original dump," but AC2 may transfer some information from the old dump, including variables that could potentially be the cause of the problem.
* SoC ROM corruption can lead to issues like no power, no charge, and the inability to enter 4-Finger DFU mode. This might be the primary reason people have started manipulating the SoC ROM rather than simply using a jumper, however there might be cases where moving variables from old dump bricks the machine again.
* The machine's serial number is tied to the T2 chip. If you don't have it or you have SN mismatch, activating the Mac and installing the OS may be impossible.
If you want to attempt flashing the SoC ROM, follow these steps:
# Back up the old dump.
# Completely clean the SPI Flash.
# Perform a DFU Restore.
# Read the fresh dump and restore the serial number block from backup. The T2 SoC ROM SN block offset is: 28A000.
Please note: This is not a method for changing the serial number. Although changing it will reflect the new number in "About This Mac," doing so will disable the Mac's ability to be activated the next time you restore it.
For further information check the [https://logi.wiki/index.php/T2_Diagnostics_and_repair#T2_SoCROM_Programming T2 repair page], thanks to Muerto <br />
'''M1 devices do not need any manipulations, SoC rom will be restored with serial number in it.'''
==DFU error codes and troubleshooting==
TO check if device is in DFU state, check voltage on SOC_DFU_STATUS. This goes directly to CD3217 on this port to switch it in DFU mode. If T2 is switched to DFU mode, proper level is 1.8V
DFU_STATUS high but no DFU visible in Apple Configurator might indicate problem with TBT ROM or CD3217
'''1''' - The trackpad is not connected (For successful firmware, the MacBook needs a connected working trackpad).
'''6''' - Probably could not write BridgeOS into service partition. Most likely SSD failure. There might be one hot NAND. Common symptom - T2 does not turn on S5 rails at all. If you have it in revive mode, try restore (All data will be lost!).
Common symptom of Bad SSD volume is T2 tries SSD power resets every few seconds or up to 23 seconds.
'''9''' - This error can have many causes, so quickly finding the cause of its occurrence is quite difficult. Here are some of the causes of this error:
*BridgeOS partition not found (Use restore instead of revive, will format SSD), NANDs partition corrupted, NAND chips damaged or some similar.
*Malfunctions on the processor itself or power lines of the processor / RAM. Also if there is no processor on the motherboard.
*Flashing without a part of the cooling system (heat pipe) on macbooks with a large TDP.
*T2 / SEP ROM mismatch (Different T2 and SEP ROM should be restored, not revived) or SEP ROM was damaged and needs to be replaced.
'''10''' - Bad cable / unstable connection.
'''21''' - Resolved with SoC ROM replacement. On macbooks with an M1 processor, this error also means problems with NAND chips such as:
*Failure of one or two NANDs.
*Mismatch between the NAND model and the reference designation on the board (When replacing memory chips, you no longer need to write anything to them using the programmer, just follow the model/place on the board).
*Attempting to restore from recovery after replacing NANDs (After replacing NANDs, it is possible to restore only from DFU).
'''35''' - probably bad trace on one NAND, sysconfig block cofiguration => NAND mismatch.
'''56''' - bad or cracked stockholm chip.
'''75''' - T2 booted in recovery mode (Revive wont work).
'''3004''' - Bad or no internet connection on the MacBook.
'''3501''' - (0xDAD) - target Mac is not connected to power.
'''4005''' - SSD not detected error.
'''4013 / 6 -''' errors indicate bad NAND Sysconfig or wrong position.
'''4014''' - Unexpected reset. Might be caused by T2 RAM error, power rail failure or even a bad battery.
'''4045 / 4042''' - Timeout error.
Bad SSD will also cause T2 to power cycle its power supply every 20 seconds. this wont give any 100% related to SSD error but it is fully reliable method to confirm bad SSD.
If you have Lock sign but no power after DFU revive, it is safe to say that both T2 and SSD work fine and problem is on Intel side. inspect S0 rails, no power might be caused by short on something like 5v rail or something what is used for communication pullups. It is always a good idea to check if after T2 boot device goes to S5 /S0 state.
'''Post-DFU errors on OS Recovery'''
GUI rendering issue/artifacts on loading screen - sometimes caused by throttling and maybe a bit bugged EFI Loader even on working machines. Happens with low/no battery, also if there is temp.sensor issue.
'''-2003F -''' in most cases caused by internet connection. try using thunderbolt-LAN adapter.
'''-1008F''' error while loading recovery even after DFU is related to icloud Lock device. Speculation is that most likely FMM lock or icloud block forces machine to load other environment which is in some cases not possible. If you have this error and DFU did not help (it helps in most cases because updated EFI probably fixes some bad link/certificate in Recovery loader) - remove device from FMM (Find My Mac) and icloud and try again.
=== DFU Fail Troubleshooting ===
Try known good battery and Trackpad. Disconnect all unnecessary equipment ( Touchbar, Keyboard, Fingerprint sensor).
On some macs disconnecting battery and using external power supply helps to pass through 4014 error (device did unexpectedly reset itself and did not go to restoreOS state).
Try different cable, inspect if device keeps being visible in DFU for long time. If it ocssionally disappears, troubleshoot connectivity (USBC Controller, Cable, usbc connector, etc)
=== iBoot log troubleshooting ===
=== T2 devices ===
One way to get access to iBoot log, is a leaked potassium/banana cable device(this was used on apple factories to test/investigate failures on preproduction stage), this device sends VDM message to CD3215/17 and it starts passing through T2 debug port which yields hmac-sha1 hashes as log messages. Most actual panics are not encoded so you can define problems like NAND, RAM failure with much more precision. Messages are very similar to iPhone iboot logs. You can also use this device to read PCH logs on some machine. PCH logs might be helpful to define GPU failure or some other POST Intel EFI-level problems like bad wlan firmware or issue with thunderbolt. Messages are unencrypted.
To read RAW iboot log you can use any serial adapter with 1.8 level compatibility, for example " '''FTDI USB to 1.8V 2.5V 3.3V 5V TTL UART Switch Serial Adapter Module"''' does have 1.8v support. If you solder direclty to the SOC_DEBUG RX/TX pins, you will see something like that:
[[File:RAW SoC Debug log.png|none|thumb|763x763px|Serial log using '''"FTDI USB to 1.8V 2.5V 3.3V 5V TTL UART Switch Serial Adapter Module"''' + Simple Serial terminal on Windows
Wires are connected to TP_SOC_DEBUGPRT_TX and RX (do not forget to cross it as you connect it with the adapter, RX goes to TX and vice versa)]]
this log might be helpful during DFU, since it will show some panic logs in clear text.
Unfortunately all other messages are "encrypted" with truncated hmac-sha1 hash which cannot be decrypted. However i am working on making a reference table for some messages.
Some known, easy to interpret panics might be ANS2 - "Apple Nand Storage 2" panic would be related to one or multiple NAND chips failure.
=== M1+ ===
On M1 you can use and compile [https://github.com/AsahiLinux/macvdmtool macvdmtool]. This software allows you to send force dfu, reset and force serial commands to the cd3217. To get serial log you need to compile/run it on Big Sur since newer versions need you to disable <code>AppleSerialShim</code> kernel extension which is not possible on newest versions due to lack of Kernel Dev packages. This log would be very similar to T2 and will definetely help with troubleshooting if you have issues in DFU. It can also be used to send FORCE_DFU VDM message which works exactly like jumper method but no need to open the device. To use it you need to find proper TBT cable with SBU1/2 lines populated (any charging cable wont work, best way is to check USBC pinout and use MM to confirm.)
=== Sonoma Finder restore ===
since MacOs Sonoma, DFU restore can be performed directly from finder. For some not quite obvious reason, this type of restore provices way more verbosity in Console logs, in some cases it can even pinpoint failed component on board.
[[File:DFU on Sonoma.png|none|thumb|700x700px|found by @leshuq. This particular log indicates firmware update fail ('''madea''') which was caused by bad power switch for dp2hdmi converter on board. This issue would be close to impossible to troubleshoot or find without exact error.]]
== Experience ==
===(inwerp):===
Case: Macbook Pro 2018 15', 5V shortly 0.3A, than 0.04A-0.08 floating, all G3HOT present. Died with no particular reason, stopped charging and simply did not start up after next reboot.
- Did not work with USBA-USBC adapter (claimed to work by [https://help.apple.com/configurator/mac/2.7.1/#/apd0020c3dc2 Apple Article]), used thunderbolt cable.
- Apple Configurator shows DFU logo without key combination, but flashing in this mode will end up with a undefined error.
- Key combination works like 50/50, no particular pattern, best looks like DFU LOGO - SMC RESET Combo 4 Sec till DFU Logo disappears, shows again, now flashing works.
may end up with the connection timeout, target device will start to boot, then shutdown at some point.
Macbook Pro 13 2019 820-00850
After minor liquid spill on power button / cd3215 chip. After cd3215 repair device freezes on apple logo without progress bar, does not boot into internet recovery. For some reason DFU Restore fixed the device, probably waterdamage on power button connector might somehow damage BridgeOS?
==='''(Liminalsunset):'''===
DFU Restore on T2 Mac: MacBook Pro 16" 2019
It's possible to restore the T2 firmware on this machine using a MacBook Air, Mid-2013 13" laptop. It appears that a USB-C mac is not required to initiate the process.
Both systems were running Catalina 10.15.7. This does erase the SSD. I used Internet Recovery to restore a backup and it worked fine after. Activation Lock and FileVault were enabled prior to procedure and do not appear to affect it. Works with Target MacBook Pro powered off of battery.
To enter DFU mode I used:
1) Turn off MBP and plug in USB A to USB C cable (third party) from MacBook Air into MacBook Pro, port closest to you facing computer on the left side
2) Locate left Control and Option keys on MacBook Pro, as well as right Shift key.
3) Press Power button for 1 second, then hold keys above down with power button for 8 (real) seconds. MBP will flash Apple logo, then it will disappear
4) DFU device should show up in Apple Configurator 2. Rest of process is uneventful and works normally. Once restore is complete MBP may need manually powered off and on to start into Internet Recovery
===(Dusten Mahathy)===
'''Case 1:'''
820-01700
Unit not booting without battery present. This board will boot on a 96watt adapter normally. I have seen 3 cases where the board doesn't boot on the adapter alone, and wouldn't charge a stone dead battery normally.
Without battery connected: 20v with a jump to 300-500mA then back to 70mA and kind of sit there.
With battery connected: It would very slowly raise to charging amperage. (It would take 2 to 3 minutes for it to reach 4 and a half amps, vs the normal 30 seconds to a minute)
After diagnosing the charging circuit, and seemingly everything on the board is physically okay, I decided to DFU restore the unit, thinking something with the SMC, that T2 is now handling.
This resolved the issue.
'''Case 2:'''
820-01700
Prohibition Symbol: This seems to be caused by the board being disabled. Flashing the T2 ROM, and restoring via DFU resolved the issue.
===(Ed Hallman / crumblenaut)===
Exact same deal as Dusten's Case 1 above - 820-01700 board, user reported crashing after liquid exposure and previous board-level work, eventually ending with the system not booting even WITH the battery present. With no battery we saw 20v with a jump to 300-500mA then back to ~70mA and kind of sit there, and with the battery connected we saw a slowly raising charge amperage.
DFU ''REVIVE'' would fail with the error code 6, despite (going off of the table below) the fact that all SSD rail resistances were good and voltages were present.
After confirming that the user had a backup (thank the dark lord), I performed a proper DFU ''RESTORE'' and that got it powering on and booting again. After first boot with Apple logo the system would power off. Second power took some time with fanspin and nothing on the screen, then fans stopped, then fans spun backup and screen initialized. Cmd+Opt+R got it reinstalling right away.
From Experience: (Dusten Mahathy)
820-00958
The unit came in with slight liquid damage on U7650, U6940, and Q7660. Shorted was PP5V_G3S. The shorted component was U8245. After replacing U8245, I found that PP5V_G3S was 10v, instead of the 5v that it was intended for. After only a few seconds of having the board on again after replacing U8245, to check measurements, it was shorted again. At this point, I replaced U7650, Q7660, and repaired several traces and capacitors, resistors. Once again, replacing U8245. This time when powering on the board PP5V_G3S, was at its normal voltage. However, the unit still would not boot. Hovering about 20v 100mA. So after further investigation, I found PPVCCIN_AUX_PCH was not being generated. This was due to PPVCCINAUX_VCC being shorted to ground. This failed component was U7400. Which was powered by PP5V_G3S. So, after replacing U7400, I was making progress. The unit would start the boot process, getting 1v8 on PPVCC_S0_CPU for a second, then 0v, but pulsing. So on/off/on/off scenario. I found the pulsing started all the way back at PP1v8_SLPS2R. I did find, however, that if I removed R7210, R7220, and R7230 the system would be stable again. These are the three resistors that powers PPVCC_S0_CPU. At this point, I am pretty certain that I have some sort of CPU failure. Wether it be the CPU itself or not, I am not sure. I felt that it was, as I have a suspicion the 10v going through the CPU MOSFETs probably killed the CPU. However, as a last desperation, and for research, I decided to attempt to DFU the machine. At his point, it failed, and I got '''error code 9'''. This was somewhat expected, as all the power rails are pulsing currently. So what I decided to do, was remove the three resistors mentioned early, to make the system stable again. At this point, the DFU restore went through successfully. This leads me to believe that CPU failure can cause '''error code 9'''
== Links / Video ==
DFU on T2 Machines
<youtube>https://www.youtube.com/watch?v=e0jevSCQxGE&</youtube>
'''Comprehensive guide''': https://mrmacintosh.com/how-to-restore-bridgeos-on-a-t2-mac-how-to-put-a-mac-into-dfu-mode/
Error codes [https://t.me/mobility_labs/120 Source]
[[Category:Mac]]
jzz1y199q4zv217gwi1h61jh60mdjbx
DFU Mode Restore (iOS)
0
731
2913
1726
2020-10-02T22:32:53Z
Chrisb
1
2913
wikitext
text/x-wiki
'''DFU mode restores on iOS devices should only be necessary if a traditional restore fails.'''
and for the people in the back...
'''DFU mode restores on iOS devices should only be necessary if a traditional restore fails.'''
In terms of troubleshooting software issues on an iOS device, it is always advisable to progress from least invasive steps first:
Level 1 (least invasive): Normal device operation software update via iTunes. Just plug the phone into a computer with an updated version of iTunes.
Level 2: Recovery mode (device rebooted into connect to iTunes screen) iTunes update. If successfully there will be no data loss and device will be updated to latest Apple signed iOS version compatible with iOS device.
Level 3: Recovery mode restore. This WILL erase everything on device and update device to latest signed iOS version
Level 4 (most invasive): Device Firmware Update (DFU) resotore (device rebooted and and powered on to a blank black screen. When in DFU mode, the only available iTunes option will be to restore device. If device receives itunes error message with KGB (known good) cable, then hardware issues are suspected. If data is not important, this should be done before opening a device.
==='''How to enter device into recovery mode:'''===
=====iPhones 6s(+) and older:=====
#Connect device to iTunes or 3utools computer via lightning cable
#Press the side/power button and home button simultaneously.
#Once the screen has turned black continue to press both button until the connect to iTunes logo has appeared.
=====iPhone 7(+):=====
#Connect device to iTunes or 3utools computer via lightning cable
#Force restart device by simultaneously pressing the side/ power button and volume down.
#After device has rebooted continue to press both button until the connect to iTunes logo has appeared.
=====iPhone 8(+) and newer:=====
#Connect device to iTunes or 3utools computer via lightning cable
#Force restart by rapidly tapping volume up, then volume down, then press and hold side/ power button until device restarts.
#After device has rebooted continue to press side/power button until the connect to iTunes logo has appeared.
==='''How to enter device into DFU recovery mode:'''===
=====iPhones 6s(+) and older:=====
#Connect device to iTunes or 3utools computer via lightning cable
#Press the side/power button and home button until the screen goes black
#Once the screen goes black continue to press both button for a count of approximately 7 seconds
#release side/power button while still pressing the home button.
#Keep pressing the home button until iTunes or 3utools recognizes the device in DFU mode.
#If done correctly, device will be powered up to a blank black screen and will appear in iTunes. If unsuccessful, force restart and try again...
=====iPhone 7(+):=====
#Connect device to iTunes or 3utools computer via lightning cable
#Press the side/power button and volume down simultaneously
#Once the screen has turned black, continue to press both button volume down and side/power buttons for approximately 7 seconds
#Release side/power button while still pressing volume down button
#If done correctly, the device will continue to have a black screen & will appear in iTunes or 3utools with only the option of a full restore
#If unsuccessful, hold side/power button & volume down to force restart and try again
=====iPhone 8(+) and newer:=====
#Connect device to iTunes or 3utools computer via lightning cable
#press & release volume up, followed by volume down
#then press and hold side/power button until the device screen goes black (approx 13 seconds)
#Once the screen goes black continue to press both button volume down and side/power buttons for approximately 7 seconds
#release side/power button while still pressing the volume down button.
#Keep pressing the volume down button until iTunes or 3utools recognizes the device in DFU mode.
#If done correctly, device will be powered up to a blank black screen and will appear in iTunes or 3utools. If unsuccessful, force restart and try again...
''<nowiki>*</nowiki>note: the timing for iPhone 8 and higher is far more precise and it is quite difficult to achieve on first try. You can put an iPhone 8 and newer into DFU mode, you just have to try harder.''
<br />
[[Category:iPhone 5]]
[[Category:iPhone 5c]]
[[Category:iPhone 5s]]
[[Category:iPhone 6]]
[[Category:iPhone 6+]]
[[Category:iPhone 6s]]
[[Category:iPhone 6s+]]
[[Category:iPhone 7]]
[[Category:iPhone 7+]]
[[Category:iPhone 8]]
[[Category:iPhone 8+]]
[[Category:iPhone SE]]
[[Category:iPhone SE (2020)]]
[[Category:iPhone X]]
[[Category:iPhone XR]]
[[Category:iPhone XS]]
[[Category:iPhone XS Max]]
[[Category:iPhone 11]]
[[Category:iPhone 11 Pro]]
[[Category:iPhone 11 Pro Max]]
[[Category:iPhone 12]]
[[Category:iPhone 12 Max]]
[[Category:iPhone 12 Pro]]
[[Category:iPhone 12 Pro Max]]
ip2tsygag08dkgait61dewlsco2p76k
DFU mode restore (Macs)
0
1421
3122
2020-10-07T14:57:57Z
Chrisb
1
Redirected page to [[DFU Mode Restore (Macs)]]
3122
wikitext
text/x-wiki
#REDIRECT [[DFU Mode Restore (Macs)]]
ffwafb1mmeejqblo6hlc51jl5p1p92v
Data Recovery with Open Source Software
0
1918
6528
6411
2022-06-10T19:55:35Z
Inwerp
16
6528
wikitext
text/x-wiki
[[File:hddboy.png|thumb]]
==Overview and SMART data==
There are some cases when customer can't afford data recovery and it does not hurt if you fail or make it worse. Following procedure should not be considered as any sort of sollution for important data recovery - if data worth recovery lab(400-600€ ++ ) - DO NOT TRY IT.
One of the most important thing to check before even trying to access data is SMART report of the hard drive. on Ubuntu/Debian based Linux distribution you can access it directly through standard disk utility. There are plenty of programs for MacOS / Windows, the most important thing you need to know is that many of them do not interpret "pending sectors" value and might show almost dead drive as something like "80% health" which might be absolutely wrong, so ignore this "summary" information.
[[File:FailedSmart.png|none|thumb|Example of a garbage software, showing "caution" on almost dead drive. F4B pending equals 3915 unreadable sectors. 0 Reallocated Sector Count indicate none of them could be read by firmware.]]
If you connect it via SATA, be sure SMART reporting is enabled in Bios settings. There are many values in list, but there are few which are most important:
'''Current Pending Sectors Count''': This value represents the number of sectors which are marked as "unstable" and will be transfered by HDD internal firmware as soon as they are successfully read. The problem is, that if you actually have that value with a number more than zero - you have already lost some data and your drive is already failed. Since reading of one sector and moving it to another place takes just a tiny amount of time, you should not ever catch it in SMART. As soon as unstable sector is found, drive tries to read it multiple times untill it is being transferred to another potentially good block and it adds its position to the Translator(map of the LBA sectors on drive) and G-List(Growing list of bad sectors on drive). The problem is, that higher than zero value is almost always indicates major reading problem: either scratch or (much worse) head damage. If you see this value growing rapidly while transferring data - '''STOP immediately'''. First of all, it might switch your drive into a "busy" mode and drives stops being recognised by the OS. Second of all, constant writing to the service area (updating G-List + Smart values) might lead to firmware corruption which will also render drive unmountable.
'''Reallocated Sector Count:''' once unstable sector is successfully transferred, CPSC value is decreased, RSC value is increased. Having 100-500 bad sectors is not as bad as it seem to be (Note that many programs show hex values, so you might need to convert it to decimal because "F00" would indicate 3840 bad sectors).
'''Uncorrectable Error Count:''' in theory, CPS which were failed to read will be marked as lost and moved to UEC. In practice this value might stuck on zero and drive might stop being recognized by the OS because firmware might be configured to figure pending sectors before going into ready state (during this process it might as well hit some bad sectors in the service area and after you power-reset the drive, it will not be able to boot/initialize at all)
'''High Fly Writes:''' this value is a common indication of failed head. 1-100 writes are mostly fine, but you will see this value increasing very rapidly if you have bad head.
'''G-Sense Error Rate:''' this value indicates how many times drive indicated some mechanical steress and disabled operation. For example if you turn your laptop too fast or drop it while its on - this value will increase.
'''Ultra ATA CRC Error Count:''' this value might indicate bad sata connection(for example on MacBook Pro 13" 2012 Mid this is a clear indication of broken cable)
So long story short: while transferring your data it is really important to check and update SMART values every 5-10 seconds and keep an eye on Pending / Reallocated sectors. You should not try to clone drive with increasing pending sectors, maximum what you could do is to backup most important files. Not VERY important though because it might, as well, make professional data recovery impossible(for example, if due to multiple retries head crashes to the surface and scratches it... exactly on the location of your most important data).
'''If you have a HDD drive with bad sectors, NEVER use any sort of file recovery software. Most basic rule of data recovery - work with an image/clone, not source.'''
==Software/Hardware:==
#Linux (Ubuntu/Mint/etc)
#[https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html gddrescue] (sudo apt install gddrescue). Read its manual at least briefly.
#[https://www.smartmontools.org/ smartmontools] and [https://sourceforge.net/projects/ddrescueview/ ddrescueview]
#[https://github.com/sgan81/apfs-fuse APFS Fuse]
#SSD Adapter. It does not really matter if you use USB-SATA or direct SATA connection. For macbook drives use usb-apple adapter, thats totally fine (there are gen.4 PCI-E cards, but they are difficult to find / too expensive. Check [[Apple SSD connectors and adapters list|Apple SSD page for some links]]
#KVM switch or USB with on/off button
'''IMPORTANT NOTE: you should disable SSD trim on data recovery device especially if you use some file signature-search software like Diskdrill or Photorec.'''
'''Ubuntu/Mint: sudo rm /etc/cron.weekly/fstrim'''
'''Windows: fsutil behavior set disabledeletenotify 1'''
'''MacOS: sudo trimforce disable'''
==Recovery(Terminal commands):==
Theory:
#If you have failing/freezing SSD drive, you should try to make an image of it as soon as possible. You may try to copy 1-2 most important files if you can mount it but never try to transfer big amounts of data. Obviously Photo Library is actually a huge folder with thousands of files. After you cloned the drive you may try data recovery software, disc utility repair, etc. DO NOT ATTEMPT TO FIX ORIGINAL DRIVE.
#Note on Apple-Samsung SSDs: they tend to freeze once they hit a bad block. If it is frozen, you need to power-reset the drive and continue data recovery. This might skip few block of data, but in most cases it is 0.1-5% of whole drive so it might not be critical for most of the data
sudo lsblk
this will show you list of block devices. if you cant understand it, simply open Disk utility or gparted to see dist identities in graphical manner. Linux disks look like that: /dev/sdXY where X is disk number and Y is a partition.
my normal command looks like that:
sudo ddrescue -df -r0 /dev/sdX /dev/sdZ customername.log
X is a SOURCE ID , Z is TARGET ID. -df uses forced overwrite (to write on other drive) -r0 means it will not retry failed block and go further. Log is necessary so if you re-run the command it will continue from the point it was stopped.
I usually use a physical drive as target, brand new clean drive or pre-wiped(owerwritten with zeroes) one.
now you should see whats going on with the cloning process: if it goes through with couple of errors - you are lucky. If it freezes for more than 10-20 seconds, disconnect the drive ( or use KVM switch ad a reset button).
Example bash script for such cases:
#!/bin/bash
while :
do
sudo ddrescue -df -r0 /dev/sdX /dev/sdZ customername.log
sleep 5
done
if device disappears, ddrescue quits and script sleeps a little bit. After you restart it it starts with the next block and goes further. if you have 100-300Mb/sec transfer rate, it might take you 1-2 hours to clone a drive.
after you have a 90%+ clone, you can try to mount APFS partition with APFS Fuse(link above) or use known good data recovery tools like Diskwarrior (HFS-only) iBoySoftware or Diskdrill. In some cases you might be able to mount cloned drive or fix it with MacOS disk utility
==Some interesting articles for further research==
[https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html GNU DDRescue Manual]
[https://www.stderr.nl/Blog/Software/Linux/HfsFilesystemRecovery.html HfsFIleSystemRecovery]
HFS file system repair/recovery in Linux https://photobyte.org/recover-damaged-mac-hfs-disk-linux/
Images and corrections pending, by questions you can reach me on Rossmann's discord as @inwerp
aqoim3w3mdci1dv5mowxo1g4kgd3744
Data recovery with PC-3000
0
2005
5926
2021-07-02T21:06:09Z
Inwerp
16
Created page with "This page is not intended to be a PC-3000 guide but it will mainly describe some features and techniques to recover data from Apple SSD drives. This matter is barely documente..."
5926
wikitext
text/x-wiki
This page is not intended to be a PC-3000 guide but it will mainly describe some features and techniques to recover data from Apple SSD drives. This matter is barely documented even on ACELAB website so i decided to gather some info. Long story short, PC3000 is (at the moment) almost as good as ddrescue with asmall difference which will be described later.
One of the most important things to keep in mind before you consider buying PC-3000: it does support apple AHCI Gumstick (gen.4) drives but controller used by apple drives is not supported and probably will never be. This means that if you have firmware/NAND problem, most likely it wont really help you unless device works for a while after you power-cycle the drive. In this case Data Extractor (part of PC-3000) will provide excellent job: it can soft and hard reset the drive and you can configure it to skip few blocks and try further.
Since Chris is interested in building ddrescue-helper which would use power switch to power cycle the device, i think it worth trying to replicate this feature as a DIY project, basically we need bash script, relay/power switch with command-line interface and some RTFM to make skip-ahead configurable. combined with ddrescue log viewer it might be possible to create a device which will do everything pc3000 can probably do with apple SSD drives.
if you check [https://blog.acelaboratory.com/pc-3000-portable-pcie-x16-and-apple-ssd-adapters.html Acelab website], you may see that it supports "logical issues" for all drives(except onboard), but "physical issues" are not supported. This means that PC3000 will not be able to inject "Loader" (PC3000-friendly firmware which can rebuild its own translator or do some other magic to get your data). Basically that means that if your drive is in BSY state or not detected (cant read serial) - the only option you have is a freezer/heatgun method. (of course, LDO ICs worth checking first - maybe you are lucky and your drive simply lacks of power on NAND). One of common problem of SSD drives is that service data might be corrupted or drive might stuck in self-check. I also noticed that Apple SAMSUNG AHCI drives freeze as soon as they meet single bad block. The bad thing is that if you do not power-cycle and skip block, it will eventually damage the G-List (lifetime badblock list which grows as drive finds bad blocks) and drive will fail to initialize at all. There might be only one shot to clone such drive, so use it wisely. One of the core DataExtractor features is a possibility to extract only needed data, so it kind of combines file manager and ddrescue-like reader. The main issue of DDrescue is that if you start from bLBA 0 and go further, you will save 5-7GB of useless data (operating system, programms, temp files) and might never reach customer's data till drive fails.
I spent some time looking for this chart. These are fancy blinking lights in PC3000 Utility, worth checking to understand wtf is going on:
'''Status register:'''
BSY — Drive Busy
DRD – Drive Ready
DWF – Drive Write Fail
DSC – Drive Seek Complete
DRQ – Drive Request
CRR – Corrected by controller
IDX – Index
ERR – Error Received from the drive’s error Register
'''Error register:'''
BBK – Bad Mark Block: A bad sector mark was found in the ID field of the sector or an Interface CRC error occurred
UNC – Uncorrectable Data: An ECC in the data field could not be corrected (a media error or read instability)
IDNF– ID Not Found: The required cylinder, levitra, head, levitra, and sector could not be found, levitra, or an ECC error occurred in the ID field
ABRT– Aborted Command: The requested command was aborted due to a device status error
TONF– Track 0 Not Found: Track 0 was not found during drive recalibration
AMNF– Data Address Mark Not Found: During the read sector command, levitra, a data address mark was not found after finding the correct ID field for the requested sector (usually a media error or read instability)
g34bzsan9nbsofd0s5369l5fcmp296b
Demux
0
2219
6791
6790
2023-03-17T16:12:35Z
Chrisb
1
6791
wikitext
text/x-wiki
Demuxing is the process of disabling the dGPU to bypass failing/failed GPU chips. This process is common on the 2011 MacBook Pros with AMD GPUs.
The preferred method is to flash the graphics mux (gmux) FPGA chip with programming to disable the dGPU. It keeps the GPU powered down to save power and routes the iGPU to the internal display. The process removes the ability to use an external screen.
[https://doslabelectronics.com/Demux DosLabs] sells keys to flash the gmux and retain keyboard brightness control. You will need to install a kernel extension on High Sierra. macOS before High Sierra works automatically. High Sierra is the newest Apple-supported macOS for the 2011 MacBook Pros. Running an unsupported macOS newer than High Sierra can be accomplished with the [https://dosdude1.com/software.html DosDude patchers] or [https://dortania.github.io/OpenCore-Legacy-Patcher/ Open Core Legacy Patcher] (OCLP). DosDude1's patcher automatically applies the patch. The OCLP has the patch as an option. It may not be applied by default.
The process to flash the gmux is in the DosLabs link above. Afterward, on High Sierra, follow these [https://doslabelectronics.com/Demux#backlight instructions]. Here is the [https://redi.rs/bkltpkg link to the mirror]. The instructions are also included below:<syntaxhighlight line="">
Reboot the machine while holding CMD+R.
Once recovery mode is booted, open the terminal and enter the following: csrutil disable
Reboot the machine.
Install the package.
</syntaxhighlight>
5gxddkg9unooqksidbzu3k47gbxuk7w
DeployStudio Catalina
0
707
6838
1489
2023-05-17T20:58:36Z
Chrisb
1
changed allowing imaging of newer systems
6838
wikitext
text/x-wiki
DeployStudio does work with Catalina. Please be aware you will need to ensure your Boot ROM has been updated to enable APFS booting. There is a BootROMUpdate NetBoot image floating around. Please note, DeployStudio does NOT support restoring APFS to HDDs at all. You will only be able to do the top workflow on a SSD. You can do the bottom workflow on a HDD.
You will need a USB updated to Catalina.
*Install and Update Catalina
*Install DeployStudio 1.7.9 ([https://web.archive.org/web/*/http://www.deploystudio.com/Downloads/DeployStudioServer_v1.7.9.dmg archive])
*Open System Preferences : Security & Privacy : Full Disk Access
*Click the lock to authenticate
*Open Finder : click go : type /bin and Enter
*Drag sh from /bin to the Full Disk Access window
The DeployStudio Runtime should now work on your USB drive
To create the Catalina Image you should be booted to the USB created above in the Mac you would like to image. Be sure to have plenty of free space on your USB.
*hdiutil create -size 30g -type SPARSE -fs APFS -volname "Macintosh HD" filename.dmg
*hdiutil attach -nobrowse -noautoopen -noverify -owners on filename.dmg.sparseimage
*diskutil apfs listsnapshots /dev/disk1s1 | grep "+--" | cut -d" " -f2 | xargs -I{} sudo diskutil apfs deleteSnapshot disk1s1 -uuid {} (substitute your source volume device name. Run once for the Data volume and once on the System
*sudo asr restore --source /dev/disk3 --target /dev/disk5s1 --erase --noprompt (please substitute /dev/disk3 with the container of the volume to be imaged and /dev/disk5s1 with the output of hdiutil for the volume named Macintosh HD)
*Use Disk Utility to eject the image file
*hdiutil convert -format UDZO filename.dmg.sparseimage -o filename.dmg
*asr imagescan --source filename.dmg
Now you can put this in the DeployStudio/Masters/APFS directory and make a normal workflow incorporating this image.
To make a workflow in DeployStudio that will update the Boot ROM and bridgeOS
*Build a workflow that installs 10.13.6 HFS
*Add a generic script called copy_catalina.sh
*<syntaxhighlight lang="bash">
#!/bin/sh
cp -R "${DS_REPOSITORY_PATH}/Files/Install macOS Catalina.app" "${DS_LAST_RESTORED_VOLUME}/Applications/"
exit 0
</syntaxhighlight>
*Add a generic script to the workflow called update_catalina.sh. Check the Postponed execution
*Create a script that contains
*<syntaxhighlight lang="bash">
#!/bin/sh
"/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall" --agreetolicense
exit 0
</syntaxhighlight>
d9i7u9ekpx2841c19e6668yvload4p8
Diagnostic Shortcuts
0
425
973
972
2020-04-04T14:28:34Z
Inwerp
16
/* PM_SLP_S* rails quick check */
973
wikitext
text/x-wiki
===PM_SLP_S* rails quick check===
Most boards have DEBUG LED No-Stuff circuit on board.
[[File:Debug Led.png|left|frame|You have all PM_SLP rails as well as PP3V3_S5 all together, on most MacBooks this circuit is placed on top of the board which means you can start the diagnostics without even removing it from case. Search for DBGLED to locate the area. Many test points here represent SLP signals. PP3v3_S5 can also be checked here. Since it is being enabled by SMC and generated from PPBUS, it also indicates functional PPBUS, PP3V42_G3HOT and SMC. ]]
<br />
lc1e0rbaka8ysjf0ba0zp6fu1gbwr0c
Diode mode BGA continuity check
0
1429
4999
4996
2020-10-11T07:04:39Z
Chrisb
1
4999
wikitext
text/x-wiki
There are many cases when you do not have time to reball or resolder SMC or any other BGA chip but you need to check if there is continuity between IC and some line. In most ICs there is a diode between ground and data line. If you isolate the part of the circuit, you can see if you got 0.4..0.6 Voltage drop from ground to pin. Red probe on ground, as always.
Example:
820-00165, no backlight, PPBUS on backlight, no boosting.
# Disconnect LCD, Remove diode on pos. D7701 to isolate the circuit[[File:Diode7701.png|none|thumb]]<br />
# Put red probe on ground, black probe on D7701 pin 2. As mentioned, OL means no continuity to IC.
Example 2:
Quarter spin 820-00165, U5110 is okay and PP3V3_S5_AVREF_SMC is also present/not shorted to ground.
Remove U5110 and check continuity same as mentioned above.
[[File:diode7701.png|none|thumb]]
oe1cz3zhjgj4rhb4ws8a8v1gqejsi5b
Disable Spotlight on External Drives
0
529
1150
2020-04-29T23:05:31Z
Chrisb
1
Created page with "To have <code>mds</code> ignore all external volumes including network volumes run the following command: $ sudo defaults write /Library/Preferences/com.apple.SpotlightServer..."
1150
wikitext
text/x-wiki
To have <code>mds</code> ignore all external volumes including network volumes run the following command:
$ sudo defaults write /Library/Preferences/com.apple.SpotlightServer.plist ExternalVolumesIgnore -bool True
To be able to re-enable indexing for certain external volumes, run this command instead:
$ sudo defaults write /Library/Preferences/com.apple.SpotlightServer.plist ExternalVolumesDefaultOff -bool True
Full article [https://enterprisemac.bruienne.com/2015/09/15/disable-spotlight-indexing-of-network-volumes/ here]
12vyh97lli83nxn0861kb3tpkjt6yqp
EFI
0
28
6891
6297
2023-08-22T19:02:49Z
Muerto
527
6891
wikitext
text/x-wiki
==EFI Bootup CS Graph==
===820-4924===
SPI CS during a successful bootup on an 820-4924. The first 200ms burst seems to signify there is good communications with the EFI. With bad traces, that initial burst lasts around 2ms. Near the start of the 1.2 second burst the chime sounds and backlight turns on.
[[File:Successful_Boot_EFI_1.jpg|400x400px]][[File:Successful_Boot_EFI_2.jpg|400x400px]]
===820-3437===
====Communication issue====
CPU VCore, SLP_S5# and SPI_CS0_L when R6120 is removed on an 820-3437, simulating communication issue with SPI ROM causing power cycling.
<div><ul>
<li style="display: inline-block;"> [[File:820-3437 Pulsing CPU VCore.jpg|thumb|none|400px|CPU VCore]] </li>
<li style="display: inline-block;"> [[File:820-3437 Pulsing PM SLP S5 L.jpg|thumb|none|400px|PM_SLP_S5_L]] </li>
<li style="display: inline-block;"> [[File:820-3437 Pulsing SPI CS0 L.jpg|thumb|none|400px|SPI_CS0_L]] </li>
</ul></div>
====Commmunication ok====
Expected SPI_CS0_L behaviour before RAM initialization. This board has RAM issue, on a working board there will be more activity afterwards when EFI is copied into RAM.
[[File:820-3437 Beeping SPI CS0 L.jpg|thumb|none|400x400px|SPI_CS0_L]]
===820-00840===
====EFI ONLY====
[[File:820-00840_2.4s_EFI.png|alt=]]
SPI_MLB_CS_L 2.4 second graph
[[File:820-00840_12s_EFI.png|alt=]]
SPI_MLB_CS_L 12 second graph
[[File:820-00840_24s_EFI.png|alt=]]
SPI_MLB_CS_L 24 second graph. Charger chime happens at the end of the communications
[[File:820-00840_SPIROM_USEMLB_B_SPI_MLB_CS_L_Y_24s_EFI.png|alt=]]
SPI_MLB_CS_L in blue, SPIROM_USEMLB in yellow. 24 second chart.
====EFI + SMC====
[[File:820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC.png|alt=]]
LPC_FRAME_L in blue, SPI_MLB_CS_L in yellow. 2.4 second graph.
[[File:820-00840_LPC_FRAME_L_B_SPI_MLB_CS_L_Y_24s_EFI_SMC.png|alt=]]
LPC_FRAME_L in blue, SPI_MLB_CS_L in yellow. 24 second graph.
==EFI Quad SPI==
because they switched to Quad SPI, they can't use HOLD# directly to bypass SPI ROM as it's now an I/O pin.
It uses a different SPI ROM chip (the smaller WSON8 footprint IIRC) which supports Quad SPI. Typically it has to be enabled by setting the "QE" (Quad Enable bit) with a programmer, then those 4 pins will act as I/O all the time. With Dual SPI that was used before, the communication starts in standard (single) SPI and then a command is used to switch to Dual SPI.
[5:01 PM] piernov: SPI is originally a protocol that works with 2 simplex data lines(only one direction, one transmit MISO, one receive MOSI, viewed from the SPI ROM). In dual mode, those 2 lines are now half-duplex data lines (bidirectional, but not at the same time, it alternates directions) and data is shared across them (so that the device can send or receive twice as fast). In quad SPI mode, it's similar to dual SPI but you now have 4 data lines because you use the Hold and Write Protect signal lines as data lines, so you can transmit 4 times as fast as on a standard SPI bus.
==EFI Tools==
[https://github.com/sadponyguerillaboy/Swift-Apple-EFI-Patcher GUI EFI Tool]<br>
[https://github.com/sadponyguerillaboy/Python-Apple-EFI-Patcher Script EFI Tool]<br>
[https://github.com/MuertoGB/MacEfiToolkit Mac EFI Toolkit (mefit)]
==EFI ME Cleaning==
How to clean the Intel ME (Management Engine) region of the EFI:<br>
<youtube>exfG5Iywmjk</youtube>
The user Crumblenaut has created a guide based on Piernov's video above that should spell out this process in a series of hopefully easy-to-follow step-by-step instructions. You can find it on the [[Clean EFI ME Region|Clean ME Region]] wiki page.
==EFI Change Serial Number==
How to edit the serial number of a Mac<br><br>
<youtube>poA8HByYqTM</youtube>
==EFI Bootup Diagram==
[[File:EFI_Boot_up_Diagram.jpg|860x860px]]
==POST==
<youtube>K63AvEW3XLw</youtube>
==SPI ROM compatibility==
It is not recommended to replace the SPI ROM chip with a different model. Different SPI ROM chips may have different working voltage (1.8V or 3.3V), different operating frequency and latency, different command set and especially support for Quad SPI mode which may not be enabled by default. In particular, the 2015 MacBooks use Quad SPI mode, so the chip must support it and have its QE bit set to one. Additionally, Intel platforms all have Intel Management Engine nowadays, and it can be picky about the SPI ROM. The firmware contains a list of supported chip in the VSCC table, you can check it with UEFITool NE or Intel FITC if ever you have to swap with a different chip.
==Swapping SPI ROM between boards and using pre-programmed ICs==
Buying pre-programmed chip off of eBay is not a good idea. Sometimes it works, sometimes it doesn't, because the people that sell them don't necessarily know what they are doing and just flash random dumps found on badcaps.net or Vinafix.<br>
Using a pre-programmed chip or a chip from another machine means you will have the wrong serial number. In the best case the serial number is blank and the board has to be serialized using Apple's Blank Board Serializer. Otherwise it has to be edited to match the original one, and the checksum for the Fsys store (which contains the ssn variable) has to be recalculated.<br>
Using a chip from another machine means you get the ME region that has already been tied to the new machine's PCH. This will cause all sorts of random problems depending on the machine, incl. shutdown after 30 minutes, long POST delay, fan running at full speed, ME not working, freeze/kernel panic while booting macOS, apparently even webcam not working on some Mac boards. The ME region has to be cleaned, and there's a specific procedure for that, 90% of the videos or tutorials you'll find are wrong about it. Don't copy/paste with an hex editor, don't use MEInject. This will put a raw ME region without manufacturer settings, and Macs for example have specific settings for the ME region that will be lost (and it can also cause similar issues to "dirty" ME region). The correct way is to use Intel FITC, see tutorial on win-raid forums. Some pre-programmed chip also may not have the ME region cleaned properly.
==APFS BootROM==
Apple switched to APFS by default with High Sierra on machines with SSD (and HDD since Mojave), which required a BootROM update (part of the EFI) to support booting from this filesystem. Meaning that if you use an EFI with an old BootROM (either flashing a random dump or using a pre-programmed chip without the update), suddenly you won't be able to boot from a drive with High Sierra or newer on it, and you won't even see it in the boot menu. One solution is to reinstall macOS on the internal SSD to trigger the BootROM update.
==WSON8 adapter==
You can buy a WSON8 adapter board for your programmer, it should come with both the 8x6 and the 6x5 footprints for 2013 and 2015 machines respectively. You don't need to use hot air to solder it on the adapter, you can just run the solder iron with some solder on the edges.
<br />
=== Links ===
https://github.com/ISpillMyDrink/UEFI-Repair-Guide/wiki
<br />
[[Category:Mac]]
jwwaa8luvrwsxg2p2rcclb1i5xhbqgt
ERR CERT INVALID
0
2074
6204
6180
2021-10-26T19:30:23Z
Francis
4
6204
wikitext
text/x-wiki
===='''From ''Sept 30th 2021'' Let's Encrypts previous root certificate DST Root CA X3 (and it's R3 intermediate) will expire. It has been replaced by their ISRG Root X1 certificate (and replacement R3 intermediate).'''====
Certificate trust mainly relies on the "root" issuing certificate (and intermediate certificates) being trusted by your computer.
The root certificate issues an Intermediate certificate which in turn is used to issue general certificates such as the ones for your website. This is called a "Chain" of trust. Your certificate (called a Leaf or end-entity certificate) will be validated by following this chain.
'''<br />If you get errors like the ones displayed in the examples then you have three options:'''
1. Updating all root certs (fastest method, recommended). [https://logi.wiki/index.php/Update_Certificates_in_Older_macOS Source]
#Open terminal, you can do this by pressing Command(⌘)+Spacebar and typing terminal and pressing enter. Also found in utilities Folder
#Type below command in the terminal window and press enter
#Enter your password and press enter
bash <(curl -s <nowiki>http://logi.wiki/rootcerts.sh</nowiki>)
2. Replacing the certificate file manually (most "secure", fast method)
#Download the [https://letsencrypt.org/certs/isrgrootx1.pem ISRG Root X1] (direct download) certificate file.
#Open the Keychain Access app and drag that file into the System folder of that app.
#Find the ISRG Root X1 certificate in System and double click on it, open the Trust menu and change "Use System Defaults" to "Always Trust", then close that and enter your password to confirm the change (if prompted).
3. Updating the operating system (slowest method, needs additional work like migrating data)
#Update to a newer OS version, High Sierra 10.13 or later. This automatically updates the certificate.
<br />[[File:Cert error example.png|thumb|alt=|'''Errors might look like this''']]
[[File:Cert invalid example.png|thumb|alt=|'''Or this''']]
'''Example errors:'''
NET::ERR_CERT_INVALID
NET::ERR_CERT_DATE_INVALID
NET::ERR_CERT_AUTHORITY_INVALID
NET::ERR_CERT_COMMON_NAME_INVALID<br />
=====Source and more information: https://docs.certifytheweb.com/docs/kb/kb-202109-letsencrypt/<nowiki/>=====
dbcw210qk2ylmvyfzoyobivyof7fdh3
El Capitan
0
702
1464
2020-07-21T23:21:47Z
Joesipaq
20
Created page with "Tips for successfully installing El Capitan - When Updating from older OS, Manually set the date to January 1st 2016 or the installer will fail - When installing from a pend..."
1464
wikitext
text/x-wiki
Tips for successfully installing El Capitan
- When Updating from older OS, Manually set the date to January 1st 2016 or the installer will fail
- When installing from a pendrive/boot disk enter terminal and enter 'date 0101012016' this will set the date manually to January 1st 2016, and the installer should work.
Make sure your disk is not formatted in AFPS, as it will not be detectable by the boot loader.
g6tm57wvi30gsd7p5afa47f7t2fn24q
External display adapters support
0
1940
5763
5762
2021-04-28T14:03:07Z
Inwerp
16
/* MacBook 13" (iGPU) */
5763
wikitext
text/x-wiki
Background: all USBC MacBooks support external screens, however it is not that easy to get a picture on Filevault login / Recovery / Boot menu. The problem is that USBC Display negotiation starts only after GPU driver is loaded, which will never happen if you are not able to click on your password field and type password. The common technique is to physically disconnect internal screen and to fiddle with connectors till something works. However on some T2 models it looks like even then, there might be no external picture. This issue looks pretty obscure and funny but i see no better way but to test every device i have my hands on and to build up a table with known-good cable combinations. To do the trick with internal screen connected, connect external keyboard/mouse, hard shut down and then turn on the device and immidiately close the lid(it should chime with lid closed). Boot logo should appear on external screen even before the Filevault login thus indicating you are able to backup data before you fix the screen.
<br />
===MacBook 13" (iGPU)===
USBC-DP ([https://www.cablematters.com/pc-967-124-cable-matters-unidirectional-usb-c-to-mini-displayport-cable-usb-c-to-mini-dp-cable-supporting-4k-60hz-6-feet-usb-c-thunderbolt-3-port-compatible-for-video-only-not-compatible-with-hard-drives.aspx Cable Matters USB C Mini DisplayPort]) as '''DP1''' in table(add your cables)
USBC-HDMI ([https://uniaccessories.io/collections/cables/products/usb-c-to-hdmi-cable-3ft-6ft-10ft Uni USB C to HDMI]) as '''HDMI1'''
USBC HUB ([http://anker.com/products/anker-8-in-1-usb-c-hub-powerexpand-usb-c-adapter Anker 8-in-1 USB-C Hub)] + normal HDMI-HDMI Cable as '''HUB1'''
{| class="wikitable"
|+This table indicates MAIN image on external screen with internal screen PRESENT
|Device
|USBC > DisplayPort
|USBC > HDMI
|USBC > USBC
|USBC HUB with HDMI/DP/Etc
|-
|MacBook 2016-2017A1708/A1706
|DP1
|X
|X
|HUB1
|-
|MacBook 2018-2019 A1989
(Same results with internal display disconnected)
|DP1
|X
|X
|HUB1
|}
78d5tbezs0oxmhll1u3avfn9z8dksfm
Face ID Precautions
0
1888
5561
2021-02-10T05:20:43Z
PaladinJax
199
Added face id precaution page
5561
wikitext
text/x-wiki
When repairing a device with face ID (iPhone XR, iPhone X, and up) there are a couple of ways face ID can go bad or be damaged.
* When taking the LCD/OLED display off the the phone you're working on be very cautious to not tear/bend the cable toward the top half of the device, there will be a bend at the mid point of the cable already allowing room for seating the display again once repair is completed.
* When testing a repair on one of these devices DO NOT turn the device on until the display is fully seated on the frame. Not doing this runs the risk of damaging the face ID module due to the triggering of a fail-safe put in place to protect the user.
* When working with a new display there will be a gold foil over the face ID module, ensure that the gold foil is not damaged or off-center from the circle it's supposed to be seated on. Correct orientation shown to the right.
[[File:goldfoilxs.png|thumb]]
<br />
m6ewdf7gxdp5p1nck73ko1wcfrzto1w
Face ID Repair
0
859
1942
2020-09-27T23:08:06Z
Chrisb
1
Redirected page to [[iPhone Face ID Repair]]
1942
wikitext
text/x-wiki
#REDIRECT [[iPhone Face ID Repair]]
27itdi1jvop9uospz04kygnliwhtjug
Face ID Troubleshooting
0
33
1719
552
2020-09-13T23:04:59Z
Eden
191
categories
1719
wikitext
text/x-wiki
[[File:Face ID Troubleshooting.jpg|thumb|alt=|left]]
[[Category:Troubleshooting Guide]]
[[Category:iPhone X]]
[[Category:iPhone XR]]
[[Category:iPhone XS]]
[[Category:iPhone XS Max]]
[[Category:iPhone 11]]
[[Category:iPhone 11 Pro]]
[[Category:iPhone 11 Pro Max]]
pw0jwmkvm3qiajtvmxbghvx5o9no7hb
Failing GPU
0
733
1561
2020-08-28T16:52:21Z
Chrisb
1
Created page with "You can usually tell a bad GPU from these symptoms on bootup: * Bootup screen with a blue hue or wide bars on it. * Pixelation * White screen after loading bar * only boots..."
1561
wikitext
text/x-wiki
You can usually tell a bad GPU from these symptoms on bootup:
* Bootup screen with a blue hue or wide bars on it.
* Pixelation
* White screen after loading bar
* only boots to [[safe mode]] or [[single user mode]].
Failing GPUs are most notable in
* 2009-2010 MacBook Pro 15"/17": This model is often diagnosed with failing GPUs when in fact they have a bad capacitor. We repair that [[board level problem]] at $199.
* 2009-2010 iMacs with GPU: This model has a higher than normal failure rate. We can repair them, check current prices and multiply by 2.5x.
* 2011 MacBook Pros 15": This model has a GPU with a high failure rate. We do not fix this board problem. The bypass does not allow brightness control or external screen. We will replace the [[LB]] with a 2012 model. The customer will get USB 3.0, a faster CPU, a faster GPU, and the ability to upgrade past High Sierra. This repair is $799
* 2011 MacBook Pros 17": This model has a GPU with a high failure rate. We do not fix these. The bypass does not allow brightness control or external screen.
* 2011 iMac 21.5"/27": This model has a GPU with a high failure rate.. We do not fix these. There is no bypass and it is difficult to get a good quality part at this time.
* 2013-2015 MacBook Pro 15" [[Integrated Graphics (IG)]]: This model has CPU buck converters that tend to crash the computer while waking from sleep. The transition from SUS power state to S0 causes the issue. We can sometimes repair these by replacing the CPU MOSFET controllers at $299
* MacBook Retina 12": This model can sometimes get the pixelation effects associated with GPU failure. Unfortunately the CPU is failing in this model. It warps due to heat over time. We are not able to repair this board. We would quote replacement, or divert them to the Apple store for the [[flat rate repair]].
pkssqe0u9j1wy251thuvv4sja6x4gaz
Finding contact info for lost/stolen devices
0
1750
5189
5188
2020-11-04T18:13:41Z
PaladinJax
199
Added steps for finding contact info.
5189
wikitext
text/x-wiki
'''If you find or are given a device that has either been found or reported stolen, you can try these steps to get contact info.'''
* If the device has medical ID set up you can open then phone and check the bottom left of the password keypad for contact info.
* If the device does not have medical ID and you have access to a black-listed/junk device, you can put the sim card from the found device in the black-listed/junk device then restore it in finder/itunes to gain access to the phone number.
* If you do not have access to the previous 2 steps you must restore the device to gain access to the phone number in finder/itunes.
8et86geobzsu00ty6act630s12pnfp0
Force iCloud Optimizing
0
2099
6290
6289
2021-12-06T22:06:21Z
Chrisb
1
6290
wikitext
text/x-wiki
You can run the following command on a file or folder to force iCloud to upload and remove the data from the system. It will still be available for download from iCloud<syntaxhighlight lang="bash">
brctl evict "folder or filename and location"
</syntaxhighlight>
9chgvnnlya4eot3c8a0ciqx8wfublrh
Fusion Drives
0
734
5776
5750
2021-05-06T13:05:33Z
Chrisb
1
/* High Sierra and earlier */
5776
wikitext
text/x-wiki
[TODO]
==Erasing==
===Catalina===
Boot into testing drive.
Use Disk Utility to break Fusion, then secure erase each drive separately.
Use DeployStudio to create a new Fusion Drive and deploy.
==Repairing==
Full explanation here: https://support.apple.com/en-gb/HT207584
===High Sierra and earlier===
Boot into the newest Internet Recovery with Option + Command(⌘) + R (or: Command(⌘) + R) and open terminal.
diskutil cs create Macintosh\ HD disk0 disk1
diskutil cs list
Use the Logical Volume Group GUID in the following command
diskutil cs createVolume <var>logicalvolumegroup</var> jhfs+ Macintosh\ HD 100%
===Mojave and later===
Boot into the newest Internet Recovery with Option + Command(⌘) + R (or: Command(⌘) + R) and open terminal.
diskutil resetFusion
6o8ozjr3q9tfiz6173j3a668gm020v9
G3H
0
54
89
2019-11-10T15:39:23Z
Chrisb
1
Created page with "{{stub}}"
89
wikitext
text/x-wiki
{{stub}}
krjmcey759x1lf02vglbzqojleitc07
G3 to S3 State for Ivy Bridge Haswell and Broadwell
0
22
5064
1684
2020-10-20T08:38:47Z
Piernov
10
Erratum 820-3115
5064
wikitext
text/x-wiki
Please note, if you have pulsing PM_SLP_S4, you likely have a problem after this chart. Please refer to [[820-00165 Pulsing]]. After this chart please refer to [[Bootup Signal Order|S3 to S0 State for Ivy Bridge Haswell and Broadwell]]
{{#drawio:G3 - S3 Ivy Bridge - Broadwell|type=png|width=chart|height=chart}}<br>
You can edit the above draw.io diagram in place by clicking the edit button closest to its top right.
The following files are the original source files from Piernov. I converted them to draw.io in order to create an easy to edit online version with revision history. Please use the talk page here to discuss changes if needed.<br>
[[File:G3-S3 Ivy Bridge - Broadwell.dia.gz]]<br>
[[Media:G3-S3_Ivy_Bridge_-_Broadwell.png]]
==Errata==
On 820-3115, PM_SLP_SUS_L can come up without PCH_SRTCRST_L and RTC_RESET_L (and PCH_INTRUDER_L) but they are required for PM_SLP_S5_L.
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
[[Category:Troubleshooting Guide]]
cu3uubev0ymk03np1epqlfywmui69v6
GPU Repair
0
2132
6549
6397
2022-08-02T16:53:27Z
Inwerp
16
6549
wikitext
text/x-wiki
This is a stub article describing some aspects of GPU repair. At first, this is gonna be only my "notes" page but i will try to keep it structured.
Main sources for the reliable GPU information ATM:
Techcemetry (patreon only discord, (YT Channel)
vlab.su - one of the most advanced Russian forums with hundreds of cases and pages.
DO NOT search this page for any sort of download links and proprietary NVIDIA/AMD Software. Everything is quite easy to look up in Google.
<br />
==NVIDIA MATS / MODS (iMac with Nvidia GPU / MacBook Pro A1398 2012-2015)==
This software is an advanced factory testing suite. There are different versions, "GOLD" files with different GPU parameters. Most recent and universal version atm is 455.127.
If you look up easymats0005 in Chinese internet/google, you will find usb stick generator software. For reasons described above, no link can be provided.
If you do not have output on screen and the last thing you see is "no suitable video mode found", edit grub.cfg: <blockquote>
if loadfont /boot/grub/unicode.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=0
menuentry "Start Linux" {
set gfxpayload=keep
linux /tiny/kernel quiet
initrd /tiny/initrd
}
GRUB_TERMINAL=console
</blockquote>There are multiple test scripts in this image, in most cases you can go to 455.127 folder and simply run "nb".
After test is done, results will be stores in results.txt. Use reboot / shutdown command to keep filesystem clean(if you simply shutdown, next time it will mount i read-only, there are no chkdsk tools in this tiny image)
channels identified by MATS results are accurate to the boardview positions.
for some advanced use, you can go with mods:
./mods gputest.js -oqa -old_gold -test 178 -fan_speed 70 -dramclk_percent 100 -ignore_fatal_errors -run_on_error -matsinfo
command is mostly self-explanatory. If MATS finds no issue with RAM but card works unstable under load, this might be an issue on higher frequency.
Please note: i
auyhf08150bh8tcx72amlicfzvcguxa
Game Console Diode Measurements
0
1410
3054
2020-10-06T15:50:11Z
Chrisb
1
Chrisb moved page [[Game Console Diode Measurements]] to [[Game Console Diode Mode Measurements]]
3054
wikitext
text/x-wiki
#REDIRECT [[Game Console Diode Mode Measurements]]
h999bq9jzcm7tb9qyitswx9epzah3ln
Game Console Diode Mode Measurements
0
534
5777
3053
2021-05-06T13:09:53Z
Chrisb
1
5777
wikitext
text/x-wiki
==Nintendo Switch Lite:==
Overall View:
[[File:Nintendo Switch Lite Overall View 1 Edited.jpg|alt=Nintendo Switch Lite Overall View 1 Edited|1067x1067px]]
FPC 1:
[[File:Nintendo Switch Lite Battery Edited.jpg|alt=Nintendo Switch Lite Battery Edited|1067x1067px]]
FPC 2:
[[File:Nintendo Switch Lite FPC 2 Edited.jpg|alt=Nintendo Switch Lite FPC 2 Edited|1067x1067px]]
FPC 3:
[[File:Nintendo Switch Lite FPC 3 Edited.jpg|alt=Nintendo Switch Lite FPC 3 Edited|1067x1067px]]
FPC 4:
[[File:Nintendo Switch Lite FPC 4 Edited.jpg|alt=Nintendo Switch Lite FPC 4 Edited|1067x1067px]]
FPC 5:
[[File:Nintendo Switch Lite FPC 5 Edited.jpg|alt=Nintendo Switch Lite FPC 5 Edited|1067x1067px]]
FPC 6:
[[File:Nintendo Switch Lite FPC 6 Edited.jpg|alt=Nintendo Switch Lite FPC 6 Edited|1067x1067px]]
FPC 7:
[[File:Nintendo Switch Lite FPC 7 Edited.jpg|alt=Nintendo Switch Lite FPC 7 Edited|1067x1067px]]
FPC 8:
[[File:Nintendo Switch Lite FPC 8 Edited.jpg|alt=Nintendo Switch Lite FPC 8 Edited|1067x1067px]]
Charging Port Side 1:
[[File:Switch Lite Charging Port 1 Edited.jpg|alt=Switch Lite Charging Port 1 Edited|1067x1067px]]
==Nintendo Switch:==
Charging Port View 1:
[[File:Charging Port View 1.jpg|alt=Charging Port View 1|800x800px]]
Charging Port View 2:
[[File:Charging Port Edited 2.jpg|alt=Charging Port Edited 2|800x800px]]
FPC Set 1:
[[File:Nintendo Switch FPC 1 Edited.jpg|alt=Nintendo Switch FPC 1 Edited|800x800px]]
FPC Set 2:
[[File:Nintendo Switch 2 Edited.jpg|alt=Nintendo Switch 2 Edited|800x800px]]
FPC Set 3:
[[File:Nintendo Switch 3 Edited cORRECTED.jpg|alt=Nintendo Switch 3 Edited cORRECTED|800x800px]]
FPC Set 4:
[[File:Nintendo Switch 4 Edited.jpg|alt=Nintendo Switch 4 Edited|800x800px]]
P13USB:
[[File:Switch P13USB Edited.jpg|alt=Switch P13USB Edited|803x803px]]<br />
__FORCETOC__
786df337lcouhxbypmsb5yy02w5xfwe
Game Console Small Components
0
660
6496
6363
2022-05-01T07:50:27Z
Pedro147
26
updated injured gadgets link for M-XBOS-BC-07
6496
wikitext
text/x-wiki
==List of Console Small Components with Links to purchase==
Updated list of Game Console Small Components with Links: https://www.dropbox.com/s/fxback36auxtj6y/Console%20Small%20Components%20List.xlsx?dl=0
Also pasted below.
Provided by: https://repairlegion.com/
{| class="wikitable"
|Part
|
|Description
|Mouser Link
D1
|Injured Gadgets Link
|IG SKU
|-
|
|
|
|
|
|
|-
|Xbox One S
|
|
|
|
|
|-
|HDMI Retimer 75DP159
|U8B2
|Retimer
|<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/SN75D</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-01
|-
|MOSFET N-Ch
|Q9D2
|12v Power Rail Mosfet N-Ch
|<nowiki>https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ</nowiki>?
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-02
|-
|Switching Voltage Regulators
|U9D2
|Gate Drivers VR12 MOSFET DRIVER
|<nowiki>https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP5</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-05
|-
|Step-Down Converter
|U4C2
|Step Down Converter 3v
|<nowiki>https://www.mouser.com/ProductDetail/Monolithic-Power-Systems</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N/A
|-
|Step-Down Converter
|U4C3
|Step Down Converter 5v
|<nowiki>https://www.mouser.com/ProductDetail/Monolithic-Power-Systems</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-06
|-
|Tactile Switch
|
|power board
|<nowiki>https://www.mouser.com/ProductDetail/Alps-Alpine/SKSGPCE010</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-07
|-
|ESD Filters
|EG7B5
|Filters / Chokes
|<u class="aaz"></u>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-03
|-
|HDMI ESD / Booster (HDMI2C4-5F2)
|U8B1
|ESD Protection/ Booster
|<nowiki>https://www.arrow.com/en/products/hdmi2c4-5f2/stmicroelectronic</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-04
|-
|
|
|
|
|
|
|-
|
|
|
|
|
|
|-
|
|
|
|
|
|
|-
|Xbox One X
|
|
|
|
|
|-
|HDMI Redriver TDP158
|
|Redriver
|<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TDP15</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOX-BC-01
|-
|PMIC NPC4205
|
|
|<nowiki>https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP4</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOX-BC-02
|-
|TPN8R903NL 4C50 RH38 Power MOSFET #1
|
|Power MOSFET
|<nowiki>https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ</nowiki>?
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOS-BC-02
|-
|TPN8R903NL 4C50 RH38 Power MOSFET #2
|
|Power MOSFET
|<nowiki>https://www.digikey.com/product-detail/en/toshiba-semiconductor-a</nowiki>
|N/A
|N/A
|-
|TPS51916RUKR (RAM Power IC) U9F1
|
|Memory Buck Controller
|<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPS51</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOX-BC-04
|-
|Controller Stick
|
|ALPS Multi-Directional Switches Stick Controller
|<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|M-XBOX-BC-05
|-
|AP2127 Regulator
|U39
|300mA HIGH SPEED, EXTREMELY LOW NOISE CMOS LDO REGULATOR
|N/A
|N/A
|N/A
|-
|Tactile Switches
|
|power board
|<nowiki>https://www.mouser.com/ProductDetail/Alps-Alpine/SKSGPCE010</nowiki>
|<nowiki>https://www.injuredgadgets.com/10-pack-of-xbox-one-s-tactile-switches-compact-high-force-smt-w-grounding/</nowiki>
|N/A
|-
|Front USB Board FPC on mainboard 2 dot version
|
|
|<nowiki>https://www.mouser.com/ProductDetail/Molex/51338-0274/?qs=pr</nowiki>
|N/A
|N/A
|-
|Front USB Board FPC on USB Board 2 dot version
|
|
|<nowiki>https://www.mouser.com/ProductDetail/?qs=RF4ygd%252Bc9Xp7</nowiki>
|N/A
|N/A
|-
|Front USB Board FPC on USB Board NON 2 dot version
|
|
|N/A any more
|N/A
|N/A
|-
|Front USB Board FPC on mainboard NON 2 dot version
|
|
|N/A anymore
|N/A
|N/A
|-
|EFI HDMI Filters
|
|
|<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/SP3012-04UTG</nowiki>?
|N/A
|
|-
|Switch
|
|
|
|
|
|-
|
|
|
|
|
|
|-
|P13USB Video/Power IC
|
|P13USB
|<nowiki>https://www.mouser.com/ProductDetail/Diodes-Incorporated/PI3U</nowiki>
|<nowiki>https://www.injuredgadgets.com/10-pack-oem-tactile-switches-compact-high-force-smt-w-grounding-for-microsoft-xbox-one-s-alps-alpine/</nowiki>
|M-XBOS-BC-07
|-
|Charging IC
|
|M92T36
|<nowiki>http://westingames.com/Charging-Power-Control-IC-Chip-M92T36-</nowiki>
|N/A
|N/A
|-
|Inductor Coil (big coil by BQ24193)
|
|Coil
|<nowiki>https://www.mouser.com/ProductDetail/TDK/SPM5015T-2R2M-LR</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-01
|-
|Main PMIC
|
|MAX77620A
|<nowiki>http://westingames.com/Power-Control-IC-MAX77620AEWJ-T-PMI</nowiki>
|N/A
|N/A
|-
|Battery Charging IC
|
|BQ24193
|<nowiki>https://www.mouser.co.uk/ProductDetail/Texas-Instruments/BQ24</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-02
|-
|Joy Con FPC Connector
|
|FPC
|<nowiki>https://www.mouser.com/ProductDetail/Molex/504754-1100?qs=%</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-03
|-
|LCD FPD
|
|LCD FPC
|<nowiki>https://www.mouser.com/ProductDetail/Molex/503300-5310?qs=s</nowiki>
|N/A
|N/A
|-
|Joy Conn Tilt Lever
|
|
|<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXY1000006?qs=</nowiki>
|N/A
|N/A
|-
|USBP13 EFI Chokes
|
|EFI Filters/Chokes to USB P13
|<nowiki>https://www.mouser.com/ProductDetail/TDK/MCZ1210DH900L2TA</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-04
|-
|Diode Array
|
|Diode Array
|<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E</nowiki>
|<nowiki>https://www.injuredgadgets.com/10-pack-of-xbox-one-s-esd-filters-nintendo-switch-diode-array/</nowiki>
|M-XBOS-BC-03
|-
|Battery Header
|
|Battery terminal
|<nowiki>https://www.mouser.com/ProductDetail/Molex/202654-2021?qs=Y</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-06
|-
|Battery FPC Mainboard side
|
|Battery FPC
|<nowiki>https://www.digikey.com/product-detail/en/molex/2026560021/WM1</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-07
|-
|USB-C Charing Port
|
|Charging Port
|<nowiki>https://www.mouser.com/ProductDetail/JAE-Electronics/DX07BN2</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-08
|-
|Charing Port Fuse
|
|Charing Port Fuse
|<nowiki>https://www.mouser.com/ProductDetail/Bourns/SF-0603F300-2?q</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-09
|-
|MAX77812 Regulator
|
|Buck Regulator
|<nowiki>https://www.mouser.com/ProductDetail/Maxim-Integrated/MAX7781</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|N-S-BC-10
|-
|MAX77621 Regulator
|
|Buck Regulator
|<nowiki>https://www.mouser.com/ProductDetail/Maxim-Integrated/MAX7762</nowiki>
|N/A
|N/A
|-
|Back Light Driver
|
|lighting driver
|<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPS61</nowiki>
|N/A
|N/A
|-
|
|
|
|<u class="aaz"></u>
|
|
|-
|Sony PS4
|
|
|
|
|
|-
|
|
|
|
|
|
|-
|DJ Diode
|
|Diode
|<nowiki>https://www.mouser.com/ProductDetail/ROHM-Semiconductor/CD</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|PS4-BC-01
|-
|HDMI Filter / Choke
|
|Common Filter
|<nowiki>https://www.mouser.com/ProductDetail/Murata/DLW21HN900SQ2</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|PS4-BC-02
|-
|Controller Stick
|
|ALPS Multi-Directional Switches Stick Controller
|<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=</nowiki>
|<nowiki>https://www.injuredgadgets.com/multi-directional-switches-stick-controller-for-microsoft-xbox-one-s-playstation-4-alps-alpine/</nowiki>
|M-XBOX-BC-05
|-
|F201 (and all other "F") fuses Slim PS4
|
|blue ray fuse
|<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/0435001KR?qs=</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|PS4-BC-03
|-
|F201 (and all other "F") fuses Phat PS4
|
|blue ray fuse
|<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/0467001NR?qs=</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|PS4-BC-04
|-
|1215 Power button switch tactile
|
|Tactile Switch
|<nowiki>https://www.mouser.com/ProductDetail/667-EVQP7J01P</nowiki>
|<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki>
|PS4-BC-05
|-
|Black external housing screw
|
|
|<nowiki>https://www.mcmaster.com/99397A347/?fbclid=IwAR1FUBdyvdrY</nowiki>
|N/A
|N/A
|-
|Silver internal course screw
|
|
|<nowiki>https://www.mcmaster.com/99397A415/?fbclid=IwAR1_G1zCJrW</nowiki>
|N/A
|N/A
|-
|PSU Common R1 Resistor
|
|0.16 OHM 5% 1/2W AXIAL
|<nowiki>https://www.digikey.com/en/products/detail/nte-electronics-inc/HW</nowiki>
|
|
|-
|
|
|
|
|
|
|-
|Sony PS5
|
|
|
|
|
|-
|
|
|
|
|N/A
|N/A
|-
|HDMI Port Cap 4k
|
|0.1 uf 0201 cap
|<nowiki>https://www.mouser.com/ProductDetail/81-GRT033C81A104KE1D?fbclid=IwAR0qZxr_YQBeJ-ZsCxkBSW-r81UwqXCgCD6qAclSsIBXcpZeV7cteNB9jmE</nowiki>
|<nowiki>https://www.injuredgadgets.com/10-pack-hdmi</nowiki>
|PS5-BC-01
|-
|PS5 PSU R9 Resistor
|R9
|0.1 ohm 5% axial 2watt
|<nowiki>https://www.mouser.com/ProductDetail/YAGEO/KNP2WSJR-73-0</nowiki>
|.
|
|-
|HDMI Port Diode (top side)
|
|
|
|
|
|-
|HDMI Port Diode (Bottom side)
|
|5.6v +-2% 60Ohms SOD-923
|<nowiki>https://www.digikey.com/en/products/detail/rohm-semiconductor/C</nowiki>
|
|
|-
|
|
|
|
|
|
|-
|
|
|
|
|
|
|-
|
|
|
|
|
|
|}
'''<big><u>OLDER VERSION OF THE LIST IS BELOW:</u></big>'''
{| class="wikitable"
|+
!Part
!
!Description
!Link
|-
|
====Xbox One S====
|
|
|
|-
|HDMI Retimer 75DP159
|U8B2
|HDMI Retimer
|https://www.mouser.com/ProductDetail/Texas-Instruments/SN75DP159RSBT?qs=UPLqB4C8V4Hq9AbZfbM4Cw%3D%3D&fbclid=IwAR2htvfsf0t4B1mmypO0df8kNwHZcd2PRbuY3aqqrKz3KWWkuaF-aUj_Vwc
|-
|4C50 RK31
|U9D2
|12v Power rail mosfet
|https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ?qs=VTTrqTQApGOROxlH0PlGJQ%3D%3D&fbclid=IwAR0gxYf8tMW6T7TjOfszuSAXqG9I3ZY4Rx-szMtFgnpTsxbXbAFixBj83Rk
|-
|ESD Filters
|EG7B5
|Filters / Chokes
|https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E1B06DRLR?qs=xahoIJ7Tb4DMFivl%252BjotBg==
|-
|HDMI ESD / Booster (HDMI2C4-5F2)
|U8B1
|ESD Protection / Booster
|https://www.mouser.com/ProductDetail/STMicroelectronics/HDMI2C4-5F2?qs=byeeYqUIh0P7T%252BjsOHHd0w%3D%3D&fbclid=IwAR1xRgHzR1vpYckCU7pQNesbVf_oahJ-RLQymYap0ImilZRZNfceVcS7GXI
|-
|Switching Voltage Regulators
|U4C2
|Buck Switch
|https://www.mouser.com/ProductDetail/Monolithic-Power-Systems-MPS/NB671GQ-P?qs=sGAEpiMZZMtitjHzVIkrqaRPw6xHLayDxMpUkqzVGdk%3D
|-
|Gate Drivers VR12 MOSFET DRIVER
|Q9D2
|Gate Drivers
|https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP5901BMNTBG?qs=sGAEpiMZZMvQcoNRkxSQksgNiZbxcEpwDzxmAJTgxO8=&fbclid=IwAR3c_nXQjHUKlfnc16XtidjOQ_LsmmXdZdwy62xfqikKRgL7JPcudXki-_k
|-
|
|
|
|
|-
|
====Xbox One X====
|
|
|
|-
|HDMI Redriver TDP158
|
|HDMI Redriver
|https://www.mouser.com/ProductDetail/Texas-Instruments/TDP158RSBT?qs=%2Fha2pyFaduhgkSwz6w3iSDlED30MISmMgLwYJ75XlVlqDM%252BNgGigRw%3D%3D
|-
|PMIC NPC4205
|
|
|https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP4205MNTXG?qs=%2Fha2pyFadugy3i4ggA%252BjGSC%252B8bkEAqOfp0ME0GkSNbfvuG1ZMOooTQ%3D%3D
|-
|TPN8R903NL 4C50 RH38 Power MOSFET #1
|
|Power MOSFET
|https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ?qs=VTTrqTQApGOROxlH0PlGJQ==&fbclid=IwAR0kU5kbYOoNFjdDfOsWqS72WvJuL0CMzFaTOxTGNr2gTUFj14rWp0jsXMI
|-
|TPN8R903NL 4C50 RH38 Power MOSFET #2
|
|Power MOSFET
|https://www.digikey.com/product-detail/en/toshiba-semiconductor-and-storage/TPN8R903NLLQ/TPN8R903NLLQCT-ND/4332064?fbclid=IwAR2uM2-heuP0pzjQhzDLKj-iM3SK4ci1KOaroGPbbEwFxMGQP0JjjtqIj2A
|-
|TPS51916RUKR (RAM Power IC) U9F1
|
|Memory Buck Controller
|https://www.mouser.com/ProductDetail/Texas-Instruments/TPS51916RUKR?qs=sGAEpiMZZMvFgFrcgbsedegbNJJqIt03XTLaRnUqW7c%3D
|-
|Controller Stick
|
|ALPS Multi-Directional Switches Stick Controller
|https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=RiQAlOPxzzAqLSX9lUzx8Q%3D%3D&gclid=CjwKCAiA0svwBRBhEiwAHqKjFj0nv5yn1V-HG0GdQZWNujkS_O0-yegQCIqFSx-JMwkX1lw5A-nSiBoCzC0QAvD_BwE&fbclid=IwAR2FA5EXxpOdBXXIHkcabG3rBsLeAYuTp1KDZ8FuSY8vswbXPgTXPz4rz20
|-
|
|
|
|
|-
|
====Nintendo Switch====
|
|
|
|-
|P13USB Video/Power IC
|
|P13USB
|https://www.mouser.com/ProductDetail/729-PI3USB30532ZLE
|-
|Charging IC
|
|M92T36
|http://westingames.com/Charging-Power-Control-IC-Chip-M92T36-for-Nintendo-Switch-Motherboard-Repiar-Pulled-WRNS004_6165.html
|-
|Inductor Coil (big coil by BQ24193)
|
|Coil
|https://www.mouser.com/ProductDetail/TDK/SPM5015T-2R2M-LR?qs=P8zzrVhehaumT6tHe%252Bhrrg%3D%3D&fbclid=IwAR036TCvRmDqcjVJnYgU-PjxiHzBDK_uYlt0sxBWr9Ktzmk9vzhs8sOTjjQ
|-
|Main PMIC
|
|MAX77620A
|https://www.mouser.com/ProductDetail/Texas-Instruments/BQ24193RGER?qs=sGAEpiMZZMsfD%252BbMpEGFJYr5eg%252BBkKxjJut%2FFZ1a%2Fww=
|-
|Battery Charging IC
|
|BQ24193
|http://westingames.com/Charging-IC-Chips-fix-Parts-Replacement-for-Nintendo-Swtich-WRNS060_6613.html
|-
|USB C Port
|
|Charging Port
|http://westingames.com/New-USB-Type-C-Charging-Port-Connector-Replacement-Parts-for-NS-switch-WRNS055_6520.html
|-
|Joy Con FPC Connector
|
|FPC
|https://www.mouser.com/ProductDetail/Molex/504754-1100?qs=%2Fha2pyFadugQOcm15B5fssfomnNBLYUeKhnk20w72T206gHQWxOsag%3D%3D
|-
|LCD FPC
|
|LCD FPC
|https://www.mouser.com/ProductDetail/Molex/503300-5310?qs=sGAEpiMZZMs7i6cT6ogu479E6b2huYQBA23P%252BoY%252Btzw%3D
|-
|Joy Conn Tilt Lever
|
|
|https://www.mouser.com/ProductDetail/ALPS/RKJXY1000006?qs=hqbSiJllDNOFMWW97UL5Cg%3D%3D&gclid=Cj0KCQjwka_1BRCPARIsAMlUmEqddMq5H6Wm09yzO_aw7XrFbLIIGHpXSXEnwgdBrQA8zM0SwEGYeP4aAgfbEALw_wcB
|-
|USBP13 EFI Chokes
|
|EFI Filters/Chokes to USB P13
|https://www.mouser.com/ProductDetail/TDK/MCZ1210DH900L2TA0G?qs=sGAEpiMZZMsVJzu5wKIZCVShTVMImr9kTvclzdYlXyI%3D&fbclid=IwAR3I75rohpoZg4rWCtLo9RQVieAf731xQQtuMwb5H_EvejUc_TGZsZS_SDY
|-
|Diode Array
|
|Diode Array
|https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E1B06DRLR?qs=xahoIJ7Tb4DMFivl%252BjotBg%3D%3D
|-
|Battery Header
|
|Battery terminal
|https://www.mouser.com/ProductDetail/Molex/202654-2021?qs=YCa%2FAAYMW016tP%2FGki43pg%3D%3D
|-
|Battery FPC Mainboard side
|
|Battery FPC
|https://www.digikey.com/product-detail/en/molex/2026560021/WM17360CT-ND/7964822
|-
|
|
|
|
|-
|
====Sony PS4====
|
|
|
|-
|DJ Diode
|
|Diode
|https://www.mouser.com/ProductDetail/ROHM-Semiconductor/CDZFHT2RA56B?qs=4v%252biZTmLVHHOFY%252btItqtsQ%3D%3D&fbclid=IwAR3F7BIl_0-ImX6X6DHL3Oq_KPdcI7Z9aWCwv0kkzdT3cVcHU4QgU4aoei0
|-
|HDMI Filter / Choke
|
|Common Filter
|https://www.mouser.com/ProductDetail/Murata/DLW21HN900SQ2L/?qs=%2Fha2pyFadui8s3g3KFJhq9ZYWgIGLIjtRdJxUPF5939fH%2Ff662Heow%3D%3D&fbclid=IwAR0T7fReHjsgI-Sqg8hoMmrgPtxCpq8rrW6qTJOOflj6nySnhbbe_OuPUC8
|-
|Controller Stick
|
|ALPS Multi-Directional Switches Stick Controller
|https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=RiQAlOPxzzAqLSX9lUzx8Q%3D%3D&gclid=CjwKCAiA0svwBRBhEiwAHqKjFj0nv5yn1V-HG0GdQZWNujkS_O0-yegQCIqFSx-JMwkX1lw5A-nSiBoCzC0QAvD_BwE&fbclid=IwAR2FA5EXxpOdBXXIHkcabG3rBsLeAYuTp1KDZ8FuSY8vswbXPgTXPz4rz20
|-
|F201 (and all other "F") fuses Slim PS4
|
|blue ray fuse
|https://www.mouser.com/ProductDetail/Littelfuse/0435001KR?qs=sGAEpiMZZMtxU2g%2F1juGqdRmCQF0%252BT4VhC6S9A%252BVYi8%3D
|-
|F201 (and all other "F") fuses Phat PS4
|
|blue ray fuse
|https://www.mouser.com/ProductDetail/Littelfuse/0467001NR?qs=sGAEpiMZZMtxU2g%2F1juGqdRmCQF0%252BT4V4vMwCjt2Wy4%3D
|-
|1215 Power button switch tactile
|
|Tactile Switch
|https://www.mouser.com/ProductDetail/667-EVQP7J01P
|}
2lkct6t64iufcqyqxup7ii57h97oo42
Google Pixel Diode Measurements
0
1411
3056
2020-10-06T15:50:29Z
Chrisb
1
Chrisb moved page [[Google Pixel Diode Measurements]] to [[Google Pixel Diode Mode Measurements]]
3056
wikitext
text/x-wiki
#REDIRECT [[Google Pixel Diode Mode Measurements]]
nb4xn8npgfvqp1rkbqiguxi2x0s90ol
Google Pixel Diode Mode Measurements
0
494
3055
1094
2020-10-06T15:50:29Z
Chrisb
1
Chrisb moved page [[Google Pixel Diode Measurements]] to [[Google Pixel Diode Mode Measurements]]
1094
wikitext
text/x-wiki
== Google Pixel 4 ==
Overall View:
[[File:Pixel 4 Overall View Final.jpg|alt=Pixel 4 Overall View Final|800x800px]]
Tele Camera:
[[File:Pixel 4 Tele Camera Edited.jpg|alt=Pixel 4 Tele Camera Edited|800x800px]]'
Flash/Mic:
[[File:Pixel 4 Flash Mic Edited.jpg|alt=Pixel 4 Flash Mic Edited|800x800px]]
Power and Volume Flex:
[[File:Pixel 4 Power Button Volume Edited.jpg|alt=Pixel 4 Power Button Volume Edited|800x800px]]
Prox Sensor:
[[File:Pixel 4 Proximity Sensor Edited.jpg|alt=Pixel 4 Proximity Sensor Edited|800x800px]]
Front Camera:
[[File:Pixel 4 Front Camera Edited.jpg|alt=Pixel 4 Front Camera Edited|1047x1047px]]
Top Speaker and Mic:
[[File:Pixel 4 Top SpeakerMic Edited.jpg|alt=Pixel 4 Top SpeakerMic Edited|800x800px]]
Face ID Sensor:
[[File:Pixel 4 Face ID Edited.jpg|alt=Pixel 4 Face ID Edited|800x800px]]
Right Squeeze Sensor:
[[File:Pixel 4 Right Squeeze Edited.jpg|alt=Pixel 4 Right Squeeze Edited|800x800px]]
Charging Port:
[[File:Pixel 4 Charging Port Edited.jpg|alt=Pixel 4 Charging Port Edited|800x800px]]
OLED:
[[File:Pixel 4 OLED Edited.jpg|alt=Pixel 4 OLED Edited|800x800px]]
Left Squeeze:
[[File:Pixel 4 Left Squeeze Edited.jpg|alt=Pixel 4 Left Squeeze Edited|800x800px]]
Battery:
[[File:Pixel 4 Battery Edited.jpg|alt=Pixel 4 Battery Edited|800x800px]]
Bottom Mic:
[[File:Pixel 4 Bottom MiC Edited.jpg|alt=Pixel 4 Bottom MiC Edited|800x800px]]
Wide Camera:
[[File:Pixel 4 Wide Camera Edited.jpg|alt=Pixel 4 Wide Camera Edited|800x800px]]
fe5993y75aldu5kxztk9c3n9qnv1wuq
Headphone Jack Repair
0
2129
6374
2022-01-25T01:40:47Z
Crumblenaut
317
Crumblenaut moved page [[Headphone Jack Repair]] to [[Audio Jack Repair and Plug Sense]]: Seems more descriptive and accurate to the content of the article.
6374
wikitext
text/x-wiki
#REDIRECT [[Audio Jack Repair and Plug Sense]]
rbdcfrjwhw7qzh4xbpstph3bad0bedg
Hot Air Soldering Tips
0
1912
6947
5644
2023-09-29T06:37:32Z
CBax
996
added archive link for popular dead link
6947
wikitext
text/x-wiki
''Below you'll find some semi-organized thoughts I ([[User:Crumblenaut|crumblenaut]]) shared with a member on The Rossmann Group's Discord who proceeded to suggest that I upload it to this wiki for the reference of others in the board repair community. As of March 2nd, 2021 these are exclusively my thoughts, techniques, and take-aways and do not represent a consensus amongst everyone in the community!''
<br />
===Introduction and Encouragement===
*Air soldering can be super intimidating when you're getting started because you'll almost always be working around a ton of tiny components.
*Don't worry, though - it's not rocket science and you'll pick it up quickly with a little practice.
*Everyone has different styles, and the technique you develop will have more to do with your results than what air soldering equipment you're using.
*All you need is one dead, donated logic board to practice on where you can make all of the mistakes you want without consequence and in doing so you'll become a pro in no time!
<br />
===Basic Settings for Heat Transfer - Temperature, Blower Speed, and Distance===
*I use my hot air gun at 425°C with the widest nozzle that came with my station, which has an interior diameter of ~11mm (~7/16").
*I always keep my gun's fan down to a value of 2-3 out of 10 in order to ensure that the airflow doesn't accidentally move any components that I don't want moving. The goal is to have enough fan speed to transfer the heat to the board, but not much more than that or else you'll risk blowing components around on (or straight-up OFF!) the board.
**Please note that setting your air gun's fan speed to its minimum can lead to it overheating dangerously! I had it pegged at its minimum once by accident and found that the entire exposed metal portion of the gun - the nozzle AND the chamber that houses the heating element - heated up to the point that the whole thing was glowing red! Scary!
*The distance of the air gun's outlet from the surface on which you're soldering will control the temperature more than anything else.
*Having a fume extractor doing its thing nearby (which you should have!) may also impact how heat is transferred to the surface. I keep my fume extractor's inlet at least ~4" (~100mm) from where I'm air soldering, and elevated from the plane of the board so that it catches flux fumes as they rise off the board without redirecting the air gun's output appreciably.
<br />
===Planning Ahead===
*Before beginning your work, be sure to have the right tools and supplies ready and that your space is free of clutter and arranged so that everything you need is immediately accessible! You'll generally want to decide on, prepare, and arrange:
**The tweezers / dental tools / scalpels you're going to want to use on the areas / components you'll be working with
**The soldering irons you may want heated up and ready to go ahead of time (with tips appropriate for the task at hand)
***I use the soldering iron attached to my station for heavier desoldering and working with larger components/pads and a have a separate smaller soldering iron with an even finer tip that I use for almost all of my actual microsoldering work. Both use bent tips, because they rule.
**Your spare solder, desoldering braid, cutters for used braid, isoproyl alcohol, and flux
**Your tip cleaner (I use a brass soldering iron tip cleaner in an enclosure with a sponge with a hole cut out of it surrounding the opening)
**Any components you're going to be replacing set in a place where they won't get knocked away, lost, or confused for the old parts
*You'll also want to look at the board and work out the spatial reasoning of your approach and exit strategy ahead of time.
**Remember, Louis says that MacBook logic boards aren't special and you don't always have to keep them in one orientation!
**I have found myself - far more often than what I should admit to - reaching around at a horrible angle to try to solder a component awkwardly, only to realize partway through the process that rotating the logic board itself 90° in one direction or the other turned what was a real physical challenge into something quite trivial.
**Be sure that the approach you're going to be taking isn't going to lead to you melting any plastic bits like the external ports or any fan/keyboard/battery connectors, both on the approach and the withdrawal.
***If exposing plastics to heat is unavoidable (like working near a battery connector on a MacBook Air board, for example), you can wrap those plastic components with a couple layers of aluminum foil with an excess "tail" of foil coming off of the area (if it's good enough approach for a [https://valkyrie.cdn.ifixit.com/media/2020/11/19115445/MBA_M1_2020_49_v1-scaled.jpg MacBook Air's M1 heatsink], it's good enough for our purposes).
*Finally, ALWAYS take photos of your board before you begin your work. You never know when it'll be helpful to tell a components orientation, or where damage was before cleaning, or which of the two SPI ROM chips you have in front of you was the original and which was from the donor board.
<br />
===Preheating and Thermodynamics===
*You'll always have better luck air soldering any individual components if the whole area around where you're air soldering has been pretty well heated. Since PCBs are coated in copper, the whole thing will act as a sink for any heat you apply. If this is unmitigated, it can lead to fragile solder joints and difficulty keeping the target components' solder in a reworkable liquid phase.
*If you don't have a board heater (or a dedicated toaster oven) to preheat boards, you can get the surrounding areas of the board to be warm by circling the air gun around the broader area from a distance of a few inches for a bit before focusing it on the target component itself.
**Proper industrial PCB preheating is generally given a range of ~95°C to ~150°C (~200°F to ~300°F), but even heating the PCB to the point that it's pretty warm to the touch but reasonable to handle with your bare hands (substantially UNDER the boiling point of 100°C / 212°F) will make a massive difference in the ease with which you can air solder and rework components as well as the impact of the thermal stress on the wellbeing of the board itself.
*Maintaining a gradual, spatially-distributed ΔT (change in temperature) is a good thing for chips, components, and their means of being attached to the board.
<br />
===Finally... AIR SOLDERING!===
*Either preheat your board separately or by circling around the area you'll be working with as described above.
*Next, apply AN APPROPRIATE AMOUNT OF FLUX to the components you're going to be working with. If you have a good fume extractor in operation, a little too much is generally better than having too little in place.
**Other than removal of components that you absolutely don't care about whatsoever and in areas that aren't especially populated, ALL AIR SOLDERING SHOULD BE DONE WITH FLUX IN PLACE. This will ensure that the solder doesn't misbehave, and that the components in question - both your target components and any components surrounding your target - form as-strong-or-stronger bonds with the board than what they had originally.
*Now, focus the heat from your air gun on the target components or areas using tighter circles.
**Holding the iron fully motionless CAN be okay and is sometimes necessary, but I've found that you'll often heat one side of the components or a smaller-than-useful area of your board, even with a wide nozzle.
**Moving the air gun in tight circles will add some chaos to the pattern of airflow, increasing the number of angles of approach the heat will take when striking the components in question and can help it get to places where it otherwise wouldn't get, like under chips.
***This does a lot to help avoid situations where one half of a chip or one lead of an inductor has phase changed to liquid while the other half/lead has stayed solid.
*Now while you're applying heat, watch the exposed leads of your component and eventually you'll see the solder phase change from solid to liquid. Give it a couple seconds past that point before you begin working with it.
**If you're targeting a component such as a BGA (ball grid array) chip that doesn't have solder that's visible from where you're at, then what I'll do is watch the solder of the components in the surrounding area - once they're uniformly in a shiny, liquid phase, then the BGA component may be ready for removal / rework.
*At this point, simple components - resistors, capacitors, inductors, diodes, etc. can be worked with directly.
*If you have enough flux in place that the component is basically "swimming" in it - which is oftentimes AN APPROPRIATE AMOUNT OF FLUX - then you can ''very gently and ever so slightly'' poke the BGA chip to be sure it's fully loose and floating on liquid solder balls before attempting to lift it off.
**DO NOT APPLY ANY REAL FORCE HERE! If it is ready to be removed, the only thing holding it in place will be the surface tension of the liquid solder. If it does not move with the slightest touch from your tweezers, some or all of its solder has not yet liquefied!
**Applying force to chips on a logic board is a GREAT way to damage the chip or lift pads off of the board, some of which may be literally impossible to replace.
**At this point the chip has been "reflowed" - any corrosion under the chip should (ideally) have been dissolved into the flux and any inappropriate under-chip bridges in the ball grid array should (again, ideally) have been eliminated.
***In the case of, say, a liquid exposed CD3215 USB-C controller chip, you may want to let the board cool and test it again before deciding to simply replace the chip. In my experience, the great majority of these chips are fine but have junk underneath them, and reflowing the chip more often than not restores its functionality.
*Finally, remember that if you ARE replacing components, it's always best practice to fully remove any solder left over on the board from old components using desoldering braid.
**After doing this, clean any flux left over on the board and apply fresh flux before retinning the pads with leaded solder.
**If you're going to be replacing a BGA chip with a replacement that comes pre-balled, it's best to air solder that to desoldered and cleaned pads rather than attempting to get a little bit of solder adhered to each pad ahead of time. The balls it comes with are enough for it to attach securely to effectively bare (only flat, minimally pre-tinned) pads.
*Once your components are all in place, you may want to be sure that they're fully flowed into place, meaning that the solder has wetted / wicked properly onto the pads of the board and the component. You can do this by simply giving it a few more seconds under direct, tight circles with the air gun.
*Finally, remove heat from the board semigradually by expanding the circles with your air gun for 5-10 seconds to be sure that the board's ΔT throughout its cooldown phase is also gradual and spatially-distributed.
*'''YOU DID IT!!!''' Now just let your board cool down, clean the flux off of it, and test it out!
===Additional Resources===
*[https://web.archive.org/web/20230719020715/https://workmanship.nasa.gov/lib/insp/2%20books/links/sections/601%20General%20Requirements.html NASA on Soldering Techniques, Ideal Outcomes, and Flaws] (archive)
*[http://www.zeph.com/pap1.html Zephyrtronics on Board Preheating]
<br />
bkqobxbh97nvohxnbtk1j8elpgkftp8
Hot Air Stations
0
1689
6523
5033
2022-05-31T08:32:05Z
Alex6337
28
6523
wikitext
text/x-wiki
== Minimum Requirements: ==
=== You need a hot air station with the following features: ===
* Air flow setup with at least 20L/min
* Temperature setup up to 500°C
* Several nozzle sizes adaptable to SMD and BGA
* Saved presets (optional)
* Auto cool-down (optional)
=== Recommended models: ===
* Cheap:
**Quick 861DW or 861DE
**Quick TR1100 (small hose: SMD only, not usable for BGA)
**Quick TR1300
**Atten ST862D
* Expensive:
**JBC JTSE
**JBC TESE (small hose: SMD only, not usable for BGA)
**Weller WTHA
**Hakko FR810-B
=== Worst case ===
Combined hot air stations are generally not a good idea. Most of the time, you prefer to have one tool for one purpose. Having it combined will lead you to more potential problems.
Uknown Chinese brands are generally to avoid. If you have experience, you could get away with a chinese Aoyue or any other brand. To start with, today, we advise you to avoid this.
Avoid at all cost stations that have a blower and heater inside the handle. You should have a blower inside the station and the heater in the handle. It's easy to spot: The cable/pipe is large enough to convey air flux (it's not just an electric wire but a flexible pipe).
=== Could do the job ===
Aoyue stations with a blower in the station could do the job. They are not wery reliable and precise. If you have the choice, avoid it.
=== Best choice ===
Quick and Atten that have the blower inside the station seems to be a good choice in general. Quick 861DW was the way to go for a few years. Atten ST862 is the new best choice in a cost/performance ratio.
If you have money, you can go for a JBC... It's just five times more expensive.
91xawe2a06lozaysp3og0w172w9qs5u
How To - learning new techniques
0
724
6534
6508
2022-06-25T15:00:04Z
Joesipaq
20
6534
wikitext
text/x-wiki
Hello all! So there have been a few times when someone knows what they want to do, but may be lacking the abilities or knowledge on how to do it.<br>
I thought it would be a good idea to create a new page for this - Mostly I have a feeling that there will be linking to some videos. If a picture is worth 1000 words, what is 30fps worth?<br><br>
==Warping stencil trick==
First up on the list is something I personally do when reballing larger BGA - This one is of an iPhone 7 CPU. If you get the techniques used here, SMC is NO PROBLEMO.<br><br>
<youtube>5eIkBwmvcaY?s=2953</youtube><br>
Check out at 49:15<br><br>
Direct Link to the time stamp [https://youtu.be/5eIkBwmvcaY?t=2953]<br><br>
The important things to note are - I am applying pressure in the centerish of the stencil. Not worried about the solder paste below the tweezers as it will flow. But this will stop your stencil from bowing/lifting in the center. I like to use 385c by 40 air on my Quick. Find a setting that works for you. This is what I like. It is not a rule or a solution.
==Dried up solder paste==
2nd up... Is your solder paste too dry or wet? Here is me being an foolish man, and refreshing my solder paste. It dried out to a clump and well, its what I had near by. Is your paste too dry or wet? This is what I do to thin out my paste some.<br><br>
<youtube>Wdi-uJmti68</youtube><br>
Check out at 1:02<br><br>
Direct Link to the time stamp [https://www.youtube.com/watch?v=Wdi-uJmti68&t=62s]<br><br>
If you want it to be thicker. I will drag it across my black mat a few times to let the flux stick to the mat, but take the balls with my scraper. I don't use paper towel or stuff like that.<br><br>
==SMC Reballing==
3rd up, is how I reball SMCs. The Quick and dirty way. This is the rest of that above video.<br><br>
<youtube>Wdi-uJmti68</youtube><br>
Check out at 12:03<br><br>
Direct Link to the time stamp[https://youtu.be/Wdi-uJmti68?t=723]
I adopted this method after reballing about 50 macbook air RAM ICs from some other experiments. As the key to everything - Practice makes better.<br><br>
Here is another more recent video I made about SMC reballing. A little cleaner.<br>
<youtube>https://youtu.be/Xnd59BsaPLI</youtube><br><br>
==JHL6540 Thunderbolt controller Reballing==
3.5th up. This was the first time using the MAC stencils. I like them, but have always fought with warping. For the end of the reballing, I ended up adding more flux so all the micro dry balls would join together in their appropriate spots before removing the stencil. Maybe with these, I need to preheat more, or not dry my paste as much.<br>
<youtube>https://youtu.be/oUGw-nnrIXk</youtube><br><br>
==iMac screen removal (2012 - 2020)==
4th up. Proper iMac screen removal practices. A huge pet-peeve I have is when I see an iMac screen cracked, the paint scratched from a razor blade or damage caused by heat - all due to another "professional" removing the screen. This is the right way to remove an iMac screen. Only addition that could be added is the "wedge" to hold the iMac angle and do this vertically. I like to do it laying down as in the video.<br><br>
<youtube>M5FkqR6j1eM&t</youtube><br>
You will receive iMacs that have the wrong adhesive on them... I am sorry. Your life just became complicated. We charge quite a bit extra if we receive one of these. There is a lot higher risk that the screen will break, and to clean the screen and housing for the proper adhesive can take hours if you are aiming to have a flawless job.<br>Just take it slow, if opening it feels like there is something catching, STOP and study what is going on with that screen. One I had the other week - had B7000 all around it. I used a discarded plastic (the cover for the sticky side) from the a used seal to slip in at the bottom edge and slowly sliced through the B7000 silicone to free it from the housing at the end.
===iMac screen seal installation (2012 - 2020)===
4.25th up. Here we are installing the seal around the screen before sitting down the new iMac screen. It is very basic - but I'm sure someone could use it.
<youtube>https://www.youtube.com/watch?v=SVziLtyVX0E</youtube><br><br>
===iMac screen installation alignment (2012 - 2020)===
4.5th up. Here we are installing and aligning an iMac screen to make sure our end result is BEAUTIFUL! We like to align the bottom first and then go from there, and this is how we do it. Maybe this will help you out in sitting your screens down.
<youtube>https://youtu.be/tHdV9f7BFGE</youtube><br><br>
==Butterfly Keyboard Cleaning - Advanced==
5th up. We have noticed recently an uptick in butterfly keyboards that are no longer eligible for the recall program. (https://support.apple.com/keyboard-service-program-for-mac-notebooks) We always recommend clients get it fixed for free at the local AASP, but soon this will not be possible. It seem, that it is time to learn how to repair them, one key at a time. This is the first in a series of the different types and keys, how to clean them.<br><br>
<youtube>https://www.youtube.com/watch?v=ih5xhSeas5Q</youtube><br>
You will break a few keys while learning. Please do '''NOT''' practice on clients keyboards. Always be ready to purchase a new top-case if needed and let your client know the risks and costs associated if you cant preform the repair.
===Butterfly Keyboard Cleaning - Double Keystroke and non reactive keys===
5.1th up... Recently we have been seeing more and more clients coming in with keyboard issues that apple will not take care of anymore. The common issue is a key either not working, having to press it really hard, or it reacting multiple times to one keystroke. We remove the keycap, peel back the plastic dimple layer, remove the metal button that makes the connection causing the key to be detected as presses. We clean up the conductive surfaces like we do on the trackpad click cleaning. We then replace the metal dome, glue down the plastic dimple layer and replace the keycap. It is a pretty quick process but has yielded us great results so far!<br><br>
<youtube>https://youtu.be/ZKbl86CnkNI</youtube><br>
As always, Please do not practice this on a clients device, use a dead keyboard you have around to make sure you can get the cuts right and preform the repair completly.
==Trackpad Click Cleaning==
6th up in the series of How To. Trackpad click cleaning. This will work for pretty much every track pad with a physical click. Macbook pro unibodies, Macbook Airs and probably other similar designs in general.<br> The main problem why these become "stiff" or you need to mash them down super hard is because there is some oxidation/dirt between the contact points. You will see in the title card of the video the golden ring and circle. To have a successful click, those 2 pads need to make contact. That is the job of the snap disk. If it has a layer of oxidation or dirt, then you need to try much harder to cause good contact between the layers.<br>
<youtube>https://youtu.be/D38mTRICL6I</youtube><br>
We have been doing it this way for a few years and have not seen a single one come back with any sort of click issue.
==MacBook Pro 16" keyboard replacement using old style screws==
<youtube>https://www.youtube.com/watch?v=2DKAaFBz9ow</youtube>
=== Reballing without hotair with IR mini Hot plate ===
<youtube>https://youtu.be/hpYOgsVDzWQ</youtube>
j6r6sm7645dnt6ozmhgqx9tuyk2w0lu
How to Identify Macs
0
867
6457
6456
2022-03-23T20:56:08Z
Orangera1n
640
/* DOES NOT have ThunderBolt */ never heard of an a1343
6457
wikitext
text/x-wiki
WIP
This guide focuses mainly on 2006 (Intel) to present Macs.
==External Visual References==
===Optical Drive===
====DOES have an optical drive.====
*MacBook 2006-2010 (A1181 and A1342)
*MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297)
*iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312)
*Mac Pro 2006-2012 (A1186 and A1289)
====DOES NOT have an optical drive.====
*MacBook 2015-2017 (A1534)
*MacBook Pro Retina 2012-2015 (A1425, A1398, and A1502
*MacBook Pro USB C (A1706, A1707, A1708, A1989, A1990, A2159, A2141, A2289, and A2251)
*MacBook Air 2008-current (A1237, A1304, A1369, A1370, A1465, A1466, A1932, and A2179)
*iMac 2012-Current (A1418, A1419, A2115, A2116)
*Mac Pro 2013 and 2019 (A1481, A1991)
{{Mbox
| text = Optical drives were discontinued in 2012 on all Macs. Apple continued to sell the 2012 A1278 for four years.
}}
===Display===
====NON Retina====
*MacBook 2006-2010 (A1181 and A1343)
*MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297)
*MacBook Air 2008-2017 (A1237, A1304, A1369, A1370, A1465, and A1466)
*iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312)
*iMac 2012-2017 (A1418 and 2012/2013 A1419)
====Retina====
*MacBook 2015-2017 (A1534)
*MacBook Pro Retina 2012-2015 (A1425, A1398, and A1502
*MacBook Pro USB C (A1706, A1707, A1708, A1989, A1990, A2159, A2141, A2289, and A2251)
*MacBook Air 2018-current (A1932 and A2179)
*iMac 2014-Current (A1418, A1419, A2115, A2116)
{{Mbox
| text = In 2012 Apple sold both Retina and non Retina MacBook Pros. The A1418 was sold as both Retina and non Retina for 2015 and 2017 .
}}
===ThunderBolt===
====DOES NOT have ThunderBolt====
*MacBook 2006-2010 (A1181 and A1342)
*MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297)
*MacBook Air 2008-2017 (A1237, A1304, A1369, A1370, A1465, and A1466)
*iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312)
*iMac 2012-2017 (A1418 and 2012/2013 A1419)
====DOES have ThunderBolt====
8tufnkqt0mp9m74uffxho4dez3waf1v
How to calibrate an aftermarket A1707 display
0
1710
5086
5085
2020-10-22T21:30:35Z
Alan.l
19
5086
wikitext
text/x-wiki
This video shows you how to calibrate an aftermarket A1707 display using a factory application called "steelLite"
It might work on other models if you have a correct bin file.
WARNING
<nowiki>*****************</nowiki>
Use the application at your own risk, we take no responsibility if it brick your display.
please make a backup before you flash it.
<youtube>UTHMZSzSlIU</youtube>
example:
[[File:factory calibrated colour.jpg|center|thumb|733x733px]]
after calibration on the same laptop.
[[File:calibration2.jpg|center|thumb|700x700px]]
<br />
[[Category:Mac]] [[Category:MacBook]]
d9ld48oie1rkbewmete8e4gz7rvq22n
IMac
0
1489
4628
4625
2020-10-11T05:31:50Z
Chrisb
1
4628
wikitext
text/x-wiki
{{DISPLAYTITLE:iMac}}
{{distinguish|eMac|iMac Pro}}
{{pp-move-indef}}
{{lowercase title}}
{{Infobox information appliance
| name = iMac
| logo = [[File:IMacLogo.svg|100px]]
| image = [[File:IMac vector.svg|250px]]
| caption = The front face of a unibody [[iMac (Intel-based)|Intel-based iMac]]
| developer = [[Apple Inc.]]
| manufacturer = Apple Inc.
| family = [[Macintosh]]
| os = {{flat list|
* [[Mac OS 8]]
* [[Mac OS 9]]
* [[macOS]] (Previously known as Mac OS X, OS X)
}}
| related = [[Mac Mini]], [[Mac Pro]], [[iMac Pro]]
| website = {{URL|https://www.apple.com/imac|Apple – iMac}}
| releasedate = {{plain list|
*'''[[PowerPC]]-based'''<hr />
* {{Start date and age|1998|8|15}} ([[iMac G3|G3]])
* {{Start date and age|2002|1|7}} ([[iMac G4|G4]])
* {{Start date and age|2004|8|31}} ([[iMac G5|G5]])
*'''[[iMac (Intel-based)|Intel-based]]'''<hr />
* {{Start date and age|2006|1|10}} (plastic)
* {{Start date and age|2007|8|7}} (aluminum)
* {{Start date and age|2009|10|20}} (unibody)
* {{Start date and age|2012|11|30}} (slim unibody)
* {{Start date and age|2014|10|16}} (slim unibody with Retina 5K display)
* {{Start date and age|2017|12|14}} (iMac Pro)
}}
}}
'''iMac''' is a family of [[All-in-One PC#All-in-one|all-in-one]] [[Macintosh]] [[desktop computer]]s designed and built by [[Apple Inc.]] It has been the primary part of Apple's consumer desktop offerings since its debut in August 1998, and has evolved through [[List of Macintosh models by case type|seven distinct forms]].<ref>{{cite web|last=Olivarez-Giles |first=Nathan |url=http://latimesblogs.latimes.com/technology/2011/05/apple-updates-imac-line-with-thunderbolt.html |title=Apple updates iMac line with quicker processors, graphics and Thunderbolt I/O |work=Los Angeles Times |date=May 3, 2011 |accessdate=April 29, 2012}}</ref>
In its original form, the [[iMac G3]] had a [[gumdrop]] or [[Oval#Egg shape|egg-shaped]] look, with a [[Cathode ray tube|CRT]] monitor, mainly enclosed by a colored, [[Transparency and translucency|translucent]] plastic case, which was refreshed early on with a sleeker design notable for its [[Optical drive#Loading mechanisms|slot-loaded optical drive]]. The second major revision, the [[iMac G4]], moved the design to a hemispherical base containing all the main components and an [[Liquid crystal display|LCD]] monitor on a freely moving arm attached to it. The third and fourth major revisions, the [[iMac G5]] and the [[iMac (Intel-based)|Intel iMac]] respectively, placed all the components immediately behind the display, creating a slim unified design that tilts only up and down on a simple metal base. The fifth major revision (mid-2007) shared the same form as the previous model, but was thinner and used [[anodized aluminum]] and a glass panel over the entire front. The sixth major revision (late 2012) uses a different display unit, omits the [[SuperDrive]], and uses different production techniques from the older unibody versions. This allows it to be thinner at the edge than older models, with an edge thickness of 5.9 mm (but the same maximum depth). It also includes a dual microphone setup and includes [[solid-state drive]] (SSD) or hard disk storage, or an Apple [[Fusion Drive]], a hybrid of solid-state and hard disk drives. This version of the iMac was announced in October 2012, with the {{convert|21.5|in|cm|adj=on}} version released in November and the {{convert|27|in|cm|adj=on}} version in December; these were refreshed in September 2013, with new [[Haswell (microarchitecture)|Haswell]] processors, faster graphics, faster and larger SSD options and [[IEEE 802.11ac|802.11ac]] Wi-Fi cards.<ref>{{cite web|title=Apple Updates iMac|url=https://www.apple.com/pr/library/2013/09/24Apple-Updates-iMac.html|publisher=Apple|accessdate=September 24, 2013}}</ref>
In October 2014, the seventh major revision of the {{convert|27|in|cm|adj=on}} iMac was announced, whose main feature is a "[[Retina Display|Retina]] [[5K_resolution|5K]]" display at a resolution of 5120 × 2880 pixels. The new model also includes a new processor, graphics chip, and IO, along with several new storage options.<ref>{{cite web|title=Apple Introduces 27-inch iMac with Retina 5K Display|url=https://www.apple.com/pr/library/2014/10/16Apple-Introduces-27-inch-iMac-with-Retina-5K-Display.html|publisher=Apple|accessdate=October 16, 2014}}</ref> The seventh major revision of the {{convert|21.5|in|cm|adj=on}} iMac was announced in October 2015. Its main feature is a "[[Retina Display|Retina]] [[4K_resolution|4K]]" display at a resolution of 4096 × 2304 pixels. It has the same new processor, graphics chip, and I/O as the 27-inch iMac, along with several new storage options.<ref>{{cite web|title=Apple adds retina display to new iMacs|url=https://www.usatoday.com/story/tech/personal/2015/10/13/apple-adds-retina-display-new-imac.html|publisher=Brett Molina|accessdate=October 13, 2015}}</ref>
On June 5, 2017, Apple announced a workstation-class version of the iMac, called the "iMac Pro". The iMac Pro shares the design and screen of the 5K iMac, but is colored in Space Gray rather than silver. It comes with Intel [[Xeon]] processors and standard SSD storage. Apple began shipping the iMac Pro in December 2017.<ref>Kastrenakes, Jacob (December 12, 2017). [https://www.theverge.com/circuitbreaker/2017/12/12/16766358/imac-pro-release-days-away-apple-phil-schiller "Apple’s iMac Pro will be available starting Thursday"]. ''[[The Verge]]''.</ref>
==History==
The announcement of iMac in 1998 was a source of controversy and anticipation among commentators, Mac fans, and detractors. Opinions were divided over Apple's drastic changes to the Macintosh hardware. At the time, Apple had suffered a series of setbacks as consumers increasingly opted for [[Wintel]] (Windows PCs) machines instead of Apple's [[Performa]] models. Many in the industry thought that "beleaguered" Apple would soon be forced to start selling computers with a custom interface built on top of one or more potential operating system bases, such as [[Taligent]], [[Solaris (operating system)|Solaris]], or [[Windows 98]].<ref>{{cite web|url=http://macspeedzone.com/archive/art/con/be.shtml|title=Apple Confidential: The Day They Almost Decided To Put Windows On The Mac Instead Of OS X!|quote=Hancock ordered her staff to consider Microsoft's Windows, Sun Microsystems' Solaris, and even the ill-fated Taligent, which Apple had handed off to partner IBM in December 1995. Hancock was partial to Unix-based Solaris, while COO Marco Landi preferred cutting a deal for Windows NT.}}</ref>
The designer behind iMac's case was [[Jonathan Ive]].<ref>Gladwell, Malcolm (November 14, 2011). [http://www.newyorker.com/reporting/2011/11/14/111114fa_fact_gladwell?currentPage=2 "The Tweaker: The real genius of Steve Jobs."] ''[[The New Yorker]]''. p. 2</ref>
Ken Segall was an employee at an L.A. ad agency handling Apple's account who came up with the name "iMac" and pitched it to Steve Jobs. After Jobs' death, Segall claimed Jobs preferred "MacMan" for the name of the computer, but after Segall pitched "iMac" to him twice, the name was accepted.<ref>{{cite web | url = http://www.bizjournals.com/kansascity/news/2012/06/04/man-behind-imac-name-simplicity.html | title = Man behind iMac name: Simplicity drives business growth | accessdate = March 30, 2013 | last = Hawley | first = Brenna | date = June 4, 2012 | work = Kansas City Business Journal}}</ref> Segall says that the "i" stands for "[[Internet]]",<ref name="Alyson Raletz">{{cite web | url = http://www.bizjournals.com/kansascity/blog/2012/06/man-who-came-up-with-imac-name-tells.html?page=all | title = Man who came up with iMac name tells what the ‘i’ stands for | accessdate = March 30, 2013 | last = Raletz | first = Alyson | date = June 7, 2012 | work = Kansas City Business Journal}}</ref> but also represents the product as a personal and revolutionary device ('i' for "individuality" and "innovation").<ref>{{cite web |url=https://www.youtube.com/watch?v=0BHPtoTctDY |title=The First iMac Introduction |publisher=YouTube |date=January 30, 2006 |accessdate=July 6, 2011}}</ref> Apple later [[Internet-related prefixes|adopted the 'i' prefix]] across its consumer hardware and software lines, such as [[iPod]], [[iBook]] (later MacBook), [[iPhone]], [[iPad]] and various pieces of software such as the [[iLife]] suite and [[iWork]] and the company's media player/store, [[iTunes]].
Attention was given to the [[out-of-box experience]]: the user needed to go through only two steps to set up and connect to the Internet. "There's no step 3!" was the catch-phrase in a popular iMac commercial narrated by actor [[Jeff Goldblum]].<ref>{{cite video|url=http://www.theapplecollection.com/Collection/AppleMovies/mov/3_steps.html|title=iMac Bondi 3 steps|people=[[Jeff Goldblum]]|publisher=[[Apple Inc.|Apple]]|medium=Internet|access-date=April 24, 2007|archive-url=https://web.archive.org/web/20061110184516/http://www.theapplecollection.com/Collection/AppleMovies/mov/3_steps.html|archive-date=November 10, 2006|url-status=dead}}</ref> Another commercial, dubbed "Simplicity Shootout", pitted seven-year-old Johann Thomas and his [[border collie]] Brodie, with an iMac, against Adam Taggart, a [[Stanford University]] [[MBA]] student, with an [[Hewlett-Packard|HP]] Pavilion 8250, in a race to set up their computers. Johann and Brodie finished in 8 minutes and 15 seconds,<ref>{{cite web|url=http://www.wap.org/journal/imac/default.html |title=iMac Review: It's a Mac |publisher=Washington Apple Pi |date=December 13, 1998 |accessdate=July 6, 2011}}</ref> whereas Adam was still working on it by the end of the commercial.
==Updates==
By 2005, it had become more and more apparent that IBM's development for the desktop implementation of PowerPC was grinding to a halt. Apple announced at the [[Worldwide Developers Conference]] that it would be [[Mac transition to Intel processors|switching the Macintosh to the x86 architecture]] and Intel's line of Core processors. The first Intel-equipped Macs were unveiled on January 10, 2006: the Intel iMac and the introductory MacBook Pro. Within nine months, Apple had smoothly transitioned the entire Macintosh line to Intel. One of the highly touted side benefits of this switch was the ability to run Windows on Mac hardware.[[File:Timeline of the product Apple iMac.svg|thumb|400px|The timeline of iMac from 1998 to 2015, comparing it with the original [[Macintosh 128K]] (1984). This chart shows the change of the physical characteristics and appearance of the product.]]
On July 27, 2010, Apple updated its line of iMacs to feature the new Intel Core "i-series" processors across the line. The 21.5" models now feature the [[Intel Core i3|Core i3]] processor, but these are upgradable to the Core i5. The high end 27" features a [[Intel Core i5|Quad-Core i5]] processor, which is upgradable to a [[Intel Core i7|Quad-Core i7]]. On this date Apple also announced its new "[[Apple Magic Trackpad]]" peripheral, a trackpad similar to that of MacBook Pro for use with iMac or any other Apple computer. Apple also introduced a AA NiMH battery charger intended to simplify the use of batteries in these peripherals. Apple offers an option to use a solid state drive instead of a large mechanical drive.
On May 3, 2011, Apple updated its iMac line with the introduction of Intel [[Thunderbolt (interface)|Thunderbolt]] technology and Intel Core [[Intel Core i5|i5]] and [[Intel Core i7|i7]] [[Sandy Bridge]] processors as well as a 1 mega pixel [[high definition video|high definition]] [[iSight|FaceTime]] camera, features which were first introduced in the [[MacBook Pro]] line in February 2011.<ref>{{cite web|url=https://www.apple.com/pr/library/2011/05/03imac.html |title=Apple Announces New iMac With Next Generation Quad-Core Processors, Graphics & Thunderbolt I/O Technology |publisher=Apple |date=May 3, 2011 |accessdate=July 6, 2011}}</ref>
On October 23, 2012, a new iMac was announced (for a November/December release) with a substantially thinner edge, new Apple [[Fusion Drive]], faster processors (Intel Core [[Intel Core i5|i5]] and [[Intel Core i7|i7]] [[Ivy Bridge (microarchitecture)|Ivy Bridge]]) and graphics along with updates to the ports, but with the same overall depth (stand depth: 8 inches (20.3 cm)). To reduce the edge, the [[SuperDrive]] was removed on these iMacs.
On October 16, 2014, a new version of the 27-inch (69 cm) iMac was announced, whose main feature is a "[[Retina Display|Retina 5K]]" display at a resolution of 5120 × 2880 pixels.<ref name="Retina5KPixels">{{cite web|title=Apple - iMac with Retina 5K display - Features|url=https://www.apple.com/imac-with-retina/features/|publisher=Apple Inc |accessdate=24 February 2015}}</ref> The new model also includes a new [[Haswell (microarchitecture)|processor]], [[AMD Radeon Rx 200 Series|graphics chip]], and [[Input/output|I/O]], along with several new [[Computer data storage|storage]] options. This computer was designed with professional photographers and video editors in mind, with the 5K resolution allowing 4K video to be played at its native resolution in Final Cut Pro, with room for toolbars on the side.
On June 6, 2017, Apple’s 21.5-inch iMac, which has a "Retina 4K" display at a resolution of 4096 × 2304 pixels, and the latest Intel 7th generation i5 processor, was announced. The iMac has Turbo Boost up to 3.6GHz supported, and 1 TB hard drive. Apple’s iMac with 4K display has Intel Core i5 quad-core processor with 3GHz or 3.4GHz clock speed. The RAM on board is 8GB, and it will support Turbo boost of up to 3.8GHz. This iMac has options of 1TB hard drive or 1TB Fusion Drive. This 21.5-inch iMac also has the option of Radeon Pro 555 with 2GB of video RAM for graphics or a Radeon Pro 560 with 4GB of video RAM. Apple’s 27-inch iMac with the 5K display comes with the quad-core Intel Core i5 processor, which is clocked at 3.4GHz, 3.5GHz, or 3.8GHz. This iMac supports Turbo boost of up to 4.2Ghz and comes with 8GB RAM option.<ref>{{Cite news|url=http://indianexpress.com/article/technology/gadgets/apple-new-macbook-pro-macbook-imac-2017-price-in-india-now-out-specs-features-4692592/|title=Apple new MacBook Pro, MacBook, iMac Price in India now out|date=2017-06-07|work=The Indian Express|access-date=2017-11-28|language=en-US}}</ref>
In March of 2019, Apple updated the iMac to feature 9th-generation Intel Core i9 processors and Radeon Vega graphics. Unlike most other Apple releases, Apple opted not to announce the iMac at an event, rather to update the specs and release a press statement. For the first time, the iMac can support 6-core or 8-core Intel processors. Apple claims the 21.5-inch model is up to 60% faster than the previous model, and the 27-inch is up to 2.4 times faster. The exterior of the machine remained the same as the previous model.
On August 4, 2020 Apple refreshed the iMac models. The smaller 21.5 inch model was updated with SSDs standard. The 27 inch model received 10th generation Intel chips, a T2 Security chip, a 1080p camera, studio-quality microphone, an option for nano-textured glass, as well as SSDs standard. The new 27 inch SSDs are now soldered to the motherboard, which means the storage is no longer replaceable, and in order to replace a hard drive the entire motherboard must be replaced and any data on the drive will be wiped.<ref>{{Cite web|date=2020-08-05|title=iMac 27 "2020: SSDs arrive soldered|url=https://www.world-today-news.com/imac-27-2020-ssds-arrive-soldered/|access-date=2020-09-09|website=World Today News|language=en-US}}</ref>
==Influence==
The [[iMac G3|original iMac]] was the first [[legacy-free PC]].<ref>{{cite web|title=Compaq Hopes to Follow the iMac|url=http://www.zdnet.com/news/compaq-hopes-to-follow-the-imac/104658|first=John G.|last=Spooner|date=December 16, 1999|work=[[ZDNet]]}}</ref> It was the first Macintosh computer to have a [[USB]] port but no [[floppy disk drive]]. Subsequently, all Macs have included USB. Via the USB port, hardware makers could make products compatible with both x86 PCs and Macs. Previously, Macintosh users had to seek out certain hardware, such as keyboards and mice specifically tailored for the "old world" Mac's unique [[Apple Desktop Bus|ADB]] interface and printers and modems with [[Mini-DIN connector#8-pin|MiniDIN-8]] serial ports. Only a limited number of models from certain manufacturers were made with these interfaces, and often came at a premium price. USB, being cross-platform, has allowed Macintosh users to select from a large selection of devices marketed for the [[Wintel]] PC platform, such as [[USB hub|hubs]], [[image scanner|scanners]], [[data storage device|storage devices]], [[USB flash drives]], and [[Mouse (computing)|mice]]. After the iMac, Apple continued to remove older peripheral interfaces and floppy drives from the rest of its product line.
Borrowing from the 1997 [[Twentieth Anniversary Macintosh]], the various LCD-based iMac designs continued the all-in-one concept first envisioned in Apple's original Macintosh computer. The successful iMac allowed Apple to continue targeting the [[Power Macintosh]] line at the high-end of the market. This foreshadowed a similar strategy in the notebook market when the iMac-like [[iBook]] was released in 1999. Since then, the company has continued this strategy of differentiating the consumer versus professional product lines. Apple's focus on design has allowed each of its subsequent products to create a distinctive identity. Apple avoided using the beige colors then pervading the PC industry. The company would later drift from the multicolored designs of the late 1990s and early 2000s. The latter part of the decade saw Apple using [[Anodizing|anodized]] aluminum; glass; and white, black, and clear [[polycarbonate]] plastics among their build materials. Today many PCs are more design-conscious than before the iMac's introduction, with multi-shaded design schemes being common, and some desktops and laptops available in colorful, decorative patterns.<ref>{{cite web |url=http://www.macworld.com/article/135017/2008/08/imacanniversary.html |title=Eight ways the iMac changed computing |accessdate=August 27, 2008 |work=[[Macworld]] |date=August 15, 2008 }}</ref>
Apple's use of translucent, candy-colored plastics inspired similar [[industrial design]]s in other consumer products.<ref>{{cite web|url=https://www.wired.com/2008/09/gallery-imac-anniversary/ |title=10 Years of Cuddly, Friendly iMacs |work=Wired |first=Benj |last=Edwards |date=September 15, 2008}}</ref> Apple's later introduction of the iPod, iBook G3 (Dual USB), and iMac G4 (all featuring snowy-white plastic), inspired similar designs in other companies' consumer electronics products. The color rollout also featured two distinctive ads: one called 'Life Savers' featured the [[Rolling Stones]] song, "[[She's a Rainbow]]" and an advertisement for the white version had the introduction of [[Cream (band)|Cream]]'s "[[White Room]]" as its backing track{{Citation needed|date=October 2017}}.
==Reception==
iMac has received considerable critical acclaim, including praise from technology columnist [[Walt Mossberg]] as the "Gold Standard of desktop computing";<ref>{{cite web
|url=http://solution.allthingsd.com/20051130/gold-standard-for-pcs/
|title=A New Gold Standard for PCs
|author=Walt Mossberg
|authorlink=Walter Mossberg
|date=November 30, 2005
|accessdate=June 29, 2007
|publisher=All Things Digital
}}</ref> [[Forbes|''Forbes'' magazine]] described the original candy-colored line of iMac computers as being an "industry-altering success".<ref>{{cite web
|url=https://www.forbes.com/2000/04/14/feat.html
|title=Resurgence Of An American Icon
|author=Jon Swartz
|date=April 14, 2000
|accessdate=November 24, 2006
|work=Forbes
}}</ref> The first 24" [[Core 2 Duo]] iMac received [[CNET]]'s "Must-have desktop" in their 2006 ''Top 10 Holiday Gift Picks''.<ref>{{cite video |url=http://www.cnettv.com/9710-1_53-24930.html
|title=Must-have desktop: Apple iMac Core 2 Duo (24-inch, 2.16 GHz)
|medium=Internet
|work=CNET
|date=November 22, 2006
|people=Rich DeMuro
}}</ref>
Apple faced a class-action lawsuit filed in 2008 for allegedly deceiving the public by promising millions of colors from the LCD screens of all Mac models while its 20-inch model only held 262,144 colors.<ref>[http://www.appleinsider.com/articles/08/03/31/apple_hit_with_another_millions_of_colors_lawsuit.html Apple sued over 20 inch iMac marketing being incorrect and using a less efficient screen type.] Apple insider, March 31, 2008</ref> This issue arose due to the use of 6-bit per pixel [[Liquid crystal display#Twisted nematic (TN)|Twisted nematic LCD]] screens. The case was dismissed on January 21, 2009.<ref>{{cite court|url=http://www.leagle.com/xmlResult.aspx?page=1&xmldoc=20091650672cjfsupp2d978_11563.xml |litigants=Sanders v. Apple Inc. |date=January 21, 2009 |court=[[United States District Court for the Northern District of California|N.D. Cal.]] |vol=672 |reporter=F.Supp.2d |opinion=978}}</ref>
While not a criticism of iMac ''per se'', the integrated design has some inherent tradeoffs that have garnered criticism. In ''The Mythical Midrange Mac Minitower'', Dan Frakes of ''Macworld'' suggests that with iMac occupying the midrange of Apple's product line, Apple has little to offer consumers who want some ability to expand or upgrade their computers, but do not need (or cannot afford) the [[Mac Pro]].<ref>{{cite web|last=Frakes |first=Dan |url=http://www.macworld.com/article/58562/2007/06/midrangemac.html |title=The Mythical Midrange Mac Minitower |work=Macworld |accessdate=July 6, 2011}}</ref> For example, iMac's integration of monitor and computer, while convenient, commits the owner to replace both at the same time. For a time before the [[Mac mini]]'s introduction, there were rumors of a "headless iMac"<ref>{{cite web|last=Bangeman |first=Eric |url=https://arstechnica.com/old/content/2004/12/4488.ars |title=Apple supposedly prepping cheap "headless iMac" |publisher=ARStechnica |date=December 29, 2004 |accessdate=July 6, 2011}}</ref> but the G4 Mac mini as introduced had lower performance compared to the iMac, which at the time featured a G5 processor.<ref>{{cite web|url=https://www.macworld.com/article/1042363/macminireview.html |title=Mac mini: Perfect Bookshelf Box for Mac Minimalists |first=Jennifer |last=Berger |work=[[Macworld]] |date=January 26, 2005}}</ref> Some third party suppliers such as [[Other World Computing]] provide upgrade kits that include specialized tools for working on iMacs.
Similarly, though the graphics chipset in some Intel models is on a removable [[Mobile PCI Express Module|MXM]], neither Apple nor third parties have offered retail iMac [[Graphics processing unit|GPU]] upgrades, with the exception of those for the original iMac G3's "mezzanine" PCI slot. Models after iMac G5 (excluding the August 7, 2007 iMac update) made it difficult for the end-user to replace the hard disk or optical drive, and Apple's warranty explicitly forbids upgrading the socketed CPU. While conceding the possibility of a mini-tower cannibalizing sales from the Mac Pro, Frakes argues there is enough frustration with iMac's limitations to make such a proposition worthwhile. This disparity has become more pronounced after the G4 era since the bottom-end Power Mac G5 (with one brief exception) and Mac Pro models have all been priced in the US$1999–2499 range, while base model Power Macs G4s and earlier were US$1299–1799. The current generation iMac has Intel 5th generation i5 and i7 processors, ranging from quad-core 2.7 GHz i5 to a quad-core 3.4 GHz i7 processor,<ref>{{cite web|url=https://www.apple.com/imac/specs/ |title=iMac Technical Specifications |date=December 10, 2012}}</ref> however it is possible to upgrade the 2010 edition of the iMac quite easily.<ref>{{cite web|url=http://www.ifixit.com/Guide/Upgrade+iMac+Intel+Core+i3+CPU+to+Core+i7/8670/1 |title=Upgrade iMac Intel Core i3 CPU to Core i7 |first=Stephen |last=Rawlins |work=EnglandGreen |date=April 15, 2012}}</ref>
==Supported operating systems==
===Supported macOS releases===
{| class="wikitable mw-collapsible style=" style="font-size: 90%;"
! colspan="32" style="text-align:center;" |Supported macOS releases
|-
! rowspan="3" |OS release
! colspan="13" |PowerPC-based
! colspan="18" |Intel-based
|-
! colspan="2" |G3 (tray loading,
1st generation)
! colspan="4" |G3 (slot loading,
2nd generation)
! colspan="4" |G4
(3rd generation)
! colspan="3" |G5
(4th generation)
! colspan="3" |Polycarbonate
(5th generation)
! colspan="3" |Aluminum
(6th generation)
! colspan="3" |Aluminum Unibody
(7th generation)
! colspan="3" |Slim Aluminum Unibody
(8th generation)
! colspan="6" |Retina
(9th generation)
|-
!Mid 1998
!Early 1999
!Late 1999
!Mid 2000
!Early 2001
!Mid 2001
!Early 2002 15"
!Mid 2002 17"
!Early 2003
!Late 2003
!Late 2004
!Mid 2005
!Late 2005
!Early 2006
!Mid 2006
!Late 2006
!Mid 2007
!Early 2008
!Early 2009
!Late 2009
!Mid 2010
!Mid 2011
!Late 2012
!Late 2013
!Mid 2014
!Late 2014
!Mid 2015
!Late 2015*
!Mid 2017*
!Early 2019
!Mid 2020
|-
![[Mac OS 8]]
|{{Ya|text=8.1}}
|{{Ya|text=8.5.1}}
|{{Ya|text=8.6}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS 9]]
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=9.0.4}}
|{{Ya|text=9.1}}
|{{Ya|text=9.1}}
|{{Ya|text=9.2.2}}
|{{Ya|text=9.2.2}}
|{{Operational|Emulation only}}
|{{Operational|Emulation only}}
|{{Operational|Emulation only}}
|{{Operational|Emulation only}}
|{{Operational|Emulation only}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X 10.0|10.0 Cheetah]]
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.0.4}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X 10.1|10.1 Puma]]
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.1.2}}
|{{Ya|text=10.1.5}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Jaguar|10.2 Jaguar]]
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.2.3}}
|{{Ya|text=10.2.6 (15" and 17")}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Panther|10.3 Panther]]
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.3.1 (20")}}
|{{Ya|text=10.3.5}}
|{{free|unofficial}}
|{{free|unofficial}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Tiger|10.4 Tiger]]
|{{partial|patch}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.4.2}}
|{{Ya|text=10.4.4}}
|{{Ya|text=10.4.7}}
|{{Ya|text=10.4.7}}
|{{Ya|text=10.4.10}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Leopard|10.5 Leopard]]
|{{free|With G4 processor upgrade}}
|{{free|With G4 processor upgrade}}
|{{free|With G4 processor upgrade}}
|{{free|With G4 processor upgrade}}
|{{free|With G4 processor upgrade}}
|{{free|With G4 processor upgrade}}
|{{partial|patch}}
|{{partial|patch}}
|{{nonfree|17" only, 15" requires patch}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.5.2}}
|{{Ya|text=10.5.6}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Snow Leopard|10.6 Snow Leopard]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{nonfree|patch, beta only}}
|{{Ya|text=With 1 GB RAM}}
|{{Ya|text=With 1 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.6.3}}
|{{Ya|text=10.6.6}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[Mac OS X Lion|10.7 Lion]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[OS X Mountain Lion|10.8 Mountain Lion]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.8.1}}
|{{Ya|text=10.8.4}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[OS X Mavericks|10.9 Mavericks]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.9.3}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[OS X Yosemite|10.10 Yosemite]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.10.3}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|-
![[OS X El Capitan|10.11 El Capitan]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{free|Intel processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya|text=With 2 GB RAM}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{na}}
|{{na}}
|{{na}}
|-
![[MacOS Sierra|10.12 Sierra]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{partial|patch}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.12.5}}
|{{na}}
|{{na}}
|-
![[MacOS High Sierra|10.13 High Sierra]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{partial|patch}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{na}}
|{{na}}
|-
![[MacOS Mojave|10.14 Mojave]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{partial|patch}}
|{{partial|patch}}
|{{partial|patch, 27-inch model with no graphics acceleration}}
|{{partial|patch, no graphics acceleration}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya|text=10.14.3}}
|{{na}}
|-
![[MacOS Catalina|10.15 Catalina]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{partial|patch, requires processor upgrade}}
|{{partial|patch}}
|{{partial|patch}}
|{{partial|patch}}
|{{partial|patch, 27-inch model with no graphics acceleration}}
|{{partial|patch, no graphics acceleration}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{na}}
|-
![[MacOS Big Sur|11.0 Big Sur]]
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{na}}
|{{partial|patch, requires processor upgrade, no Wi-Fi or graphics acceleration}}
|{{partial|patch, no Wi-Fi or graphics acceleration}}
|{{partial|patch, no Wi-Fi or graphics acceleration}}
|{{partial|patch, only Core 2 Duo model supported, no Wi-Fi or graphics acceleration}}
|{{na|text=Crashes in AppleACPICPU.kext during boot; patch does not work}}
|{{partial|patch, no Wi-Fi or graphics acceleration}}
|{{partial|patch, no Wi-Fi}}
|{{partial|patch}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|}
*Includes 21.5" non-Retina models released in the same date (Late 2015 and Mid 2017)
===Supported Windows versions (Intel iMacs only)===
{| class="wikitable mw-collapsible style=" style="font-size: 90%;" width: 100%;"
|-
! colspan="19" style="text-align:center;" |Supported Windows versions
|-
! rowspan="2" style="width:12em;" |OS release
! colspan="3" |First generation
! colspan="3" |Second generation
! colspan="3" |Third generation
! colspan="3" |Fourth generation
! colspan="6" |Fifth generation
|-
! colspan="1" |Early 2006
! colspan="1" |Mid 2006
! colspan="1" |Late 2006
! colspan="1" |Mid 2007
! colspan="1" |Early 2008
! colspan="1" |Early 2009
! colspan="1" |Late 2009
! colspan="1" |Mid 2010
! colspan="1" |Mid 2011
! colspan="1" |Late 2012
! colspan="1" |Late 2013
! colspan="1" |Mid 2014
! colspan="1" |Late 2014
! colspan="1" |Mid 2015
! colspan="1" |Late 2015
! colspan="1" |Mid 2017
! colspan="1" |Early 2019
! colspan="1" |Mid 2020
|-
![[Windows XP|Windows XP<br>32-bit]]{{r|group=Note|XP}}<ref name="XP-8">{{cite web |url=https://support.apple.com/en-us/HT204048 |title=System requirements to install Windows on your Mac via Boot Camp |date=March 10, 2015 |access-date=August 21, 2020 |archive-url=https://web.archive.org/web/20150312172800/https://support.apple.com/en-us/HT204048 |archive-date=March 12, 2015}}</ref><ref>{{cite magazine|url=http://www.computerworld.com/s/article/9218794/OS_X_Lion_requires_Windows_7_for_Boot_Camp|title=OS X Lion requires Windows 7 for Boot Camp|last=Keizer|first=Gregg|magazine=[[Computerworld]]|accessdate=August 2, 2011|date=August 2, 2011}}</ref>
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{partial}}{{r|group=Note|XP}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows Vista|Windows Vista<br>32-bit]]{{r|group=Note|Vista}}<ref name="XP-8" /><ref>{{cite magazine|url=http://www.computerworld.com/s/article/9218794/OS_X_Lion_requires_Windows_7_for_Boot_Camp|title=OS X Lion requires Windows 7 for Boot Camp|last=Keizer|first=Gregg|magazine=[[Computerworld]]|accessdate=August 2, 2011|date=August 2, 2011}}</ref>
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{partial}}{{r|group=Note|Vista}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows Vista|Windows Vista<br>64-bit]]{{r|group=Note|Vista}}<ref name="XP-8" />
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{partial}}{{r|group=Note|Vista}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows 7|Windows 7<br>32-bit]]{{r|group=Note|Win732-bit}}<ref name="XP-8" /><ref>{{cite web|url=https://www.nextofwindows.com/apple-released-boot-camp-with-windows-10-support|title=Apple Released Boot Camp 6.1 with Windows 10 Support|last=Hu|first=Jonathan|website=nextofwindows|date=August 12, 2015|access-date=August 21, 2020}}</ref>
|{{Na}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
|-
![[Windows 7|Windows 7<br>64-bit]]{{r|group=Note|Win764-bit}}<ref name="XP-8" /><ref name="7 and later">{{cite web|url=https://support.apple.com/en-us/HT204048|title=System requirements to install Windows using Boot Camp for macOS|website=Apple Support|date=December 6, 2018|access-date=August 21, 2020}}</ref>
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows 8]]<br>{{r|group=Note|8.0}}{{r|group=Note|Win8+}}<ref name="XP-8" />
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{partial}}{{r|group=Note|m10}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows 8.1]]<br>{{r|group=Note|8.1}}{{r|group=Note|Win8+}}<ref>{{cite web |url=https://support.apple.com/en-us/HT201457 |title=Use Windows 8.1 on your Mac with Boot Camp|date=September 24, 2018 |website=Apple Support |access-date=August 21, 2020}}</ref><ref name="7 and later" />
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{partial}}{{r|group=Note|m10}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Na}}
|{{Na}}
|{{Na}}
|-
![[Windows 10]]<br>{{r|group=Note|Win10}}{{r|group=Note|Win8+}}<ref>{{cite web |url=https://support.apple.com/en-us/HT201468 |title=Install Windows 10 on your Mac with Boot Camp Assistant|date=June 16, 2020 |website=Apple Support |access-date=August 21, 2020}}</ref><ref name="7 and later" />
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Na}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|{{Ya}}
|-
|}
{{Reflist|group=Note|refs=
<ref name=XP>Windows XP can only be installed on Macs built up until late 2009 with [[Boot Camp (software)|Boot Camp]] 3 or earlier, excluding the late 2009 high-end 27-inch model. This includes Mac OS X 10.6 or earlier and copies of Mac OS X 10.7 that have not been updated to Boot Camp 4.
</ref>
<ref name=Vista>Windows Vista can only be installed on Macs built up until late 2009 with Boot Camp 3 or earlier, excluding the late 2009 high-end 27-inch model. This includes Mac OS X 10.6 or earlier and copies of Mac OS X 10.7 that have not been updated to Boot Camp 4.
</ref>
<ref name=Win732-bit>The 32-bit version of Windows 7 can only be installed on Macs with Boot Camp 3.1 to 6.0. This includes OS X 10.11 and earlier.
</ref>
<ref name=Win764-bit>The 64-bit version of Windows 7 can only be installed on Macs with Boot Camp 3.1 or later, running macOS High Sierra or earlier. Later versions of macOS no longer support Windows 7.
</ref>
<ref name=8.0>Windows 8 can only be installed on Macs with Boot Camp 5.0 to 6.0. This includes OS X 10.11 and earlier.
</ref>
<ref name=Win8+>Only 64-bit versions of Windows are supported for Windows 8 and later.
</ref>
<ref name=m10>Only the 27-inch model of the Mid-2010 iMac supports Windows 8 and 8.1. The 21.5-inch model is not supported.
</ref>
<ref name=8.1>Windows 8.1 can only be installed on Macs with Boot Camp 5.1 or later, running macOS High Sierra or earlier. Later versions of macOS no longer support Windows 8.1.
</ref>
<ref name=Win10>Windows 10 can only be installed on Macs with Boot Camp 6.0 or later. It is the only supported version of Windows on macOS Mojave and later.
</ref>
}}
{{Timeline of iMac models|headerextension=}}
:''For more detailed timelines,<!-- or, "specification tables"? --> see the articles for each individual generation.''
{| class="wikitable"
|-
! rowspan="2" |[[Generation]]
| style="background:#ffd9d9; width:13%;" |'''[[iMac G3]]'''
| style="background:#ffdea6; width:13%;" |'''[[iMac G4]]'''
| style="background:#ffde73; width:13%;" |'''[[iMac G5]]'''
| style="background:#80ffcc; width:13%;" |'''[[iMac (Intel-based)#1st generation: Polycarbonate iMac|iMac (Intel plastic)]]'''
| style="background:#33ffcc; width:13%;" |'''[[iMac (Intel-based)#2nd generation: Aluminum iMac|iMac (aluminum)]]'''
| style="background:#32ff80; width:13%;" |'''[[iMac (Intel-based)#3rd generation: Unibody iMac|iMac (aluminum unibody)]]'''
| style="background:#c7ff59; width:13%;" |'''[[IMac (Intel-based)#4th generation: Slim unibody iMac|iMac (slim aluminum unibody)]]'''
| style="background:#e6f2b3; width:13%;" |'''[[iMac (Intel-based)#5th generation: Retina iMac|iMac (w/ Retina display)]]'''
|-
|[[File:Indigo_iMac_G3_slot_loading.jpg|120px|Slot loading iMac G3.]]
|[[File:IMac_G4_sunflower7.png|120px|iMac G4 Sunflower.]]
|[[File:IMac_G5_Rev._A_front.jpg|120px|iMac G5 Rev A.]]
|[[File:Imac17pouces.png|120px|Polycarbonate iMac.]]
|[[File:IMac_20inch_Aluminum.jpeg|120px|Aluminium iMac.]]
|[[File:Imac_16-9.png|120px|Unibody iMac.]]
|[[File:IMac_Late_2012_Edge.jpg|120px|Slim edge unibody iMac.]]
|[[File:IMac_Late_2012_Edge.jpg|120px|Retina 4K & 5K iMac.]]
|-
![[Display device|Display]]
|15″ (13.8″ viewable) [[Cathode ray tube|CRT]]||15″, 17″, or 20″ [[LCD]]||17″ or 20″ LCD||17″, 20″, or 24″ LCD||20″ or 24″ LCD||21.5" or 27" [[LED-backlit LCD display|LED-LCD]]||21.5" or 27" [[LED-backlit LCD display|LED-LCD]]||21.5" or 27" [[LED-backlit LCD display|LED-LCD]]
|-
![[Central processing unit|Processor]]
|[[PowerPC G3]]
|[[PowerPC G4]]
|[[PowerPC G5]]
|[[Intel Core|Intel Core Duo]]/[[Intel Core 2|Intel Core 2 Duo]]
|[[Intel Core 2|Intel Core 2 Duo]]
|[[Intel Core 2|Intel Core 2 Duo]]/[[Intel Core i3|i3]]/[[Intel Core i5|i5]]/[[Intel Core i7|i7]]
|[[Intel Core i5]]/[[Intel Core i7|i7]]
|[[Intel Core i3]]/[[List of Intel Core i5 microprocessors|i5]]/[[Intel Core i7|i7]]/[[Intel Core i9|i9]]
|-
!Included [[Hard drive|HDD]]
|4 GB to 60 GB<ref>{{cite web| url=http://apple-history.com/compare/imac/imac_summer2001 |title=iMac G3}}</ref>||40 GB to 160 GB||40 GB to 500 GB||80 GB to 750 GB||250 GB to 1 TB||500 GB to 2 TB or 256 GB [[Solid-state drive|SSD]]||1 TB to 3 TB HDD, 1 TB to 3 TB Fusion Drive or 256 GB to 1 TB flash storage||1 TB to 3 TB HDD, 1 TB to 3 TB Fusion Drive or 256 GB to 2 TB flash storage
|-
!Included [[Mac OS]] version<ref>{{cite web|url=http://support.apple.com/kb/HT1159 |title=Mac OS X versions (builds) included with Intel-based Macs |publisher=[[Apple Inc.|Apple]] |date=April 21, 2010 |accessdate=May 16, 2010}}</ref>
|[[Mac OS 8.1|8.1]], [[Mac OS 8#Mac OS 8.5|8.5]], [[Mac OS 8.6|8.6]], [[Mac OS 9|9.0]], 9.1, [[Mac OS X v10.0|10.0]]||9.2, [[Mac OS X v10.1|10.1]], [[Mac OS X v10.2|10.2]], [[Mac OS X Panther|10.3]]||[[Mac OS X Panther|10.3]], [[Mac OS X Tiger|10.4]]||[[Mac OS X Tiger|10.4]]||[[Mac OS X Tiger|10.4]], [[Mac OS X Leopard|10.5]], [[Mac OS X Snow Leopard|10.6]]||[[Mac OS X Snow Leopard|10.6]], [[Mac OS X Lion|10.7]], [[OS X Mountain Lion|10.8]]||[[OS X Mountain Lion|10.8]], [[OS X Mavericks|10.9]], [[OS X Yosemite|10.10]], [[OS X El Capitan|10.11]], [[MacOS Sierra|10.12]], [[MacOS High Sierra|10.13]], [[MacOS Mojave|10.14]], [[MacOS Catalina|10.15]]||[[OS X Yosemite|10.10]], [[OS X El Capitan|10.11]], [[MacOS Sierra|10.12]], [[MacOS High Sierra|10.13]], [[MacOS Mojave|10.14]], [[MacOS Catalina|10.15]]
|-
!Release date
|August 15, 1998||January 7, 2002||August 31, 2004||January 10, 2006||August 7, 2007||October 20, 2009||November 30, 2012 (21.5")/ January 2013<ref>{{Cite web|title=New 27-inch iMac orders won't ship until January | Macworld|publisher=[[Macworld]]|url=http://www.macworld.com/article/2019014/new-27-inch-imac-orders-wont-ship-until-january.html|accessdate=January 15, 2013}}</ref> (27")||October 13, 2015 (21.5") / October 16, 2014 (27")
|-
!Discontinued
|March 2003||July 2004||March 2006||August 2007||October 2009||October 2012||October 13, 2015 (27")||N/A
|}
==References==
{{Reflist|colwidth=30em}}
==External links==
{{Commons category|IMac|lcfirst=yes}}
*{{Official website|www.apple.com/imac|iMac}} – official site
*[http://support.apple.com/specs/imac/ Apple – Support – Specifications]
*[https://web.archive.org/web/20080510123414/http://docs.info.apple.com/article.html?artnum=301724 Apple – Support – How to identify your iMac]
*[https://developer.apple.com/documentation/Hardware/hardware2.html Apple Developer Connection – Comprehensive technical details] ([https://developer.apple.com/documentation/HardwareDrivers/AppleHardware-date.html Latest developer notes])
*([https://www.360technoworld.com/2019/12/Apple-imac-review.html Apple IMac review with full specification (features)])
{{Apple hardware since 1998}}
{{Apple hardware}}
{{Apple}}
{{Use mdy dates|date=October 2013}}
{{DEFAULTSORT:Imac}}
[[Category:IMac family| ]]
[[Category:Macintosh all-in-ones]]
[[Category:PowerPC Macintosh computers]]
[[Category:Sealed computers]]
[[Category:X86 Macintosh computers]]
[[Category:Computer-related introductions in 1998]]
<references />
llx7glma6o0jt5vmncl9jswjxrqjv5w
IMac 27" 2011 Late HDD Thermal Sensor mystery and fun facts
0
1910
5630
2021-03-03T00:49:33Z
Crumblenaut
317
Crumblenaut moved page [[IMac 27" 2011 Late HDD Thermal Sensor mystery and fun facts]] to [[iMac HDD Thermal Sensor Bypass]]: All 2010-2011 iMacs have thermal sensors that need bypassing for proper fan control, not just the 27in 2011 models.
5630
wikitext
text/x-wiki
#REDIRECT [[iMac HDD Thermal Sensor Bypass]]
nuvrr9bpbmvbtlja3823gao75rzqobc
ISL6258/9
0
752
1690
1596
2020-09-13T12:58:42Z
Chrisb
1
Changed redirect target from [[ISL6258 ISL6259]] to [[ISL6258 ISL6259 Troubleshooting]]
1690
wikitext
text/x-wiki
#REDIRECT [[ISL6258 ISL6259 Troubleshooting]]
cd75vzup0ci38sfro94r4xbz68ynlfx
ISL6258 ISL6259
0
759
1621
2020-09-07T15:06:20Z
Chrisb
1
Chrisb moved page [[ISL6258 ISL6259]] to [[ISL6258 ISL6259 Troubleshooting]]
1621
wikitext
text/x-wiki
#REDIRECT [[ISL6258 ISL6259 Troubleshooting]]
cd75vzup0ci38sfro94r4xbz68ynlfx
ISL6258 ISL6259 Troubleshooting
0
6
7083
6526
2024-04-15T16:33:04Z
Francis
4
/* Critical and somehow easy to miss "plugged in, not charging" checkpoints: */
7083
wikitext
text/x-wiki
[[ACIN]] pin on the charger IC detects if the input voltage is high enough, it is connected to a voltage divider on the DC-in voltage. As indicated on the schematics, the pin should be at least at 3.25V, the exact voltage will depends on the machine (the value of the resistors are similar but not the same across different machine) and the Magsafe version and power. That said, it should always be at least 3.4V, and if using a 85W Magsafe, at least 3.9V.
If it's lower than 3.25V you get 0V on [[PPBUS-G3H]].
The value on ACIN is calculated like this (like your usual voltage divider):
Vin the input voltage (DC-in voltage here)
Vo the output voltage (ACIN pin here)
R1 the resistor between the input voltage and output voltage.
R2 the resistor between the output voltage and ground.
Vo = Vin * R2 / (R1 + R2)
[[DCIN]] pin on the charger IC is its input voltage. If the charger IC dies, it can take out the resistor between DC-in and this pin. The voltage on this pin should be almost the same as DC-in voltage.
If it's missing you get 0V on PPBUS_G3H
[[CELL]] pin on the charger IC sets the initial output voltage on [[PPBUS-G3H]]. CELL is named as such because it is related to the number of cells in series in the battery.
With a charging voltage of 4.2V for each cell, a 2-cells battery requires an overall charging voltage of 8.4V, a 3-cells battery requires an overall charging voltage of 12.6V. That's why PPBUS_G3H is around 8.4V (or a little more but doesn't matter) on Macbook Air and 12.6V on Macbook Pro, since it's the voltage that will charge the battery.
The voltage on CELL sets the number of cells like this on ISL6259:
{| class="wikitable"
!Connected to…!!Nb of cells!!Output voltage
|-
|Floating||1 cell||4.1V
|-
|Pulled to ground||2 cells||8.2V-8.6V
|-
|Pulled to PP3V42_G3H||3 cells||12.2-12.6V
|}
On Macbook Air, this pin is pulled to ground for the 2 cells battery.
On Macbook Pro, this pin is pulled to [[PP3V42-G3H]] for the 3 cells battery. The exception is the A1297 17-inch 2009/2010 which runs on a 2 cell battery.
The ISL6258 does not have the CELL pin. The ISL6258 has default settings for 2-cell systems and ISL6258A has default settings for 3-cell systems.
Note: The definitive output voltage (8.4V/8.6V/12.6V) is set by SMC, initial voltage is a few percents lower (8.2V/12.2V). This is to prevent the battery from being charged with a too high voltage before the SMC has had a chance to interrogate the battery for the correct voltage.
[[VDD]]/VDDP
The VDD pin is an internal 5V LDO, meaning the charger IC creates that rail. VDDP is connected to it through a resistor.
If VDD is missing but DCIN is present, the charger IC is most likely dead. Both pins should have 5V on them if the charger IC receives power.
[[ACOK]]
Indicates that the DC-in voltage is ok. Connected to SMC_BC_ACOK.
I don't exactly know the requirements, but most likely if DCIN, ACIN and VDD are ok then this should come up, and most likely turn on the DC-in MOSFETs at the same time.
[[AMON]]
Output from AC current sensing.
A 1V drop across the current sense resistor would set this pin to 20V (impossible but it gives the ratio)
The current sense resistor is usually 0.02ohm, using Ohm's law:
I = U/R = 1/0.02 = 50 A
So, 50A across the current sense resistor would set this pin to 20V.
You'd expect the current to be lower than 4.6A, so that means a 0.092V voltage drop across the current sense resistor, so 1.84V on the AMON pin.
This can be useful to know if you have an ID0R sensor issue you cannot figure out.
[[BMON]]
Output from battery current sensing.
A 1V drop across the current sense resistor would set this pin to 36V (impossible but it gives the ratio)
The current sense resistor is usually 0.01ohm or 0.005ohm, using Ohm's law with 0.01ohm:
I = U/R = 1/0.01 = 100 A
So, 100A across the current sense resistor would set this pin to 36V.
You'd expect the current to be lower than 7A (I don't know the threshold for ASD but that'd be already 70W with 10V on the battery), so that means a 0.07V voltage drop across the current sense resistor, so 2.52V on the AMON pin.
Note that while running on battery this should be strictly below 0 since the battery provides current to the system (although I never measured it…).
While running on AC with the battery charging, it should be strictly above 0 since the charger provides current to the battery.
This can be useful to know if you have an IB0R sensor issue you cannot figure out.
[[SMB: SCL SDA]]
These pins form the I2C bus that the SMC uses to talk to the ISL. For safety reasons the ISL wants to be talked to on this bus.
If the adapter is present and if the ISL does not receive a write to the MaxSystemVoltage or ChargeCurrent register within 3 minutes, the ISL will terminate charging by turning the BGATE FET off.
=== Critical and somehow easy to miss "plugged in, not charging" checkpoints: ===
# R7100 (on 820-00165) 0 Ohm resistor. Line CHRGR_RST_L must be bridged with SMC_RESET_L. If it is lower than 2V you will have a perfectly good green/orange light, autopowerup, good PPBUS and it will work both from battery and charger but wont charge the battery at all.
# 2009 and older boards use ISL6258, 2010 and later boards use ISL6259. They are not compatible. When putting ISL6259 in place of ISL6258, PPBUS_G3H without battery will be 8.2V instead of 12.6V on MacBook Pro and battery won't charge, even though everything else will be working properly. When unsure, check part number in charging circuit diagram. Do not rely on the part number in the block diagram or SMBUS diagram, it can be wrong, and often is.
[[Category:Mac]]
[[Category:MacBook]]
729x0wiqr25agp84xaw2o8mirkaphv2
Identifying Original Parts
0
765
1950
1641
2020-09-28T17:26:58Z
Joesipaq
20
1950
wikitext
text/x-wiki
Ok, so time to address another elephant in the room. Have you been sold "Original" parts? Well here is where we can point out how to easily spot if you are getting ripped off.
==iPhone screens==
===iPhone XS===
This is an original iPhone XS screen. I don't have any copy or refurb screens to compare at the moment. Look for differences in the frame and flex cables.<br>[[File:Original XS screen.jpg|alt=iPhone XS Original Screen|400x400px]]
==iPad Digitizers==
===iPad Air===
This is what an Original iPad Air screen looks like and some important parts to focus on when ordering.<br>
[[File:iPad Air Homebutton.jpg|alt=iPad Air Homebutton|400x400px]][[File:iPad Air Flex Cables.jpg|alt=iPad Air Flex Cables|400x400px]][[File:iPad Air digi Alignment.jpg|alt=iPad Air digi Alignment|400x400px]][[File:iPad Air silk screening.jpg|alt=iPad Air silk screening|400x400px]]
hb81ffp7u47nf7cgxlfmch7dtmitrbj
Internet Recovery
0
1430
5014
3161
2020-10-13T16:11:25Z
QuiveryNut
206
Added some more information and some formatting
5014
wikitext
text/x-wiki
This covers the start up mode using the '''Option + Command + R''' or the '''Shift + Option + Command + R''' keys.
Note: Internet Recovery Mode takes longer to boot - this is normal.
Note: It is advised to be wired to Ethernet for this mode.
Note: Internet Recovery '''''only''''' works if the Macbook has OS X 10.12.4 or later installed due to a BootROM update
Things you can do in Internet Recovery Mode:
*Restore from Time Machine back up
*Reinstall macOS
*Go to Apple Support help online
*Use Disk Utility to partition, repair, erase, format drives
*Add or remove an EFI password (must know password if removing)
*Troubleshoot network connection
*Open Terminal from Recovery Partition (reset user password, disable/enable SIP, change date, etc.)
*Select a different startup disk
*See the Installer Log
== Internet Recovery (installs latest compatible macOS) ==
Key Combination: '''Option + Command + R'''
Supported on devices from Mid 2012 and newer (as well as some older models with firmware updates, information [https://support.apple.com/en-us/HT202313 here]).
This will install the latest compatible macOS version on the device.
== Internet Recovery (installs original macOS version) ==
Key Combination: '''Shift + Option + Command + R'''
Supported on devices from Mid 2012 and newer (as well as some older models with firmware updates, information [https://support.apple.com/en-us/HT202313 here]).
This will install the version of macOS that came on the device from the factory (or the closest version still supported)
If you cannot startup in Recovery Mode by using this startup combination, the current version of macOS may be too old, the internet connection may be faulty/insufficient, or the keyboard may be faulty. Try a wired keyboard, built-in Recovery, a different startup disk, or bootable installer.
c8h2cns5c464dmu89b7slyoj2rcjbdn
LCD Screen Compatibility
0
495
1097
2020-04-23T17:21:30Z
Chrisb
1
Chrisb moved page [[LCD Screen Compatibility]] to [[MacBook LCD Screen Compatibility]]
1097
wikitext
text/x-wiki
#REDIRECT [[MacBook LCD Screen Compatibility]]
dn90i743yqffztf868sifg0qecsggvc
LCD Troubleshooting
0
3
1589
555
2020-08-28T21:12:36Z
Chrisb
1
1589
wikitext
text/x-wiki
5V coming on for a couple of seconds then going back down means screen is not recognized. Can be various things but first you must eclude a bad LCD/LCD cable. 2013/14 and 2015 are not compatible. 13" to 15"… dunno, sometimes it can work.
If there is backlight, LCD should be recognized, so more likely to be a damaged connector or filter inductor on an eDP line for example.
[[Category:Mac]] [[Category:MacBook]]
[[Category:Troubleshooting Guide]]
sl87rkzhe7a37nfrmlvf440aeq2luve
LP8550 Slope Configuration
0
757
6448
6447
2022-02-28T11:35:48Z
Alex6337
28
Corrected a code block mistake.
6448
wikitext
text/x-wiki
===Background:===
Macbook air LP8550 backlight IC uses custom slope to adjust brightness smoothly. If you solder on LP8550 from mouser or random ebay seller, you will have default ladder-style brightness adjustment which does not look nice especially when it goes from 10% to 100% due to ambient light change. Turns out this is a simple parameter which could be flashed directly from Linux.
===Python 3 Script:===
[https://gist.github.com/piernov/c2891eebf328491ff7cad20ddab7077b GitHub]
==Video Tutorial:==
<youtube>Q5Em-WplHR4</youtube>
All credits to @Piernov
==Don't like video tutorials ? Here is the step-by-step with pictures:==
#Boot from a Ubuntu (Live USB works well) and connect to Internet (for updates):
#*Details on creating an Ubuntu live USB for Mac are here: https://ubuntu.com/tutorials/create-a-usb-stick-on-macos#1-overview
#Enable Universal Repository:
#*Search and launch « Software & Update » in Ubuntu [[File:Find and launch Software & Updates in Ubuntu.jpg|none|thumb|Find and launch Software & Updates in Ubuntu]]
#*Check the "Community-maintained free and open-source software (universe)" box [[File:Community-Universe.jpg|none|thumb|Check the "Community-maintained free and open-source software (universe)" box]]
#*Close and « Reload » [[File:reload.jpg|alt=Click "Close" then click "Reload"|none|thumb|Click "Close" then click "Reload"]]
#Launch Terminal:
#*Install Python 3 by typing the commande below<syntaxhighlight lang="bash">
sudo apt install python3-smbus
</syntaxhighlight>[[File:sudo apt install python3.jpg|alt=Install Python 3 by typing this command|none|thumb|Install Python 3 by typing this command]]
#Open Web browser and go to <nowiki>https://gist.github.com/piernov</nowiki>[[File:Piernov's github.jpg|alt=Find set_lp8550_slope.py on Piernov's github in a web browser|none|thumb|Find set_lp8550_slope.py on Piernov's github in a web browser]]
#Open ''set_lp8550_slope.py,'' click on « raw » and save it on your desktop. (Ideally, your home folder)[[File:raw-button.jpg|alt=Click on "Raw"|none|thumb|Click on "Raw"]][[File:Save in "home".jpg|alt=Save the .py file in "home" folder|none|thumb|Save the .py file in "home" folder|link=File:Save_in_%22home%22.jpg]]
#Back to terminal, type « sudo python3 set_lp8550_slope.py »[[File:python script.jpg|alt=Launch the python script|none|thumb|Launch the python script]]<syntaxhighlight lang="bash">
sudo python3 set_lp8550_slope.py
</syntaxhighlight>
#You're done...
ppbcfm0i86sy84tgges56fmmew20ccy
Latest MacOS Version by Mac, MacBook, iMac, Mac mini, Mac Pro
0
2120
6785
6784
2023-03-16T22:21:49Z
AMK9000
627
Implemented previous change to the other tables
6785
wikitext
text/x-wiki
Here is a list of the latest OS that Different Mac’s can take:
{| class="wikitable"
! colspan="7" |'''MacBook Pro'''
|-
|'''MacBook Pro Model:'''
|13” M2009<br />15” M2007 - M2009<br />17” M2007 - E2009
|13” M2010 - L2011<br />15” M2010 - L2011<br />17” M2010 - L2011
|13” M2012<br />15” M2012<br />13” Retina L2012 - E2013<br />15” Retina M2012 - E2013
|13” Retina L2013 - M2014<br />15” Retina L2013 - M2014
|15” M2015 - L2016<br />13” E2015 - L2016
|15" M2017+<br />13" M2017+
|-
|'''Latest OS'''
|El Capitan (10.11)
|High Sierra (10.13)
|Catalina (10.15)
|Big Sur (11.0)
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
{| class="wikitable"
! colspan="7" |'''MacBook Air'''
|-
|'''MacBook Air Model:'''
|L2008- M2009
|L2010 - M2011
|M2012
|M2013 - E2014
|E2015 - M2017
|L2018+
|-
|'''Latest OS'''
|El Capitan (10.9)
|High Sierra (10.13)
|Catalina (10.15)
|Big Sur (11.0)
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
{| class="wikitable"
! colspan="6" |'''MacBook'''
|-
|'''MacBook Model:'''
|13” Aluminum L2008<br />13” 2009 (A1181)
|13” L2009 - M2010 (A1342)
|12” E2015
|12” E2016
|12" M2017+
|-
|'''Latest OS'''
|El Capitan (10.11)
|High Sierra (10.13)
|Big Sur (11.0)
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
{| class="wikitable"
! colspan="5" |Mac Pro
|-
|'''Mac Pro Model:'''
|E2008 - E2009
|M2010 - M2012 (server)
|L2013
|L2019+
|-
|'''Latest OS'''
|El Capitan (10.11)
|High Sierra (10.13)
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
{| class="wikitable"
! colspan="6" |Mac mini
|-
|'''Mac mini Model:'''
|E2009
|M2010 - M2011
|L2012
|L2014
|L2018+
|-
|'''Latest OS'''
|El Capitan (10.11)
|High Sierra (10.13)
|Catalina (10.15)
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
{| class="wikitable"
! colspan="7" |iMac
|-
|'''iMac Model:'''
|20” M2007 - M2009<br />24” M2007 - E2009
|21.5” L2009 - L2011<br />27” L2009 - M2011
|21.5” L2012 - L2013<br />27” L2012 - L2013
|21.5” M2014<br />27” Retina 5K L2014 - M2015
|21.5” L2015 <br />27” L2015
|21.5" M2017+<br />27" M2017+<br />24" E2021+
|-
|'''Latest OS'''
|El Capitan (10.11)
|High Sierra (10.13)
|Catalina (10.15)
|Big Sur (11.0
|Monterey (12.0)
|Ventura (13.0)
|}
<br />
4i4uu984xsxp2mxqk0otxd67i21hbss
List of Contributors
0
696
7027
6861
2023-11-30T11:20:01Z
Alex6337
28
Updated my (Alex6337) website URL to fixeurs.fr
7027
wikitext
text/x-wiki
Dusten
Martin
Chris from [https://www.facebook.com/shinycomputers Shiny Computers]
Jesse
Wes
The Great Piernov from '''THE INTERNET'''
Inwerp
Satyricon
Xorxfon from [https://www.facebook.com/shinycomputers Shiny Computers]
EstebanM
Matty from [https://www.facebook.com/shinycomputers Shiny Computers]
Pranas
Joesipaq
Francis
Pedro147 from [https://www.facebook.com/Pedroo147]
ToniaK from [https://www.facebook.com/shinycomputers Shiny Computers]
Thingalong
Alan.l
Steve
Farsidetech
Onebitetechnology
Captainmac
Universal Solution
Alex6337 from https://www.fixeurs.fr (in french)
Vidax40
KevinShort
Carlos
Nico
Radfordra
MaxTorque
PRT Group
Samsscreenrepair
Crumblenaut (Eddie) from [https://www.1201.com 1201 Computer Repair]
iwioh2nergxrr8oircwjdj4i7w7zpwf
Login Items
0
1861
5475
2021-01-13T20:10:36Z
PaladinJax
199
Added page for login items during malware clean ups.
5475
wikitext
text/x-wiki
While cleaning malware in a MacBook's system here is a list of login items to avoid deleting:
* Native Instrument software (Common names are NIHostIntegrationAgent, NTKDaemon, NIHardwareAgent)
* Universal Audio software (Common names are UA Mixer Engine, UAD Meter Launcher)
apczlkzzriuh7a9by5zd6f19yep2pk9
Lost user account after OS update
0
148
556
441
2020-02-02T11:29:33Z
Piernov
10
Category Mac
556
wikitext
text/x-wiki
== '''Recover lost user after update.''' ==
Sometime we found that user account suddenly disappears without a trace from the system leaving only "Other accounts" option available, but the user folder is still present from external OS / Single user mode.
One way is to recover the user account is to re-create the user by forcing MacOS to re-do the setup process.
To do this, boot up to Single user mode (cmd + s)
* mount -uw /
* ls -l /Users ''(take a note of the user account name and who the permission belongs to (staff:501 or staff:user)''
* rm /var/db/.AppleSetupDone
* exit ''(will continue to load the OS)'' / Reboot ''(will reboot the system)''
Now you should be greeted with the Apple Welcome screen, and be able to setup the user.
Follow trough the setup, and re-create the user account.
If all goes well, you get the everything back just as it was.
This process by default only works if the UID of the user was 501. If the lost user's UID is different, you may loose permission to the User's home folder, so you will have to edit it from the advanced user settings to match it (Check the UID from terminal by typing ls -l /Users)
[[Category:Mac]]
h42jx75q4dcq9i6dw6iwa32hijvlza8
M1 MacBooks
0
2063
7739
7132
2025-01-28T16:35:43Z
Inwerp
16
/* CD3217 Repair */
7739
wikitext
text/x-wiki
===Overview:===
This page is a stub article, but it is time to start gathering information about M1 repair practices. For now it is simply to throw things i learn during the repairs (i got 5 M1 macbooks which i cant repair but thats NOT a dead CPU / SSD, so i wont give up untill i fix them). DO not use it as a repair guide or reference of any time, i have probably no idea what i am talking about - @inwerp#2476
#There is no S5-S0 sequence anymore, Do not look for it, forget everything you knew about power rails, sequence. Finita. Like on T2, SSD is always powered on.
#The most important power rails now are 3v8 and 5v_S2. G3HOT is now called AON (Allways On?) -- Read below for more 5v_S2 info*
#If you have waterdamage and you need some ICs, stock donorboards. Go google AONE36196, thats a simple double mosFet with customized footrpint. I successfully substituted it with two standard N-fets for test purposes but thats not a repair.
#all CPU power rails are now generated with Apple proprietary PMU. This might be a good thing because you won really see high side-shorts to VCORE anymore. Bad thing, again - donor only.
#if you look at 13 inch logic board, there are WAY less chips and components compared to older devices.
#Backlight circuit is the same as on older models. Same LP8549/49 as described in [https://logi.wiki/index.php/Backlight_Troubleshooting this article]
#wifi/bt module is a bliss. Check its fooprint and smile.
#For now 820-02020 is basically almost a development board. SV004. SV000, SV010, SC002 e.t.c are debug buttons. There are all sorts of resets, power button and force DFU on edge of the board, both sides. '''Important note: You need to populate 1v25 pullup RV005 for DFU button to work.''' There are also debug leds which i plan to stock and test. Switching [https://www.mouser.de/ProductDetail/Toshiba/SSM3K16CTL3F?qs=F5EMLAvA7IC3MTiw98N%252Bjg%3D%3D Fet] , 6.8K 201 resister, [https://www.mouser.de/ProductDetail/Kingbright/APG0603VBC-A1-5MAV?qs=81r%252BiQLm7BTPLVe8H%2FLA9A%3D%3D LED] 0201
#SSD/NANDs are not paired/preprogrammed like on T2 machines. If you find source, you can replace them without need of getting a donor.
'''WARNING: Do not use Intel Displays to check M1 and vice versa. Displays are not electrically compatible and also use different logic level (1.8v on M1)!'''
=== Getting Boot logs ===
# boot into diagnostics (hold power button 8 seconds untill startup menu, press cmd+D)
# start diagnostics and press cmd+opt+l few times
# plug in usb stick with hfs+ or apfs system and choose it as target
this will qield quite big ZIP archive with lots of useful logs including boot log.
===5v_S2===
While 5v_S2 is important power rail, it is not needed for the unit to power on. It seems to power several systems, but I have booted the board without UC300 (what generates 5v_S2). However this rail might damage lots of other components, specifically because feedback line consists of many 0201 resisters, failure of each one might cause ppbus on 5V rail which is high enough to kill all consumers at once and more of that, it causes failure of 3v8_aon generator (it has alternative VCC from 5V rail) which might be a complete disaster with both PMU failure and much worse, WLAN damage which is so far not replacable.
If you have any damage in UC300 area, do not power up to test the device, only test after you are 100% sure in feedback circuit.
Things powered by 5v_S2
*Display Backlight (directly powers LP8548)
*Keyboard Backlight
*Current sensing lines
*Fans
*Camera
*Trackpad
*It looks like PP5V_SW_LCD is also powered by 5v_S2 by looking at schematics. However, when I had board booted without UC300, I did have image, just no backlight. This rail is only used to power '''LP8549''' backlight-return controller (check [[Backlight Troubleshooting|Backlight troubleshooting for more info).]]
[[File:PP5V SW LCD Schematic.png|alt=PP5V_SW_LCD Schematic|thumb|PP5V_SW_LCD Schematic|none]]
===Power Rails===
as mentioned, 3v8_AON substitutes 3v3_g3h rail from previous modell, also partially thats similar to 3v_S5. It is enabled by CHGR_EN_MVR signal from ISL9240. It is mainly used by CPU Power IC / PMU (unlike 3v3_G3HOT it is a fat 3-phase power rail with buck converters and lots of caps).
Looks like all S2 Rails are enabled by PMU(U8100) itself, so power sequence would be something like:
Old CD3217-ISL9240 to PPBUS, + 3v8_AON, then PMU generates its internal LDOs, fires up S2 Rails. it is yet unknown if PMU is interchangable between Air/Pro boards, however it might be - most of enable signals are named GPIO on PMU.
P3V3S2 Line is used for auxillary components like Wifi/BT, sensors, switches.
5v_S2 is also important rail. It is generated by UC300([https://www.mouser.de/ProductDetail/Analog-Devices/LT8642SEVPBF?qs=wUXugUrL1qyAaLOrUdoiAA%3D%3D&gclid=CjwKCAjw-sqKBhBjEiwAVaQ9a8-DSb2Lg1Qg6drdSZ27_RBgylruUg5bEZrKRgPp7qibDbLUVMf36BoC7FgQAvD_BwE LT8642EV]-2 Stepdown converter with integrated fet). If this rail is unstable, you will get all sorts of issues like weird 3v8 Rail (next rail to power up CPU PMU), blown backlight switch, etc. If any sign corrosion, check all surrounding area, especially Feedback circuit. Unlike many other power ICs we seen before, this one has 5 Resisters and 1 Capacitor on feedback line. 1 Corroded feedback and you have PPBUS on your 5vRail. Not good at all.
Possible damage from bad Feedback: UP700(Display power switch), U5700 (3v8 driver, there will be a very weird short 5V to Phase 3 low side gate which looks like hot Q5840 BUT some random voltage on L75840 ). As described in schematics, 3v8 Driver (U5700) might be powered from both PPBUS_VMAIN_VIN as well as PP5v_S2, so its overvoltage is quite dangerous for PMU and possibly CPU too.
Power Consumption during boot: 19v. 0.1-,25 is a normal during POST / Boot phase. It also POSTS with 5V-1A if PD is disabled on USB Meter(weird but true).
Tricks:
- Turning on from battery only: connect battery, jump S5191, this will activate battery and keep it enabled, useful if you need data before you fix cd3217/TB circuit.
<br />
===A2337 820-02016 slight clicking sound near CPU and PPBUS pulsing down from 12v to 11v===
This was caused by 3v8AON Controller (U5700)
<br />
===CPU/DRAM/NAND Resistance to ground (MacBook Pro 2020 M1 820-02020)===
PPVDD_PCPU_AWAKE 19-21Ω
PPVDD_ECPU_AWAKE 80-95Ω
PPVDD_GPU_AWAKE 20Ω
PPVDD_SRAM_AWAKE 250-300Ω
PPVDD_DISP_S1 115Ω
PPVDD_SOC_S1 20Ω
PPVSS_DCS_S1 185Ω
PP0V764_S1_SRAM 260Ω
PP0V6_S1_VDDQL 0.5kΩ
PP1V06_S2SW_DRAM 18Ω
PP1V2_AWAKE_PLL 430Ω
PP1V25_S2 5+kΩ, used both for CPU and CD3217 VDDIO Supply, so burned CD3217 with short on this line will almost definetely mean dead CPU.
NAND:
PP2V5_AWAKE_NAND 35KΩ
PP0V88_AWAKESW_NAND 190Ω
PPVDD_GPU_AWAKE 20Ω
'''PMU Master (U8100, provides main voltage rail to CPU)'''
PP5V_BSTLQ_VOUT_MPMU 10MΩ, internal LDO
Ths LDO is really important for AON Enable / IO system. Its absence/short will cause 5v 0A with 3v3 on 5v_S2 enable and few others (normal level is 1.8v). If shorted, check L8300(input filtering inductor)
PP1V2_S2 20MΩ+, external LDO for audio FPGA processor UR300
PP3v3_S2_UPC 40MΩ+ external LDO for CD3217 (substitutes 3V3_RTC on Intel models)
PP1V8_AON_MPMU 30KΩ+ external LDO used for few pullups and 1.8, 3v3 AON > LDO enables which are used for some SMC functions and communication lines pullups.
'''PMU Slave (U7700, provides voltages for RAM and few AUX supplies for CPU)'''
PP0V88_S1 10MΩ, internal LDO<br />PP5V_BSTLQ_VOUT_SPMU 10MΩ, internal LDO
===Backlight troubleshooting===
[[File:Craig Federighi tries to troubleshoot M1 backlight.jpg|thumb|Craig Federighi tries to troubleshoot M1 LID sensor]]
Refer to old [[Backlight Troubleshooting|Backlight]] troubleshooting for most of possible issues. However, there is one weird thing to check: 1v8_AON rail is not critical for boot and start up but it is used for LID signal. If 1v8_AON is not present there will be communication between Backlight Drivers, there will be Boost and backlight enable signal. Looks like this was implemented that way so backlight voltage will be always present in S2 state for the famous "instant on" effect which turns backlight on with zero delay.
Compared to older models, LID trigger is way more complicated. It consists of many stages and powered by PP1v8_AON LDO (enabled by PMU itself). It is being generated from 3v8_AON rail by UC120 converter. It is very sensitive to any waterdamage on LID or overvoltage on 3v8 rail. It also worth to mention that AMR_RIGHT_OR_ND_1V8(located on audioboard) and AMR_LEFT_OR_ND_1V8(JR200 miniboard on main LB) are real LID signals from both HAL sensors.
Both signals are directly routed to UR300 FPGA chip which probably hardware-disables mic and camera once LID is closed. It also issues LID_OPEN signal sent to M1 SoC.
There is also UR200 OR gate which issues IPD_LID_OPEN_1V8 signal which is sent to Trackpad, Touchbar and PMU. So basically, this means that problems in LID circuit might cause no camera / microphone, no backlight but working touchbar and Trackpad haptic. Touchbar uses inverted signal (Low if "open"), most other circuits use high if "open".
Low PP1V8_AON (1.5 or 1.4v due to bad cap near regulator) would cause partial LID problems like disabled touchscreen on Toucbar, random no haptic click)
'''Check [[Angle sensor circuitry|Angle sensor circuitry page]] to find circuit schematics on the Lid Angle Sensor for A2442 (M1 14") and A2681 (M2 MBA).'''
===WIFI Module death===
unfortunately it happens on many MacBook Pro 13" 2020 devices. The reason for this fault is waterdamage in 3v3_S2 regulator, located at UC710 right next to backlight circuit. This place of the board is on the airflow path Once waterdamaged corroded feedback causes regulator to output =ppbus into 3vs2 which kills Wifi module.
<s>So far there is no known way to replace wifi chip: its configuration data is most likely stored on hidden SSD partition (similar to BridgeOS on T2 devices), and it wont work even after full DFU restore. It might probably work if you swap WIFI with SSD module.</s>
WiFi chip is tied to the CPU and its configuration information is stored in internal CPU ROM. There are rumors that new revision of JCID tool might have ability to untie iPhone 14 Wifi, which would probably be the same process for M1 chips. For now there is no known way to replace WIFI IC.
Without WIFI IC macOs triggers KP and not able to boot into OS. Older Recovery OS did not boot as well, however this information needs regular updates / checks.
Update 2023:
It seems that the Wi-Fi chip does not die as a whole part. Basically, what's getting damaged seems to be two DrMos on 3.3V inputs close to the antenna or maybe some caps nearby. My speculation on the DrMos version is based on a light partial 50 ohm short, which does not generate any heat, but both C0 and C1 amps are not working (the device is not able to connect to any type of Wi-Fi network unless it is really close to the router). Such a short would not prevent DrMos from getting powered, so amp malfunction most likely indicates that DrMos is damaged.
Most likely, these are power supplies for transmitter signal amplifiers. This means that if the 3.3V rail is not shut off due to OCP, the Wi-Fi chip will be visible in the system, but it won't connect to any network unless you put it directly on the Wi-Fi router. Two to five centimeters from the router antenna will give you full connectivity. So basically, this short causes the Wi-Fi chip to be unable to amplify TX, but it will still see all Wi-Fi networks around.
A possible workaround would be to cut traces to the shorted parts of the chip from the power rail (much safer than drilling the IC). If you do not have visible heat on both 3.3V inputs and resistance is above 50 Ohms, it might be totally fine to leave it as it is.
Refer to the images:
[[File:Apple_M1_Wifi_module.png|alt=|none|thumb|729x729px|Drilled Wifi Chip reveals two DrMOS like Ics on both hotspots.]]
[[File:Wifi_Pinout.png|alt=|none|thumb|628x628px|Instead of drilling, i would recommend to remove power connection from the board. Unfortunately vias are directly under the pads, so you need either to reball WiFi without these connections, or somehow cut it and disconnect it from board.]]
M1 WIFI Chip footprint
<br />As a mobile solution to get wifi via ethernet i am using Gl-iNet 300M mini Smart router. this tiny thing is powered from usb port and can be used in a repeater mode. Disable internal wifi, use web interface to connect to your wifi and here you go - just one dongle more and you got wifi connectivity.
=== PMU Troubleshooting ===
There are not many things that are required for the PMU to start. First of all, it needs PP3V8_AON power supply(compared to 3 step T2 sequence PP3V3_G3H_RTC >> T2 PMU init >> PMU_VDDMAIN_EN >> PP3V3_G3H ) as it is used to generate all outputs. The second thing would be PMU_VDD_HI, which is a voltage sense similar to T2 PMU on older models. I've never seen it die; however, it was quite often the issue on T2 Macs. Overvoltage on this pin might kill the PMU on models with a non-isolated voltage divider (M1MAX/T2 boards).
If the PMU does not output any voltages at all, first check VDD_HI, then inspect all internal LDO supplies and clock generation. If an LDO is not present, inspect its input and cap wells; for example, the PP5V_BSTLO_MPMU input inductor might be burned if you have an internal buck failure. This voltage is most likely used to drive internal buck converters. It also needs CHRGR_AUX_OK from the ISL9240. MPMU_XTAL1 is also necessary for the PMU to operate.
===Tools and chips===
[Https://aliexpress.com/item/1005003346173618.html? AMAOE MAC 9 M1 Stencil]
===Chip identification===
RAM:
HYNIX: H9HCNNN'''FBP'''MVGR-NEH 64Gbit (8GB) or H9HCNNN'''CRM'''MVGR-NEH 32Gbit(4GB) chips.
MICRON: MT53D512M64D4DG-046 XT:F D9ZGT 32Gbit (4GB)
SSD (Same as iPhone 12/13 codes):
KICM225 + KICM232 = 256 GB
KICM227 256 GB
KICM229 512 GB
KICM222 512 GB
KIC5224 256 GB
KICM223R 1 TB
== CD3217 Repair ==
Like on T2 macs, all boards with more than 2 ports have OTP (Internally) configured i2c Address setting. If CD3217 has wrong address, it wont be recognized the SMC and charging won't work.
Here is table from 820-02098 (MacBook Pro 2021 A2442 14") board
[[File:CD3217 Addr.png|none|thumb]]
As on pior models, 0x38 and 0x3F are strap-configured.
based on experience and schematics:
OTP-Configured(only donor sourced) ports are: Right port UG400(0x3A) and Magsafe U5500(0x3A) port on 14/16" ports. Most likely UG400 is interchangable but Magsafe might limit max charging capacity from 14 to 16inch board.
On Macbook Air only MagSafe port should be sourced from donor.
Pin configuration:
U5500(Magsafe controller) - UPC5/I2CM_SDA_CNFG '''LOW''' 1M-Gnd, I2CM_SCL_CNFG '''HIGH''' 1M-3V3 UPC5_I2C_ADDR '''FLOAT (Not stuffed R5650),''' ALL '''P'''D_UPC2_DBG 100k-'''GND'''
UF400(Left Top/DFU port) - UPC0 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux UF700 / I2C_ADDR '''GND Hard-routed,''' ALL PD_UPC2_DBG '''UART connection to SOC'''
UF500(Left Down/normal port) - UPC1 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux I2C_ADDR '''Float / NC'''
UG400(Right USB-C) - UPC2 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux I2C_ADDR 0K-'''GND.''' All PD_UPC2_DBG 100k-'''GND'''
==MacBook 2021 M1 MAX/PRO Based on 820-02100 schematics==
===Main Power controllers===
#U8100 PMIC MASTER APL1098/343S00515 Huge power IC, generating almost all rails used by CPU. Powered by PP3v8_AON, turns on bucks if VDD_HI ~4.7V is present (voltage divider PPBUS/2). PMIC Dies if there is overvoltage (VDD_HI == PPBUS)
#PP3v8_AON U5700 - basically a secondary "PPBUS" rail. Rail is described up to 30A and generated by the same IC from first 2020 M1 board. Used as a main power supply for PMIC Master. As in previous board, enabled by charger IC (U5200, RAA489900)
#Battery charging / PPBUS IC RAA489900 - since proper is not available it might be compatible with ISL9240, at least pins listen and VDDIO voltage in schematics are the same.
#PP5V_S2 - probably the same "low power state" supply which is used by many switches and as a secondary VCC rail on many ICs.
#new CD3218 Magsafe controller.
=== Power ICS under SoC ===
'''M1Pro''' (339S00962 S) Power IC (3 chips under SOC)
343S00506, 343S00508, 343S00510
All have different PN on the same board.
_______________________________
'''M1Max'''
343s00509 - 5 chips under CPU |'''TODO''': check if its all the same PN, cause on M1Pro that's not the case|
=== RAM Differences ===
'''M1 Pro''' has different RAM vendors,
So it's important to '''take that into account''' when performing PMU/SPMU main rail measurements.
'''H58G78AK6HX049''' (16GB per IC) is low-ohm RAM.
That will affect resistance measurements on
'''PPVDD2H0_S2SW''', '''PPVDD2H1_S2SW''' and '''PP0V95_S2SW_VDD2L''' power rails.
=== Resistance and miscellaneous measurements ===
==== M1Pro (applicable to A2442" and A2485") ====
''M1Pro measurements below taken with UT60A:''
'''MPMU U8100 main rails:'''<blockquote>PP0V75_S1_VDDQ1 = 650R
PPVDD2H1_S2SW = 230R '''(May be lower, depends on ram used)'''
PPVDDGPU_BMPR_S1 = 246R
PP0V81_S1_SRAM = 153R
PPVDD_ECPU_AWAKE = 137R
PPVDD_ECPU_SRAM = ~16K
PP1V8_S2SW = ~10,3K
PP1V2_S2 = ~28,7K
PPVDD_FIXED_S1 = 217R
PPVDD_AVEMSR_AWAKESW = 127R
PPVDD_AMPH_S2SW = 5,6K</blockquote>
'''SPMU U7700 main rails:'''<blockquote>PP0V575_S1_VDDQ = 600R
PPVDD_DCSS1 = 96,5R
PP0V95_S2SW_VDD2L = 1K '''(May be way lower, seen 75R, depends on RAM used)'''
PP1V8_S2 = >100K (don't know why is that differs from 1v8s2 above)
PP1V2_AWAKE = 3,5K
PPVDD_AMPH0_S2SW =5,36K
PPVDD_SOC_S1 = 34R
PP0V855_S2SW_VDDCIO = 288R
PPVDD_DISP_AWAKESW = 51R
PPVDD2H0_S2SW = 216R '''(May be way lower, seen 21,6R, depends on RAM used)'''</blockquote>
'''PMU VDDHI Rdivider stock values:'''<blockquote>R8171: 291K R8170: 1.07M '''(tolerance 0.1%)'''
Vout = 2,49V@PBUS =11,98
Vout = 2,60V@PBUS =12,3V
BOM Variant used: 3S</blockquote>
'''Misc:''' <blockquote>PP1V8_S1_CLVR=3,3K (75mV in diode) (PP1V8VDDH*)</blockquote>
kyif621yfxezgdn4udjqnx0xw1g0utz
ME Disable Strap
0
10
801
800
2020-03-09T10:34:42Z
Inwerp
16
801
wikitext
text/x-wiki
===Problem:===
The MacBook can boot into EFI ASD but not Into OS. No ASD Problems reported, Installer does not boot as well. Windows / Linux boots just fine.
In some cases the reason is incorrect temperature sensors reading, so do not start messing with ME before checking ASD EFI/MRI.
===Repair/Diagnostics:===
Before flashing the bios, check if intel Management Engine is running. On older OSX (10.6.8) you will see "unknown platform" kernel panic in verbose mode. You can also test Intel ME by booting Windows and checking if Intel Management Engine is visible in Device Manager. You may also use Intel [https://downloadcenter.intel.com/en/product/69368 Management Engine Detection tool].
After confirming Intel ME not working, inspect ME Disable Bootstrap circuit for waterdamage/bad solder joints.
According to Intel CPU design, CPU/PCH uses audio module HDA_SDO signal as a power-up strap to enable or disable the Management Engine shown as follow:
When a user performs the firmware upgrade, SMC sends out SPI_DESCRIPTOR_OVERRIDE_L to chip Q1920 pin 2. Then pin 4 outputs HDA_SDOUT_R (high) to disable ME module in the CPU. So a full re-flashing of SPI ROM can be done. Management Engine is enabled again when OS boots normally.
This means in many cases ME Bootstrap problem will also cause no audio and visa versa, shorted HDA_SDO will cause problems with ME Bootstrap.
[[File:PCH ME Disable Strap.png|thumb|Q1920 ME Disable circuit]]
In normal condition SPI_DESCRIPTOR_OVERRIDE_L should be high to enable ME. If you measure that ME is disabled, Inspect Q1920 step by step for internal shorts, power supply (R1920). If no issue found / Q1920 replacement does not help, move to the EFI(Flash good-known CleanME ROM). If you have waterdamage near the SMC, reflow/reball it before messing with other circuits. If you have waterdamage around ME Disable Strap, it could also damage the ME region during Bios Update so you might have both problems: broken disable strap and corrupted ME region.
On older Boards(Sandy Bridge, for example 820-3023-a), there might be no PCH Disable Strap. If you see "Unsupported CPU / Unsupported PCH" before it reboots, check SMC for corrosion (Pin 133, SPI_Descriptor). Never forget to 3xPRAM Reset in a row.
<br />
===Original Discord discussion :===
<blockquote>
Piernov:<br>
There should be no audio output at all I think, as it'll permanently pull up the audio out line between PCH and audio codec.<br>
(To clarify, to disable ME it only has to be pulled during boot, but if there is an issue with Q1920 it should pull it up all the time)<br>
The SMC may pull it up when updating EFI if reflashing the ME region is necessary.<br>
(since it'll enable writing the area for ME region in the SPI ROM)<br>
(btw with flashrom on Linux you can check which area are accessible, and you can indeed toggle manually SPI_DESCRIPTOR_OVERRIDE_L to get write access to ME region)<br>
(you still don't have write access to NVRAM area, as it's been permanently disabled outside EFI starting from 2013 I think)<br><br>inwerp:<br>
But first check q1920 very closely<br>
Check if SPI_DESCRIPTOR_OVERRIDE_L is high => SPI_DESCRIPTOR_OVERRIDE low. High SPI_DESCRIPTOR_OVERRIDE(==SPI_DESCRIPTOR_OVERRIDE_L is low) means ME is disabled<br>
Check both mosfets for shorts<br>
Boot with win 10 and check if intel ME is present in device manager<br>
Somewhat similar problem on Sandy Bridge board with no bootstrap: 820-3023-a, Verbose mode reports "Unsupported CPU, Unsupported PCH", reboots. in this case check corrosion SMC pin 133 (SPI_Descriptor), + 3X PRAM reset in a row.</blockquote>
[[Category:Mac]]
5rfvbh23n1fahpmr088ls9clxjzujrp
MOSFETs
0
329
5863
5862
2021-05-24T19:35:27Z
Chrisb
1
added line break
5863
wikitext
text/x-wiki
<br />
==Inwerp==
Mosfets usually fail with a short circuit
It happens because gate is actually isolated from semi-conductor npn doped sandwich
As soon as it has small leak, it exponentially grows up at some point
And you have full short between gate drain and source - insulator simply is not here anymore. ESD damage is a real thing since higher voltages might make a small "hole" in the insulator and mosfet will smoke as soon as running current reaches enough rage to "find" this little hole. It might happen after you give device back to customer and the only way to avoid it - do not ignore ESD safety at least when you're working with MosFETs directly.
On p mosfets you have basically the same situation except you are supossed to have continuity between drain and source if gate is low but not between these two and gate, since it is always isolated on FET(edited)
P mosfets sometimes fail with no short to gate, it could be diagnosed off-circuit
'''Probing technique'''<br />It is always a good idea to test every new <s>sanded and probably fake</s> MosFET before you solder it on board. Otherwise you risk further damaging the board instead of repairing.
It is actually quite easy. Lets start with one simple, N-Channel 820-00165 CPU VCORE SiSA18DN N-Channel MosFET (In most cases EVEN numbered MosFET are N-Channel, Odds are P-Channel, but you rather double-check)
Step 0: short MosFET's Gate to Source. It might be charged from your hand or soldering iron. Gate acts as a capacitor, so you need to discharge it before testing.
Step 1: Set multimeter in diode/ohm continuity mode and Put BLACK probe on Drain (bigger plate), RED probe on Source. No continuity means MosFET is not shorted, in diode mode you will also see something like 500mv voltage drop of the internal diode. This is fine.
This is not a real diode but part of "parasitic" NPN transistor which is a part of MosFET construction itself. This is also a shortcut to remember difference between N and P channel mosfet representation in schematics. NPN transistor could be represented as two diodes with cathodes ( - ) poiting outwards. And this is exactly what you see when you look at the S-Node of the N-Channel MosFET: two diodes, pointing to Drain and Gate respectively. On P-Channel MosFET, both diodes will be pointing to S which represents PNP transistor as well. So if you remember polarity of normal diode, you can use it to read if its N or P channel MosFET, simply see the "arrow" as a diode which indicates if it is P (anode) or N(Cathode) on Gate.
[[File:Mosfet Step1.png|frameless]]
Step 2: Put the RED probe on Gate to charge it. Now go back to step 1, put RED back to SOURCE. MosFET is now conductive, you hear a beep.
[[File:MosFet Step2.png|frameless]]
Step 3: put RED probe on Drain, BLACK probe on Gate. This will discharge the Gate and now if you put BLACK probe on SOURCE there will be no continuity.
[[File:Mosfet step3 fixed.png|frameless]]
Testing P-Channel mosfets is basically the same process but you need to switch Red/Black probes. Use probes as a low-voltage battery which is used to apply negative voltage on gate.
Brief explanation: Multimeter uses low voltage in Ohm-continuity mode. It is enough to charge MosFET's Gate but it makes sense only off-circuit since Gate might be quickly discharged by power IC. Diode mode will also detect internal diode since it uses slightly higher voltage to measure.
Important info: Many amateurs check MosFETs by simply probing some random points thus getting random results. If you simply put some probe on Drain and go with some other probe through other pins, you may accidentally charge the gate and probably get a false "shorted mosfet" result. It is also possible that perfectly fine MosFET in circuit will also beep simply because its gate is still charged.
<youtube>QWpCBstxdhI</youtube>
==piernov==
Basically MOSFETs have a diode allowing current to flow from drain to source even when gate isn't triggered.
But as it is a diode ,it has a threshold voltage/forward voltage drop.
So when MOSFET isn't turned on and current is flowing from drain to source, you'll measure a voltage on the source lower (by like 0.3-0.7V) than on the drain.
(in the case of the P-channel, since the context was about DC-in MOSFETs on Macbook boards that are P-channel)
But basically current flowing through body diode is an unwanted effect. The forward voltage drop means you waste power proportional to the current that needs to be dissipated (P = Vf * I). So you want to turn on the MOSFET anyway if you want current flowing through it.
Meaning that in general it's not normal to measure a voltage drop similar to a diode forward voltage drop across a MOSFET.
In the case of DC-in MOSFETs, what can happen is that the MOSFET that normally blocks the current shorts across drain/source/gate. This short causes the gate to be at the same voltage as drain/source, and it usually also causes the gate for the other MOSFET to have the same voltage, so it's turned off, either because they're tied together or the charger IC tries to turn them off. So current reaches the reverse polarity protection MOSFET, which would normally block the current from flowing in the other direction, so it flows through it but it's not turned on, so you measures a voltage drop after the DC-in MOSFETs compared to before them which is not normal.
The other failure mode of the DC-in MOSFETs is the reverse polarity protection MOSFET shorts across drain/source/gate, gate has the same voltage as source/drain, it's tied to the other MOSFET, the one that blocks current flowing in the correct direction, so it's turned off and never lets the current flow.
What's confusing for beginners in this situation is that the MOSFET that's bad is the one that lets the current flow, not the one that is blocking the current. Every beginner will jump on replacing the one that blocks the current and obviously it'll not solve the problem. Then they Sorin it and they don't understand why they have 19V on the main power rail but it's still not turning on, or it's turning on but the battery is not charging, or the laptop is throttling or whatever weird stuff happens.
This second situation is much more common on non-Apple laptops.
ffl5dvxfv3fkh9zmatfiw22q73rac96
MacBook
0
1488
6387
4624
2022-02-04T13:00:36Z
Inwerp
16
6387
wikitext
text/x-wiki
The '''MacBook''' is a brand of [[Macintosh]] [[laptop]] computers by [[Apple Inc.]] that merged the [[PowerBook]] and [[iBook]] lines during the [[Mac transition to Intel processors]]. The current lineup consists of the [[MacBook Air]] (2008–present) and the [[MacBook Pro]] (2006–present). Two different MacBook lines existed from [[MacBook (2006–2012)|2006 to 2012]] and [[MacBook (2015–2019)|2015 to 2019]].
==Overview==
The MacBook family was initially housed in designs similar to the iBook and PowerBook lines which preceded them, now making use of a unibody [[Aluminium|aluminum]] construction first introduced with the MacBook Air. This new construction also has a black plastic keyboard that was first used on the MacBook Air, which itself was inspired by the sunken keyboard of the original polycarbonate MacBooks. The now standardized keyboard brings congruity to the MacBook line, with black keys on a metallic aluminum body.
The lids of the MacBook family are held closed by a magnet with no mechanical latch, a design element first introduced with the polycarbonate MacBook. Memory, drives, and batteries were accessible in the old MacBook lineup, though the newest compact lineup solders or glues all such components in place. All of the current MacBooks feature backlit keyboards.
The MacBook was discontinued from February 2012 until March 2015, when a new model featuring an ultraportable design and an all-metal enclosure was introduced. It was again discontinued in July 2019 following a price reduction of the 3rd generation MacBook Air and discontinuation of the 2nd generation model.
==MacBook family models==
{{Further|Comparison of Macintosh models}}
===Current===
====MacBook Air====
The [[MacBook Air]] is Apple's least expensive notebook computer. While the 1st generation was released as a premium ultraportable positioned above the 2006 - 2012 MacBook, lowered prices on subsequent iterations and the discontinuation of that MacBook has made it serve as the entry-level Macintosh portable. The 2010 to 2017 base model came with a 13-inch screen and was Apple's thinnest notebook computer until the introduction of the MacBook in March 2015. This MacBook Air model features two USB Type-A 3.0 ports and a Thunderbolt 2 port, as well as an [[SDXC]] card slot (only on the 13inch model). This model of MacBook Air did not have a Retina Display. A MacBook Air model with an 11-inch screen was available from October 2010 to October 2016. In 2017, the MacBook Air received a small refresh, with the processor speed increased to 1.8 GHz.
On October 30, 2018, the MacBook Air underwent a major design change, dropping the USB Type-A ports, [[MagSafe]], and the SD card slot in favor of two USB-C/Thunderbolt 3 ports and a headphone jack. It was updated with a [[Retina display]] and [[Amber Lake (microarchitecture)|Intel Y-series Amber Lake]] i5 CPUs, as well as a Force Touch trackpad, a third-generation butterfly mechanism keyboard, and the [[Touch ID]] sensor found in the fourth-generation MacBook Pro, but without the Touch Bar. The base price was also raised, although the base configuration of the 2017 model was retained until July 9, 2019, when it was discontinued along with the Retina MacBook.<ref>{{Cite news|url=https://www.cnet.com/news/macbook-air-2018-retina-display-touch-id-1199-available-nov-7/|title=Apple MacBook Air 2018 gets Retina display, Touch ID for $1,199, available Nov. 7|date=2018-10-30|work=CNET|access-date=2018-11-15|language=en}}</ref> The base price of this model was also dropped to $1099 ($999 for students) on the same day.<ref>{{Cite web|url=https://www.apple.com/newsroom/2019/07/macbook-air-and-macbook-pro-updated-for-back-to-school-season/|title=MacBook Air and MacBook Pro updated for back-to-school season|website=Apple Newsroom|language=en-US|access-date=2019-08-07}}</ref>
One important difference on Macbook Air 2018..2019..2020 is that it will bootloop without trackpad. If you use it with external screen, it might look really similar to bad iGpu (30% boot with artifacts then reset). However device simply artifacts on TBT output if being reset.
====MacBook Pro====
The [[MacBook Pro]] is Apple's higher-end laptop available in both 13-inch and 16-inch configurations. The current generation 13-inch MacBook Pro was introduced in October 2018. It features a touch-sensitive OLED display strip located in place of the [[function keys]], a [[Touch ID]] sensor integrated with the power button, and four USB-C ports that also serve as Thunderbolt 3 ports. The 13-inch model was also available in a less expensive configuration with conventional function keys and only two USB-C/Thunderbolt 3 ports, but since July 2019, the base MacBook Pro model has the Touch Bar as well as quad-core processors, similar to the higher-end models, although it still has only two USB-C / Thunderbolt 3 ports.<ref>{{cite web|url=https://www.apple.com/macbook-pro/|title=MacBook Pro|accessdate=October 27, 2016|website=Apple.com|publisher=Apple}}</ref>. The May 4, 2020 refresh adopts many of the upgrades seen in the 16" 2019 MacBook Pro, including the scissor mechanism keyboard ("Magic Keyboard") and a physical Escape button.
On November 13, 2019, Apple released the 16-inch MacBook Pro, replacing the 15-inch model of the previous generation, and replacing the butterfly keyboard with a scissor mechanism keyboard (dubbed the Magic Keyboard by Apple), reverting to the old "inverted-T" arrow key layout, replacing the virtual [[Esc key|Escape key]] on the Touch Bar with a physical key, and replacing the [[Advanced Micro Devices|AMD]] [[AMD Polaris|Polaris]] and [[Radeon RX Vega series|Vega]] graphics from the 15-inch model with options from AMD's [[Radeon RX 5000 series|Navi]] graphics architecture, as well as reengineering the speakers, microphone array, and the thermal system compared to the 15-inch; the latter had thermal limitations in the 15-inch model due to its design. In addition, the 16-inch is available with up to 64 GB of DDR4 2667 MHz RAM and up to 8 TB of SSD storage. It also has a 100 Wh battery; this is the largest battery that can be easily carried onto a commercial airliner under U.S. [[Transportation Security Administration]] rules.<ref>{{Cite web|url=https://www.tsa.gov/travel/security-screening/whatcanibring/items/lithium-batteries-more-100-watt-hours|title=Lithium batteries with more than 100 watt hours|date=2017-03-14|website=Transportation Security Administration|language=en|access-date=2019-11-22}}</ref><ref>{{Cite web|url=https://www.faa.gov/hazmat/packsafe/more_info/?hazmat=7|title=Pack Safe – Batteries, lithium|website=www.faa.gov|language=en-us|access-date=2019-11-22}}</ref><ref>{{Cite web|url=https://www.apple.com/newsroom/2019/11/apple-introduces-16-inch-macbook-pro-the-worlds-best-pro-notebook/|title=Apple introduces 16-inch MacBook Pro, the world’s best pro notebook|website=Apple Newsroom|language=en-US|access-date=2019-11-22}}</ref>
===Discontinued===
The original [[MacBook (2006–2012)|MacBook]] was a line of Macintosh portable computers introduced in May 2006 that served as entry-level laptops following the [[Mac transition to Intel processors]], replacing the [[iBook]] G4. It was discontinued on July 20, 2011, for consumer purchase and in February 2012 for education institutions, being superseded by the 2nd generation MacBook Air, as the 11-inch model introduced in 2010 had the same starting price of the MacBook.<ref>{{Cite web|url=https://www.macrumors.com/2011/07/20/apple-discontinues-white-macbook/|title=Apple Discontinues White MacBook [Updated]|last=Slivka|first=Eric|website=www.macrumors.com|language=en|access-date=2019-08-07}}</ref> The Sales of the Mac computers amounted to 18.21 million units in Apple’s 2018 fiscal year<ref>{{Cite web|title=Apple: Mac sales 2002-2018|url=https://www.statista.com/statistics/276308/global-apple-mac-sales-since-fiscal-year-2002/|access-date=2020-06-03|website=Statista|language=en}}</ref>
The [[MacBook (2015–2019)|Retina MacBook]] was a line of Macintosh portable computers introduced in March 2015. It was discontinued on July 9, 2019, as it had been superseded by the 13-inch Retina MacBook Air, which had a lower base price ($1,299 for the MacBook, $1,199 for the 2018 MacBook Air, and $1,099 for the 2019 MacBook Air), additional USB-C / Thunderbolt 3 ports (the MacBook has only one USB-C port vs two USB-C / Thunderbolt 3 ports on the MacBook Air), and better performance.<ref>{{Cite web|url=https://www.engadget.com/2019/07/09/apple-killed-the-12-inch-macbook/|title=Apple killed the 12-inch MacBook|website=Engadget|language=en|access-date=2019-07-11}}</ref>
==Comparisons==
{| class="wikitable"
|+
!Model
![[Microprocessor|Processor]] ([[Intel Core|Intel]])
!'''[[Apple-designed processors#T series|Security chip]]'''
![[Computer memory|Memory]]
![[Computer data storage|Storage]]
![[Graphics processing unit|Graphics]]
![[Display resolution]] ([[16:10 aspect ratio|16:10]] [[IPS panel|IPS]] [[Retina display|Retina]])
!'''Peripheral connections'''
!Battery ([[Lithium-ion polymer battery|lithium polymer]], non-removable)
![[List price]]
|-
|'''MacBook Air'''
|1.6 GHz ([[List of Intel Core i5 microprocessors#%22Amber%20Lake-Y%22%20(dual-core%2C%2014%20nm)|i5-8210Y]]) dual‑core Intel Core i5, Turbo Boost 3.6 GHz, with 4 MB L3‑cache
| rowspan="4" |[[Apple-designed processors#Apple T2|Apple T2]]
| rowspan="3" |8 GB of onboard 2133 MHz LPDDR3 SDRAM<ref>{{Cite web|url=https://www.ifixit.com/Teardown/MacBook+Air+13-Inch+Retina+2018+Teardown/115201|title=MacBook Air 13" Retina 2018 Teardown|date=2018-11-08|website=iFixit|language=en|access-date=2019-08-07}}</ref>
''Optional 16 GB at the time of purchase only.''
|128 GB or 256 GB PCIe-based SSD
''Optional 512 GB or 1 TB at the time of purchase, not upgradable after.''
|Intel [[Intel Graphics Technology#Kaby%20Lake%20/%20Amber%20Lake|UHD Graphics 617]] with up to 1.5 GB LPDDR3 SDRAM shared from main memory
|13.3", native 2560 x 1600 [[Pixel|pixels]] 227 ppi, True Tone display
| rowspan="2" |
*2× [[Thunderbolt 3]] ([[USB-C]] [[USB 3.1 Gen 2|3.1 Gen 2]]) ports supporting charging and [[DisplayPort]]
*1× 3.5 mm headphone jack
|49.9 [[Watt-hour|Wh]]
|$1,099, $999 for students<ref name=":0">{{Cite web|url=https://www.apple.com/newsroom/2019/07/macbook-air-and-macbook-pro-updated-for-back-to-school-season/|title=MacBook Air and MacBook Pro updated for back-to-school season|website=Apple Newsroom|language=en-US|access-date=2019-08-07}}</ref>
|-
|'''MacBook Pro''' (13-inch, Two Thunderbolt 3)
|1.4 GHz quad-core Intel Core i5 Coffee Lake (8257U), up to 3.9 GHz, 6 MB L3 cache, 128 eDRAM
''Optional 1.7 GHz quad-core Intel Core i7 Coffee Lake (i7-8557U), up to 4.5 GHz, 8 MB L3 cache,128 MB eDRAM''
|128 GB or 256 GB PCIe-based SSD
''Optional 512 GB, 1 TB or 2 TB at the time of purchase, not upgradable after.''
|[[Intel HD and Iris Graphics|Intel Iris Plus Graphics]] 645 with 128 MB eDRAM
| rowspan="2" |13.3", 2560 × 1600, 227 ppi with [[DCI-P3|Wide colour (P3) gamut]], 500-[[Candela per square metre|nits]], True Tone display
|58.2 [[Watt-hour|Wh]]
|$1,299, $1,199 for students<ref name=":0" />
|-
|'''MacBook Pro''' (13-inch, Four Thunderbolt 3)
|2.4 GHz quad-core Intel Core i5 Coffee Lake (8279U),<ref>{{Cite web|url=https://arstechnica.com/gadgets/2019/05/apple-refreshes-macbook-pro-with-updated-keyboard-8-core-9th-gen-intel-cpus/|title=Apple refreshes MacBook Pro with updated keyboard, 8-core 9th-gen Intel CPUs|last=Axon|first=Samuel|date=2019-05-21|website=Ars Technica|access-date=2019-05-22}} {{verify source |date=August 2019 |reason=This ref was deleted ([[Special:Diff/909706468]]) by a bug in VisualEditor and later restored by a bot from the original cite at [[Special:Permalink/909194676]] cite #222 - please verify the cite's accuracy and remove this {verify source} template. [[User:GreenC_bot/Job_18]]}}</ref>up to 4.1 GHz, 6 MB L3 cache, 128 MB eDRAM
''Optional 2.8 GHz quad-core Intel Core i7 Coffee Lake (8569U), up to 4.7 GHz, 8 MB L3 cache, 128 MB eDRAM''
|256 GB PCIe-based SSD
''Optional 512 GB, 1 TB or 2 TB at the time of purchase, not upgradable after.''
|[[Intel HD and Iris Graphics|Intel Iris Plus Graphics]] 655 with 128 MB eDRAM <ref>{{cite web | url = https://ark.intel.com/products/137979/Intel-Core-i7-8559U-Processor-8M-Cache-up-to-4-50-GHz- | title = Intel Core i7-8559U Processor | date = July 9, 2018 | accessdate = November 16, 2018 | publisher = Intel }} {{verify source |date=August 2019 |reason=This ref was deleted ([[Special:Diff/909706468]]) by a bug in VisualEditor and later restored by a bot from the original cite at [[Special:Permalink/909194676]] cite #231 - please verify the cite's accuracy and remove this {verify source} template. [[User:GreenC_bot/Job_18]]}}</ref>
| rowspan="2" |
*4× [[Thunderbolt 3]] ([[USB-C]] [[USB 3.1 Gen 2|3.1 Gen 2]]) ports supporting charging and [[DisplayPort]]
*1× 3.5 mm headphone jack
|58.0 [[Watt-hour|Wh]]
|$1,799
|-
|'''MacBook Pro''' (16-inch)
|
*2.6 GHz six-core Intel Core i7 (9750H) Coffee Lake (9th Gen), up to 4.5 GHz, 12 MB L3 cache ''Optional 2.4 GHz eight-core Intel Core i9 (9980HK) Coffee Lake (9th Gen), up to 5 GHz, 16 MB L3 cache''
*2.3 GHz eight-core Intel Core i9 (9880H) Coffee Lake (9th Gen), up to 4.8 GHz, 16 MB L3 cache ''Optional 2.4 GHz eight-core Intel Core i9 (9980HK) Coffee Lake (9th Gen), up to 5 GHz, 16 MB L3 cache''
|16 GB of onboard 2667 MHz PC4-21300 DDR4 SDRAM
''Optional 32 GB or 64 GB RAM configuration available at time of purchase only''
|512 GB PCIe-based SSD
''Optional 1 TB, 2 TB, 4 TB or 8 TB at the time of purchase, not upgradable after.''
|[[AMD]] [[Radeon Pro]] 5300M with 4GB of GDDR6 memory and automatic graphics switching
Intel UHD Graphics 630
''Configurable to AMD Radeon Pro 5500M with 4GB of GDDR6 memory or AMD Radeon Pro 5500M with 8GB of GDDR6 memory.''
|16", 3072 x 1920 (16:10), 226 ppi with Wide colour (P3) gamut, 500-nits ''(16")''
|100 [[Watt-hour|Wh]]
|$2,399
|}
{{Timeline of MacBook Family Models}}
==Sales==
[[File:Macsales.svg]]
==See also==
{{AppleIntel}}
*[[Comparison of Macintosh models]]
==References==
<references />
{{Apple hardware since 1998}}
{{Apple}}
[[Category:MacBook| ]]
[[Category:X86 Macintosh computers]]
[[Category:Consumer electronics brands]]
on17br22zzjn36dfnp42zpgja56tsvs
MacBook/Wi-Fi not working in recovery mode
0
2094
6257
2021-11-25T08:22:18Z
Muerto
527
Muerto moved page [[MacBook/Wi-Fi not working in recovery mode]] to [[Wi-Fi not working in recovery mode]]
6257
wikitext
text/x-wiki
#REDIRECT [[Wi-Fi not working in recovery mode]]
8adp3vrsmfapryr2u43myc4j17i616q
MacBook Air
0
2103
7057
7053
2024-03-05T16:52:05Z
MaxShevelev
1008
7057
wikitext
text/x-wiki
==Overview==
The [[MacBook Air]] is Apple's least expensive notebook computer. While the 1st generation was released as a premium ultraportable positioned above the 2006 - 2012 MacBook, lowered prices on subsequent iterations and the discontinuation of that MacBook has made it serve as the entry-level Macintosh portable. The 2010 to 2017 base model came with a 13-inch screen and was Apple's thinnest notebook computer until the introduction of the MacBook in March 2015. This MacBook Air model features two USB Type-A 3.0 ports and a Thunderbolt 2 port, as well as an [[SDXC]] card slot (only on the 13inch model). This model of MacBook Air did not have a Retina Display. A MacBook Air model with an 11-inch screen was available from October 2010 to October 2016. In 2017, the MacBook Air received a small refresh, with the processor speed increased to 1.8 GHz.
On October 30, 2018, the MacBook Air underwent a major design change, dropping the USB Type-A ports, [[MagSafe]], and the SD card slot in favor of two USB-C/Thunderbolt 3 ports and a headphone jack. It was updated with a [[Retina display]] and [[Amber Lake (microarchitecture)|Intel Y-series Amber Lake]] i5 CPUs, as well as a Force Touch trackpad, a third-generation butterfly mechanism keyboard, and the [[Touch ID]] sensor found in the fourth-generation MacBook Pro, but without the Touch Bar. The base price was also raised, although the base configuration of the 2017 model was retained until July 9, 2019, when it was discontinued along with the Retina MacBook. The base price of this model was also dropped to $1099 ($999 for students) on the same day.
2010-2017 Macbook Air needs 45W Powersupply to power on. MagSafeID is not checked.
[[MacBook LCD Screen Compatibility]]
[[MacBook Battery Compatibility]]
==Common Issues / Troubleshooting / Hints==
Use Piernov's [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]] diagram for troubleshooting
One of most common repairs is [[820-00165 Pulsing]]
EFI Corruption could be considered as common issue. [[EFI]]
[[Backlight Troubleshooting]] (refer to lp8550 part)
You can use 820-3437 SMC on 820-00165 board to turn it on but you will need to reprogram it. [https://logi.wiki/index.php/SMC_flashing SMC Flashing]
820-00165 RAMCFG straps configuration in schematics is not correct. [[A1466 RAMCFG straps right configurations|Here's the right one.]]
'''IMPORTANT''': MacBook Air 2018+ will bootloop without a trackpad. If you are fixing bootloop-related issue like TBT controller failure - always test in in chassey.
<br />
==MacBook Air / Pro Intel and M1 keyboard compatibility==
All pre-retina keyboards are completely compatible and you can even use 13" keyboard on 11" board to test it.
===A & D Keys issue after Keyboard/Trackpad replacement (Macbook Air 2020 Intel / M1)===
MacBook Air A2179 and 2337 use almost the same keyboard, however A and D keys are routed differently. I you have such issue, refer to the following table:
(A2337) MBA M1 + original (A2337 M1) trackpad + original interconnect (820-02288-01 A2337 M1) daughter board + new replacement (A2337) keyboard = A and D is working
(A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + original interconnect (820-02288-01 A2337 M1) daughter board + new replacement (A2179) keyboard = A and D is working
(A2337) MBA M1 + original (A2337 M1) trackpad + original interconnect (820-02288-01 A2337 M1) daughter board + a new replacement (A2179 Intel) keyboard = A and D is not working
(A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + eBay/Aliexpress trackpad interconnect (820-02005-A A2179 Intel) daughter board + new replacement (A2337 M1) keyboard = A and D is not working
(A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + eBay/Aliexpress trackpad interconnect (820-02005-A A2179 Intel) daughter board + new replacement (A2179) keyboard = A and D is not working
Credits to Alan L (discord)
MacBook Pro 2020 13" Intel and M1 Scissor-type keyboards are not compatible, some keys won|t work due to different signal mappings. To figure which one is yours without laptop, check if A key connects pin 28 and 23(M1)
[[File:MacBook Pro M1 13 A-Key 2020 Mapping.png|none|thumb|MacBook Pro M1 2020 13" A Key Mapping. QR code: MT201218V1912AKS304LSA18430]]
Macbook Pro M1
==Video guides==
<youtube>TnrkG9m-gho</youtube>
sqrhd55lv1kk13vmc27vhmsh7406slr
MacBook Air Pictures
0
77
5131
5125
2020-10-26T18:12:38Z
Piernov
10
/* MacBook Air 13" 2012 */
5131
wikitext
text/x-wiki
==MacBook Air 11" 2010==
==MacBook Air 13" 2010==
==MacBook Air 11" 2011==
==MacBook Air 13" 2011 (820-3023)==
[[File:820-3023 top.jpg|900px]]
[[File:820-3023 bottom.jpg|900px]]
==MacBook Air 11" 2012==
==MacBook Air 13" 2012 (820-3209)==
[[File:820-3209 top.jpg|900px]]
[[File:820-3209 bottom.jpg|900px]]
==MacBook Air 11" 2013/14==
==MacBook Air 13" 2013/14==
==MacBook Air 11" 2015==
==MacBook Air 13" 2015/17==
[[File:820-00165_Front.jpg|800x800px]]<br><br>
[[File:820-00165_Front_Right.jpg|400x400px]]
[[File:820-00165_Front_Middle.jpg|400x400px]]<br><br>
[[File:820-00165_Front_Left.jpg|400x400px]]<br><br>
[[File:820-00165_Back.jpg|800x800px]]<br><br>
[[File:820-00165_Back_Right.jpg|400x400px]]
[[File:820-00165_Back_Middle.jpg|400x400px]]<br><br>
[[File:MacBook Air 13" 2015-2017.jpg|400x400px|link=File:MacBook_Air_13%22_2015-2017.jpg]]
== MacBook Air 13" 2020 Scissors A2179 ==
[[File:Scissors A2179 Top.jpg|left|frameless|900x900px|Scissors A2179 Top view]]
<br />
[[File:Scissors A2179 Bottom.jpg|left|thumb|900x900px|Scissors A2179 Bottom view]]
<br />
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
7va2c9zvnimg73t8ght9izi4rpu1hzh
MacBook Air keyboard compatibility
0
2131
6389
2022-02-04T13:07:15Z
Inwerp
16
Inwerp moved page [[MacBook Air keyboard compatibility]] to [[MacBook Air]]: Should not be separate page but a section
6389
wikitext
text/x-wiki
#REDIRECT [[MacBook Air]]
i8sgqaxd2p56qe2zlmwcag36ehdzoml
MacBook Battery Compatibility
0
496
6734
6460
2023-02-10T21:51:18Z
Inwerp
16
/* MacBook Pro 13" */
6734
wikitext
text/x-wiki
==Sourcing Replacement Batteries & Recommended Brands==
Broadly speaking, new or used OEM batteries are preferable to most anything else, but when that is not possible or practical, LMP and NewerTech are the two brands most commonly recommended by experienced techs in the Discord.
==MacBook Air==
MacBook Air 11" batteries are electrically compatible with all models. The 2010 battery (A1406) connector is physically in a different location and will not fit in the housing of the 2011-2015 battery (A1495). The 2010-2012 battery has a 35 Wh capacity vs the 2013-2015 at 38 Wh.
MacBook Air 13" unibody batteries are electrically compatible with all models. The 2010 (A1377) and 2011-2012 (A1405) battery have a lower capacity at 50 Wh 7.3 V vs the 2013-2017 battery (A1496) at 54 Wh.
==MacBook Pro 13"==
The MacBook Pro 13" unibody batteries are electrically compatible with all models. The 2009 battery has a lower capacity at 58 Wh vs the 2010-2012 battery (A1322) at 63.5 Wh 10.95 V.
The MacBook Pro 13" Retina 2012-E2013 batteries (A1437) are the same at 74 Wh.
The MacBook Pro 13" Retina L2013-2014 batteries (A1493) are the same at 71.8 Wh.
The MacBook Pro 13" Retina L2015 battery (A1582) is 71.8 Wh 13.05 V.
2015 13" Retina batteries will work in L2013-E2014 machines.
The MacBook Pro 13" Touchbar 4TBT L2016-M2017 battery (A1819) is 49.2 Wh 11.41 V.
The MacBook Pro 13" Touchbar 4TBT M2018-E2019 battery (A1964) is 58 Wh 11.41 V.
The MacBook Pro 13" Touchbar(A1708) 2TBT L2016-M2017 battery (A1713) is 54.5 Wh 11.41 V. This battery is also compatible with A2171 battery, no issue in AHT.
The MacBook Pro 13" Touchbar(2019Mid A2159, A2289 A2338) 2TBT 2018-2020 Battery A2171 is 58.2 Wh 11.41 V.
==MacBook Pro 15"==
[[File:Early-2013 vs 2015 Comparison.jpg|thumb]]
The MacBook Pro 15" 2009-2010 batteries are electrically compatible. The 2009 battery has a lower capacity at 73 Wh vs the 2010 battery (A1321) at 77.5 Wh.
The MacBook Pro 15" 2011-2012 batteries (A1382) are the same at 77.5 Wh.
The MacBook Pro 15" Retina 2012-E2013 batteries (A1417) are 95Whr at 10.95V. Comparison with 2015 shown in photo.
The MacBook Pro 15" Retina L2013-2014 batteries (A1494) are 95Whr at 11.26V.
(The MacBook Pro 15" Retina 2012-2014 batteries are the same capacity at 95 Wh 10.95 V. They are electrically compatible, but have the connector in a physically different location. 2012-E2013 (A1417) 2014 (A1494) [verify])
The MacBook Pro 15" Retina 2015 battery (A1618) has a capacity of 99.5Whr at 11.36V. WARNING: This battery is NOT compatible with A1494 or any other because a) voltage b) cable positioninig on haptic magnet c) connector position compared to 2012. For some reason it was listed as compatible on A1494 on this page below, we appologize for this error.
*'''NOTE:''' All 2015 15" MacBook Pros require a battery to power up and boot an operating system properly. Without a battery, a bare board will power on and display a low battery image on the screen, and will not chime. Some third-party batteries and damaged/depleted/expired batteries will allow the 2015 15" boards to ''attempt'' to boot an OS, but they may boot loop indefinitely with or without any user intervention (e.g. keyboard presses). This appears to have something to do with current draw, as it has been reported that disconnecting the trackpad cable may enable problematic batteries to boot boards completely. Previously it was noted that this behavior only occurs on the 820-00163 2015 15" logic board with discrete graphics, but all of the above behaviors have since been observed with multiple 820-00138 2015 15" logic boards that only have integrated graphics.
The MacBook Pro 15" Retina Touchbar 2016-2017 battery (A1820) has a capacity of 76Whr at 11.4V.
<br />
==MacBook Pro 17"==
The MacBook Pro 17" 2009E-2010M batteries are electrically compatible. Batteries (A1309) are the same at 95 Wh 7.3V
The MacBook Pro 17" 2011E-2011L batteries are electrically compatible. Batteries (A1383) are the same at 95 Wh 10.95V<br />
==Quick Reference List of Battery Compatibility==
Here is a quick list that I didn't make, but dukefawks posted a while back on the rossmann forum, this list is a quick lookup for which batteries work with which models.
A1278 2009-2012 = A1322
A1286 2009-2010 = A1321
A1286 2011-2012 = A1382
A1297 2009-2010 = A1309
A1297 2011-2011 = A1383
A1369 2010-2010 = A1377
A1369/A1466 2011-2012 = A1405
A1466 2013-2017 = A1396
A1370 2010-2010 = A1375
A1370/A1465 2011-2012 = A1406
A1465 2013-2015 = A1495
A1425 2012-2012 = A1437
A1502 L2013-2014 = A1493
A1502 2015 = A1582
A1398 2012-E2013 = A1417
A1398 L2013-2014 = A1494
A1398 M2015 = A1618
==Table for battery==
{| class="wikitable"
|-
!Model
!Battery
!Compatibility
|-
|A1278
|A1322
|A1322
|-
|A1369/A1466
|A1405
|A1377/A1405/A1496
|-
|A1465
|A1406
|A1406/A1495
|-
|A1398(2012-13)
|A1417
|A1417
|-
|A1398(2013-14)
|A1494
|A1494
|-
|A1398(2015M Haptic)
|A1618
|A1618
|-
|A1425
|A1437
|A1437
|-
|A1534
|A1705<br />
|A1527/A1705
|-
|A1502
|A1493
|A1493/A1582
|-
|A1502 (2015M Haptic)
|A1582
|A1493(lower capacity)
|-
|A1706(TB)
|A1819
|A1819
|-
|A1708
|A1713
|A1713
|-
|A1707
|A1820
|A1820
|-
|A1989
|A1964
|A1964
|-
|A2159
|A2171
|A1713, A2171
|-
|
|
|
|}
pky4oanxzwvoc5p3qwprcg0r2rhi5er
MacBook Board Layers
0
154
559
451
2020-02-02T11:30:42Z
Piernov
10
Category Mac MacBook
559
wikitext
text/x-wiki
== A1707 ==
=== Trackpad Connector ===
In case anyone else is fixing one of these nightmares keep these pictures around so you don't have to strip open a donor board too... A1707 trackpad connector. I checked both boards for the 1707, they are the same traces. layer 1 is the one you can see, layer 2 is another ground plane, layer 3 is the first picture, layer 4 is ground plane, layer 5 is the second picture. -- Paul S.
[[File:A1707 Layer 3.jpg|800x800px]]
[[File:A1707 layer 3.jpg|800x800px]]
[[File:A1707 scraped TP connector.jpg|800x800px]]
[[File:A1707 scraped TP connector zoom.jpg|800x800px]]
[[Category:Mac]] [[Category:MacBook]]
3595lcfvfuhh1xta3ottk0jxjmjvbge
MacBook Compatible Schematics and Diode Measurements
0
1412
3058
2020-10-06T15:50:49Z
Chrisb
1
Chrisb moved page [[MacBook Compatible Schematics and Diode Measurements]] to [[MacBook Compatible Schematics and Diode Mode Measurements]]
3058
wikitext
text/x-wiki
#REDIRECT [[MacBook Compatible Schematics and Diode Mode Measurements]]
jqs05rffm4qs99dbhyjoabzm8q27hxs
MacBook Compatible Schematics and Diode Mode Measurements
0
461
3057
1277
2020-10-06T15:50:49Z
Chrisb
1
Chrisb moved page [[MacBook Compatible Schematics and Diode Measurements]] to [[MacBook Compatible Schematics and Diode Mode Measurements]]
1047
wikitext
text/x-wiki
==Macbook==
=== 2016-2017 MacBook Retina ===
These two board should be very similar. [http://laptop-schematics.com Laptop-schematics] claims to have 820-00687, but it hasn't been verified.
* 820-00244
* 820-00687
==Macbook Air==
==Macbook Pro==
=== 2012-E2013 MacBook Pro 13" ===
Files exist for both, but 820-3190 is extremely rare.
* 820-3190
* 820-3462
=== L2013-2014 MacBook Pro 13" ===
These two are the same except for RAM, 820-3476 has 16 chips and 820-3536 has 8. Only 820-3536 files are available.
* 820-3476
* 820-3536
=== L2013-2015 MacBook Pro 15" ===
For the 820-00138 use 820-3662 with graphics related circuits and 820-00163 for Track Pad, SPI ROM, and stuff that changed on 2015 models. 820-00163 and 820-00426 are the same other then the DC-in MOSFET.
* 820-3662 (IG L2013)
* 820-00138 (IG 2015): only schematics are available and wrong for touchpad connector at least.
* 820-00163 (DG 2015)
* 820-00426 (DG 2015)
=== 2016-2017 MacBook Pro 13" Function Key model. ===
Only 820-00875 files are available. It doesn't have the PI3USB32224BXEAE chip that 820-00840 has. Otherwise similar.
*[[MacBook Diode Measurements#Macbook Pro 13 Inch 2016-2017 820-00875 820-00840|820-00875]]
*[[MacBook Diode Measurements#Macbook Pro 13 Inch 2016-2017 820-00875 820-00840|820-00840]]
=== 2016-2017 MacBook Pro 13" ===
* 820-00239
* 820-00923
=== 2016-2017 MacBook Pro 15" ===
There is a different schematics file, but the circuits are the same. Boardview is the same file, but there might be some slight difference on the actual board around the CD3215.
* 820-00281
* 820-00928
=== 2018-2019 MacBook Pro 15" ===
These should be very similar, [http://laptop-schematics.com Laptop-schematics] claims to have 820-01814, but they haven't been verified.
* 820-01041
* 820-01814
fvrokjr83ap3eruoebgwvmvm9rmet37
MacBook Datarecovery
0
2655
7708
2024-11-21T17:42:24Z
Inwerp
16
Created page with "== Theory == Since introduction of the integrated SSD Mac models, datarecovery is a huge challenge. '''Rule #1. If data is not backed up and device boots once during your repair - backup data first, finish the repair later. No matter what repair is that, non-backed up Mac is a great risk of losing customer's data. Thus if data is important, always ask for the password before even starting the repair. In some cases you might have 5-10 minutes untill device dies complet..."
7708
wikitext
text/x-wiki
== Theory ==
Since introduction of the integrated SSD Mac models, datarecovery is a huge challenge.
'''Rule #1. If data is not backed up and device boots once during your repair - backup data first, finish the repair later. No matter what repair is that, non-backed up Mac is a great risk of losing customer's data. Thus if data is important, always ask for the password before even starting the repair. In some cases you might have 5-10 minutes untill device dies completely and you will not be able to get to the data without a major effort'''
Mac does not allow direct disk access. This means using an sort of data recovery software is very limited and if SSD is failing you need to reduce possible working time and avoid doing a byteclone unless it is completely necessary or you cant map the data.
== Software ==
'''UFS Explorer Professional''' - Hands down best software ever written. It supports fusion drive, snapshot-based filesystem reconstruction and even basic cloning functionality. The most stable version is probably a windows one. Free license allows you to save small files and also preprocess filesystem so you can decide if it worth it. It costs around 700$ for a lifetime license with 1 year of free updates, and if used on regular basis - worth every dime.
'''OpenSuperClone''' - this software will help you to make a byteclone from a failing SSD drive. it is especially important if you are restoring from a filevault-encrypted drive which is not mountable.
'''gddrescue''' - basically same purpose OpenSuperClone, CLI. Allows a bit more fine-tuning if you know what are you doing.
'''iBoysoft / DiskDrill''' - somewhat usable software with ability to be run directly from the Recovery environment if its available. Filesystemanalyse is not as good as in UFS Explorer, also Mac-Only, most likely no or bad NTFS/ExFat support.
'''rsync / cp''' commands are very useful if you are able to get machine into single-user mode. to use rsync you need to find it under /usr/bin of the system partition. it also would not work on M1 since some dlibs would be missing. Rsync is able co continue copy process if its interrupted due to device crash.
== Intel Machines (T1, A1534, A1708) ==
these machines use just a normal integrated SSD drive. on A1706/A1707 it is soldered on board, however if you are skilled enough, you can transfer SSD to A1708 replacable SSD drive, it is identical.
A1534 2015-2017 use different SSD types, however some of them are compatible with SSD transfer. In most cases it would have a failed CPU, so the most efficient way to get data would be to slightly rehot the CPU and get it into the Target Disk mode. it is also a good idea to put a dry ice block underneath it to prolong its functional time and keep it close to room temperature during transfer.
== Target disk mode ==
on Intel macs Target disk mode is implemented in mac EFI and it is accessible by pressing T during init. Device will be visible as an external disk drive (not accesible by windows / linux machines). This mode is quite limited because because IO errors during data transfer will in most cases cause kernel panic on the host machine.
on M1 machines Target Disk Mode requires boot into the recovery environment and using "share disk" option. this mode is also Mac-only and mac will be visible as a local network device.
to use Target Disk you need to use usbc or usbc-usba cable with at least usb 2.0 wiring or better. Use known working machine to sind a cable which provides fast and stable data transfer, lable it and keep as a reference.
== Recovery Environment ==
if machine is able to boot into Recovery (CMD+R on Intel or 8 Sec Power on Apple Silicon machines), you will be able to access terminal or disk utility.
Disk utility is able to make image (DMG file) from folder, so you can use it to back up user folders to the external drive or even a network drive if USB ports are dead.
On M1 machines CMD + L during the diagnostics alows you to save machine boot and update logs into the external drive (it shows a strange dialog which offers you to "open" when in fact is it a save dialog).
Recovery Environment is probably the only method of getting data from M1+ machine, especially if it fails to log in(you type password and it shows unclickable "lets go" button behind fancy desktop background) after the Sequoia Update
== Data Transfer Tool and Utility (AASP only) ==
A1706 and A1707 have a "lifeboat" connector on board which is basically an interface to access PCI-E SSD Drive directly. There are grey-market SSD Transfering devices (only compatible with intel mac machines!) which allow to acces SSD directly.
On apple T2 machines there is a special iBSS image which is sideloaded into T2, allowing it to start Target Disk mode without Intel part (even if there is no CPU on board). it is only accesible for AASP providers, however if you a re lucky you might find one which is able to do that for you. There are also some methods of doing that using Checkmate exploit, however i never seen Data Transfer iBSS image in wild. most likely it would be some sort of patched iBSS + Ramdisk similar to one uploaded during DFU restore / revive to allow direct disk access and write BridgeOS)
gt9fw0nyganbrntzilc3on0voual0tf
MacBook Diode Measurements
0
1413
3060
2020-10-06T15:51:06Z
Chrisb
1
Chrisb moved page [[MacBook Diode Measurements]] to [[MacBook Diode Mode Measurements]]
3060
wikitext
text/x-wiki
#REDIRECT [[MacBook Diode Mode Measurements]]
dvd1ns5rvfpue8f94i8ov56yq0kv8vf
MacBook Diode Mode Measurements
0
223
6630
6563
2022-09-20T10:32:49Z
Alan.l
19
added usb-c
6630
wikitext
text/x-wiki
==820-01521==
J6000:
[[File:01521 J6000 Edited.jpg|alt=01521 J6000 Edited|800x800px]]
J6100:
[[File:01521 J6100 Edited.jpg|alt=01521 J6100 Edited|800x800px]]
J6620:
[[File:01521 J6620 Edited.jpg|alt=01521 J6620 Edited|800x800px]]
J6700:
[[File:01527 J6700 Edited.jpg|alt=01527 J6700 Edited|800x800px]]
J3300:
[[File:J3300 Edited.jpg|alt=J3300 Edited|800x800px]]
J8500:
[[File:J8500 Edited.jpg|alt=J8500 Edited|800x800px]]
<br />
==CD3215C==
[[File:CD3215C Chip off Board.jpg|alt=CD3215C Chip off Board|800x800px]]
==820-00426==
J3501:
[[File:820-00426 J3501 Edited.jpg|alt=820-00426 J3501 Edited|800x800px]]
J3700:
[[File:820-00426 J3700 Edited.jpg|alt=820-00426 J3700 Edited|800x800px]]
J4002:
[[File:820-00426 J4002 Edited.jpg|alt=820-00426 J4002 Edited|800x800px]]
J4801:
[[File:820-00426 J4801 Edited.jpg|alt=820-00426 J4801 Edited|800x800px]]
J4813:
[[File:820-00426 J4813 Edited.jpg|alt=820-00426 J4813 Edited|800x800px]]
J4915:
[[File:820-00426 J4915 Edited.jpg|alt=820-00426 J4915 Edited|800x800px]]
J6060:
[[File:820-00426 J6060 Edited.jpg|alt=820-00426 J6060 Edited|800x800px]]
J6100:
[[File:820-00426 J6100 Edited.jpg|alt=820-00426 J6100 Edited|800x800px]]
J6601:
[[File:820-00426 J6601 Edited.jpg|alt=820-00426 J6601 Edited|800x800px]]
J6602:
[[File:820-00426 J6602 Edited.jpg|alt=820-00426 J6602 Edited|800x800px]]
J6603:
[[File:820-00426 J6603 Edited.jpg|alt=820-00426 J6603 Edited|800x800px]]
J7000:
[[File:820-00426 J7000 Edited.jpg|alt=820-00426 J7000 Edited|800x800px]]
J7050:
[[File:820-00426 J7050 Edited.jpg|alt=820-00426 J7050 Edited|800x800px]]
J8300:
[[File:820-00426 J8300 Edited.jpg|alt=820-00426 J8300 Edited|800x800px]]
J9500:
[[File:820-00426 J9500 Edited.jpg|alt=820-00426 J9500 Edited|800x800px]]
J9510:
[[File:820-00426 J9510 Edited.jpg|alt=820-00426 J9510 Edited|800x800px]]
<br />
==Macbook 12 Inch 2016 820-00244==
Overall View 1:
[[File:00244 Overall Edited.jpg|alt=00244 Overall Edited|800x800px]]
J9600:
[[File:00244 J9600 Edited.jpg|alt=00244 J9600 Edited|800x800px]]
J6750:
[[File:00244 J6750 Edited.jpg|alt=00244 J6750 Edited|800x800px]]
J4801:
[[File:00244 J4801 Edited.jpg|alt=00244 J4801 Edited|800x800px]]
J6100:
[[File:00244 J6100 Edited.jpg|alt=00244 J6100 Edited|800x800px]]
J8500:
[[File:00244 J8500 Edited.jpg|alt=00244 J8500 Edited|800x800px]]
J6751:
[[File:00244 J6751 Edited.jpg|alt=00244 J6751 Edited|800x800px]]
J6799:
[[File:00244 J6799 Edited.jpg|alt=00244 J6799 Edited|800x800px]]
==Macbook Air 11 Inch 2013 820-3435==
Overall View 1:
[[File:3435 Overall View 1.jpg|alt=3435 Overall View 1|800x800px]]
J8300:
[[File:3435 J8300 Edited.jpg|alt=3435 J8300 Edited|800x800px]]
J6404:
[[File:3435 J6404 Edited.jpg|alt=3435 J6404 Edited|800x800px]]
J4800:
[[File:3435 J4800 Edited.jpg|alt=3435 J4800 Edited|800x800px]]
J7715:
[[File:3435 J7715 Edited.jpg|alt=3435 J7715 Edited|800x800px]]
J6950:
[[File:3435 J6950 Edited.jpg|alt=3435 J6950 Edited|800x800px]]
J6100:
[[File:3435 J6100 Edited.jpg|alt=3435 J6100 Edited|800x800px]]
J6000:
[[File:3435 J6000 Edited.jpg|alt=3435 J6000 Edited|800x800px]]
J7000:
[[File:3435 J7000 Edited.jpg|alt=3435 J7000 Edited|800x800px]]
J4002:
[[File:3435 J4002 Edited.jpg|alt=3435 J4002 Edited|800x800px]]
J9500:
[[File:3435 J9500 Edited.jpg|alt=3435 J9500 Edited|800x800px]]
==Macbook Pro 13 Inch 2016-2017 820-00875 820-00840==
''Please note, these readings were taken from a 2016. The 2017 should have identical readings.''
Overall View 1:
[[File:00875 Overall 1 Edited.jpg|alt=00875 Overall 1 Edited|800x800px]]
Overall View 2:
[[File:00875 Overall 2 Edited.jpg|alt=00875 Overall 2 Edited|800x800px]]
J6600:
[[File:00875 J6600 Edited.jpg|alt=00875 J6600 Edited|800x800px]]
J6603:
[[File:00875 J6603 Edited.jpg|alt=00875 J6603 Edited|800x800px]]
J4810:
[[File:00875 J4810 Edited.jpg|alt=00875 J4810 Edited|800x800px]]
J6100:
[[File:Overall J6100 Edited.jpg|alt=Overall J6100 Edited|800x800px]]
J6951:
[[File:00875 J6951 Edited.jpg|alt=00875 J6951 Edited|800x800px]]
J4801:
[[File:00875 J4801 Edited.jpg|alt=00875 J4801 Edited|800x800px]]
J6602:
[[File:00875 J6602 Edited.jpg|alt=00875 J6602 Edited|800x800px]]
J8500:
[[File:00875 J8500 Edited.jpg|alt=00875 J8500 Edited|800x800px]]
P13USB32 IC:
[[File:820-00840 P13.jpg|800x800px]]
[[File:CXMhriTlspAPXA6p.jpg|none|thumb|793x793px]]
<br />
==Macbook Pro 15 Inch 2016 Touch Bar 820-00281==
Overall View 1:
[[File:Overall View 1.jpg|alt=Overall View 1|800x800px]]
Overall View 2:
[[File:Overall View 2.jpg|alt=Overall View 2|800x800px]]
J4900:
[[File:J4900.jpg|alt=J4900|800x800px]]
J6600:
[[File:J6600.jpg|alt=J6600|800x800px]]
JB500:
[[File:00281 JB500.jpg|alt=00281 JB500|800x800px]]
J6500:
[[File:00281 J6500.jpg|alt=00281 J6500|800x800px]]
J9600:
[[File:00281 J9600.jpg|alt=00281 J9600|800x800px]]
J6100:
[[File:00281 J6100.jpg|alt=00281 J6100|800x800px]]
J4501:
[[File:00281 J4501.jpg|alt=00281 J4501|800x800px]]
J4500:
[[File:00281 J4500.jpg|alt=00281 J4500|800x800px]]
J6951:
[[File:00281 J6951.jpg|alt=00281 J6951|800x800px]]
J6410:
[[File:00281 J6410.jpg|alt=00281 J6410|800x800px]]
J4401:
[[File:00281 J4401.jpg|alt=00281 J4401|800x800px]]
J6200:
[[File:00281 J6200.jpg|alt=00281 J6200|800x800px]]
J3300:
[[File:00281 J3300.jpg|alt=00281 J3300|800x800px]]
J4402:
[[File:00281 J4402.jpg|alt=00281 J4402|800x800px]]
J8500:
[[File:00281 J8500.jpg|alt=00281 J8500|800x800px]]
==MacBook Pro 13 Inch 2016 Touch Bar 820-00239-A==
Overall View 1:
[[File:00239-Overall View 1 Edited.jpg|alt=Overall View 1 Edited|800x800px]]
Overall View 2:
[[File:Overall View 2 Edited.jpg|alt=Overall View 2|800x800px]]
J4900:
[[File:00239 J4900.jpg|alt=00239 J4900|800x800px]]
J6600:
[[File:00239 J6600.jpg|alt=00239 J6600|800x800px]]
JB500:
[[File:00239 JB500.jpg|alt=00239 JB500|800x800px]]
J6550:
[[File:00239 J6550.jpg|alt=00239 J6550|800x800px]]
J6500:
[[File:00239 J6500.jpg|alt=00239 J6500|800x800px]]
J9600:
[[File:00239 J9600.jpg|alt=00239 J9600|800x800px]]
J4500:
[[File:00239 J4500.jpg|alt=00239 J4500|800x800px]]
J4501:
[[File:00239 J4501.jpg|alt=00239 J4501|800x800px]]
J6951:
[[File:00239 J6951.jpg|alt=00239 J6951|800x800px]]
J6410:
[[File:00239 J6410.jpg|alt=00239 J6410|800x800px]]
J6430:
[[File:00239 J6430.jpg|alt=00239 J6430|800x800px]]
J4401:
[[File:00239 J4401.jpg|alt=00239 J4401|800x800px]]
J6200:
[[File:00239 J6200.jpg|alt=00239 J6200|800x800px]]
J3300:
[[File:00239 J3300.jpg|alt=00239 J3300|800x800px]]
J4402:
[[File:00239 J4402.jpg|alt=00239 J4402|800x800px]]
J8500:
[[File:00239 J8500.jpg|alt=00239 J8500|800x800px]]
==820-3209==
SMC:
[[File:SMC 820-3209-A Crop.jpg|alt=SMC 820-3209-A Crop|800x800px]]
==820-00165==
ISL6259:
[[File:ISL Edited.jpg|alt=ISL Edited|800x800px]]
J3501:
[[File:820-00165 J3501 Final.jpg|alt=820-00165 J3501 Final|800x800px]]
J3700:
[[File:820-00165 J3700 Final.jpg|alt=820-00165 J3700 Final|800x800px]]
J4002:
[[File:820-00165 J4002 Final.jpg|alt=820-00165 J4002 Final|800x800px]]
J4800:
[[File:820-00165 J4800 Final.jpg|alt=820-00165 J4800 Final|800x800px]]
J6000:
[[File:820-00165 J6000 FInal.jpg|alt=820-00165 J6000 FInal|800x800px]]
J6100:
[[File:820-00165 J6100 FInal.jpg|alt=820-00165 J6100 FInal|800x800px]]
J6404:
[[File:820-00165 J6404 Final.jpg|alt=820-00165 J6404 Final|800x800px]]
J6950:
[[File:820-00165 J6950 Final.jpg|alt=820-00165 J6950 Final|800x800px]]
J7000:
[[File:820-00165 J7000 Final.jpg|alt=820-00165 J7000 Final|800x800px]]
J7715:
[[File:820-00165 J7715 FInal.jpg|alt= 820-00165 J7715 FInal|800x800px]]
J8300:
[[File:820-00165 J8300 Final.jpg|alt=820-00165 J8300 Final|800x800px]]
J9500:
[[File:820-00165 J9500 Final.jpg|alt=820-00165 J9500 Final|800x800px]]
==MacBook Pro 13 Inch 2017 Touch Bar 820-00923-05==
(disclaimer : has partial touch)
J4900:<br>
<br>
1 470<br>
2 454<br>
3 gnd<br>
4 633<br>
5 451<br>
6 628<br>
7 683<br>
8 435<br>
9 471<br>
10 438<br>
11 603<br>
12 gnd
==MacBook Pro 16" 2021 A2442 820-02098==
[[File:A2442 820-02098 Diode measurnments.png|frameless|604x604px]]
[[File:A2442 820-02098 Secondary PMU.jpg|frameless|598x598px]]
<br />[[File:CD3215_Single_USB-C_Side_-_5V_0.05A.jpg|alt=CD3215 Single USB-C Side - 5V 0.05A]]<br />[[File:CD3215_Single_USB-C_Side_Unknown_IC_-_5V_0.05A.jpg|alt=CD3215 Single USB-C Side Unknown IC - 5V 0.05A]]
<br />
[[File:CD3215_bottom_USB-C_-_5V_0.25_-_0.05A.jpg|alt=CD3215 bottom USB-C - 5V 0.25 - 0.05A]]
[[File:A2442_TPS62180_ELC180_-_SSD_corner_Side_-_diode-measurements.png|alt=A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements]]
Some discussion on this board - [https://boards.rossmanngroup.com/threads/a2442-820-02098-5v-0-25a-0-05a-blown-cd3217-and-tps62180-elc180.62461/ A2442 820-02098 5V 0.25A -> 0.05A Blown CD3217 and TPS62180 ELC180]
__FORCETOC__
nqlsefdu0etozyb2zi72qnllwezxl94
MacBook GPU Repair
0
2654
7692
2024-09-03T21:01:06Z
Inwerp
16
Inwerp moved page [[MacBook GPU Repair]] to [[Mac GPU Repair]]
7692
wikitext
text/x-wiki
#REDIRECT [[Mac GPU Repair]]
fd258ny116zewa8qdpqofz1pzn3mspr
MacBook LCD Screen Compatibility
0
8
7104
7103
2024-05-06T13:20:56Z
TenkaiSp
1136
/* LCD cable compatibility */
7104
wikitext
text/x-wiki
==EEE codes==
To determine the original model of a screen use the EEE code. Look for this code under the 2D barcode on LVDS or right beside it.
An EEE code is a model number for the screen. Some model numbers are officially interchangeable, some are not. Some work or work partially regardless.
[[File:EEECODE.jpg|alt=|center|thumb|500x500px]]
==MacBook Air==
2010-2017 Airs have compatible LCDs 11 and 13 inch can be swapped for testing purposes.<br>
2013-2017 Airs are fully compatible.<br>
2010-2011 11" Airs have a shorter WIFI cable. 2012 is usable on 2010-2012.<br>
MacBook Air EEE codes:
{| class="wikitable"
|MacBook Air (13-inch, 2017)
|DN4R, DR2J, DYF4, F443, F444
|}
==MacBook Pro==
===13"===
*2009-2010 screen assemblies are fully compatible.
*2009-2012 LCDs are compatible but the wifi and camera connector is different for 2009-2010 than for 2011-2012, so they can only be used interchangeably for display purposes exclusively.
*2011-2012 screen assemblies are fully compatible, but the LVDS connector is slightly different and needs to be modified or replaced. See below. (The 2012 LVDS can plug in fine to a 2011 - But not the other way around)<br>
===15"===
*Late 2008 - Early 2009 screen assemblies are fully compatible, but only with each other. They have a different LCD that is not compatible with the later models.
*Mid-2009 - 2012 LCDs are compatible but the wifi and camera connector is different for 2009 than for 2010-2012, so 2009 assemblies can only be used interchangeably for display purposes exclusively.
*2010-2012 display assemblies are fully compatible, but the LVDS connector is slightly different for the 2012 units and so it would need to be modified or replaced if you're using a 2010 or 2011 screen assembly with a 2012 logic board, or vice versa. See below. Also, the 2010 screen assemblies only have two wifi antenna lugs built-in and the camera cable is shorter than what is ideal for connecting to a 2011 or 2012 logic board so you may have to get creative with your routing or trim down the subwoofer assembly plastic to make room for the cable to cut a corner. If you expose the internal acoustic chamber on the subwoofer assembly, it can be resealed easily with hot glue. <br />1<br />
===17"===
15 and 17 inch screens can not be swapped for testing purposes.<br>
<br />
===Connector Modification===
To use a 2010-2011 LCD with a 2012 logic board, you'll need to either replace the LVDS connector on the logic board with one compatible with the 2010-2011 era screen, or modify the display connector by trimming some plastic off of the edges.
Below are examples of a 2011 15in screen assembly being modified to work with a 2012 logic board:<gallery>
File:1 - Unmodded 2010-2011 A1286 LVDS Plug.jpg|Here's the LVDS plug from a 2010 or 2011 screen assembly in its original state.
File:2 - Unmodded 2010-2011 LVDS vs 2012 LVDS Port.jpg|Here's you can see that the 2010 and 2011 plug will not fit into a 2012 LVDS socket. '''DO NOT FORCE THE CONNECTION IN OR YOU CAN CREATE SHORTS AND DAMAGE THE SOCKET, LOGIC BOARD, OR SCREEN!'''
File:3 - Unmodded Top Closeup.jpg|Closeup of the unmodified LVDS
File:7 - Target for Cutting.jpg|You'll be removing this area with your flush cutters. The edge of the cutters should be right up against the edge of the little divot in the metal.
File:4 - Post-Mod Top Closeup.jpg|Here's what it looks like after being cut. You can see that the metal bends down. Precision here isn't of the UTMOST importance as long as it's properly aligned when it's plugged in.
File:5 - Post-Mod Bottom Closeup.jpg|Here's the bottom edge of that same plug post-modification.
File:6 - Post-Mod Fit in 2012 LVDS Port.jpg|And here you can see that the plug fits into the 2012 socket.
</gallery>
===='''TWO FINAL NOTES:'''====
#'''BE SURE TO CHECK FOR SHORTS AFTER YOU'VE INSERTED THE MODIFIED PLUG INTO THE SOCKET!''' You don't want your backlight voltage shunted straight to ground!
#You will likely need to remove the little clip that secures the plug into the socket as part of this mod. Two dots of hot glue behind the plug will work perfectly to secure the plug in place, and hot glue can be removed cleanly from whatever surface it's bonded to with isopropyl alcohol.
====A2141 MacBook Pro 16" cable====
there is pinout difference between 820-001700 and all other logicboards(check pins 14 and 16).
A2141 cable wont work on any other Macbook since backlight PWM lines are not present
<br />
==MacBook Pro Retina==
All Retina screen cables with hinges are compatible.
A1425 2012L 13" Retina could be tested with 13" or 15" 2013E Display. Unfortunately, 2013/13" Display has different Camera connector. <br>
For testing 13 and 15 inch screens of the same generation are compatible<br>
2012-E2013 are fully compatible<br>
L2013-2014 are fully compatible <br>
2015 is unique
MacBook Pro Retina EEE codes:
{| class="wikitable"
|MacBook Pro (Retina, 13-inch, Mid 2014)
|FD46, FF0H, FF0J, FF0K, FF14, FFJ4, FGFY, FGG0, FY1C, FY1F, FY1G, FY1H
|-
|MacBook Pro (Retina, 13-inch, Mid 2015)
|FW3D, FW3F, FW3G, FW3H, G1FQ, G1FR, G1FT, G1FV
|-
|MacBook Pro (Retina, 15-inch, Mid 2014)
|FD4N, FF0N, FF0P, FF0Q, FF20, FFG2, FFJ5, FFJ6, FY94, FY95, FY96, FY97
|-
|MacBook Pro (Retina, 15-inch, Mid 2015)
|FWKN, FWKP, FWKQ, FWKR, GCQ0, GCQ1, GCQ2, GCQ3
|}<br />
==MacBook Retina USB C==
2015-2017 are all compatible, with the exception of the sleep sensor. The 2015 has a single magnet for the sleep sensor while the 2016-2017 has two. Sleep and wake functionality could have issues but is untested.
MacBook Retina EEE codes:
{| class="wikitable"
|MacBook (Retina, 12-inch, 2015)
|FNQ5, FNQ6, FW19, FW1C, GP5H, GP5J
|-
|MacBook (Retina, 12-inch, 2016)
|GP5H,GP5J,GP5K,GP5L
|-
|MacBook (Retina, 12-inch, 2017)
|GP5H, GP5J
|}
<br />
==MacBook Air USB C==
2018-2020 13" Airs are fully compatible. (A1932-A2179) Correction: 2018 Macbook Air ALS is NOT compatible with 2019-2020 screen. This will cause keyboard backlight malfunction and boot/wakeup issues.
Macbook Air 2019 with Truetone will have no keyboard backlight / Als sensor with 2018 No TT screen EVEN if EMC number is the same. Backlight works on EFI login screen but shuts off once OS loads.
2020 MacBook Air M1 (A2337) is NOT compatible with models above
2020 MacBook Air M1 (A2337) will work on A2338. LCD and camera tested.<br>
2021 MacBook Air M1 is NOT compatible with models above.
A2338 M2 2022 screen compatibility, M1 A2338 screen everything works with the exception of true tone not showing up as an option. Brightness, camera, keyboard backlight, screen brightness/auto brightness all work fine.
<br />MacBook Air USB C EEE codes:
{| class="wikitable"
|MacBook Air (Retina, 13-inch, 2018, Intel, A1932
|HXMY, HXN0*, LM1M*, LM43
|-
|MacBook Air (Retina, 13-inch, 2020, Intel, A2179)
|PX4T, PX4V, JQLX, JQM0
|-
|MacBook Air (Retina, 13-inch, 2020, M1, A2337)
|NR8D, NR89, P3WW, P3WV
|}
====LCD cable compatibility====
2020 MacBook Air M1 (A2337) LCD cable (P/N 821-02721-A) and
2020 Macbook Air Intel (A2179) LCD cable (P/N 821-01552-A) are '''not''' compatible.
Cables look identical and are sometimes incorrectly listed as interchangeable.
==MacBook Pro USB C==
You can use A1708 screen to test A1990 and A1707 boards. There shuould be at least apple logo + Backlight.
2016-2017 TB and Fn key MacBook Pro screens are fully compatible.
2018-2019 TB MacBook Pro screens are fully compatible.
2017 Screen will work on 2018 model but it will glitch during boot + no truetone. can be used for testing/data recovery purposes.
2017 A1708 Screen will work on A1989 with a glitch on boot. Camera functionality works, but no ALS/Truetone (of course). Also, screen seems to be lit only by 60% max when booted to OS (Mainly because of missing ALS)
2018 A1989 820-00850 screen can be tested with A1708 (820-00875) logic boards. Backlight and image confirmed working. Camera and ALS not working. Sleep not tested.
2020 A2289 / 820-01987 screen can be tested with A1708 (2016/17) logic board. Confirmed that screen brightness functions and ALS works, but the camera is not recognized
2020 Intel A2251 / A2289 Screen Assemblies are fully compatible with 2018 A1989 and 2019 A2159 by several reports. The blown 5V Camera Line on LVDS Cable and 5V Camera Coil on the 2018 A1989 logic board were most likely caused by 2016/2017 A1706/A1708 Screen Assembly.
2020 A2338 / 820-02020 LCD is wired differently and will not work on intel boards.
2020 A2338 / 820-02020 LCD will work on MacBook Air A2337 (not sure about the camera though, which I haven't tested)
2019-2020 A2141 Macbook Pro 16" display should work on all similar logicboards but you need to use A1707 EDP cable since 820-001700 only uses i2c line to control the backlight, A1707 uses PWM as secondary control line. A2141 display confirmed working on A1707 motherboard -Francis.
[[File:Edp_pinout.png|none|thumb]]
MacBook Pro USB C EEE codes:
{| class="wikitable"
|MacBook Pro (Retina, 13-inch, 2017, 2TBT, Intel, A1708)
|GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2
|-
|MacBook Pro (Retina, 13-inch, 2016, 2TBT, Intel, A1708)
|GJTF, GJTG, H19V, H19W, H9T5, H9T6, HG9J, HG9K, HG9L, HG9M, J6N2, J6N3
|-
|MacBook Pro (Retina, 13-inch, 2017, 4TBT, Intel, A1706)
|GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2
|-
|MacBook Pro (Retina, 13-inch, 2016, 4TBT, Intel, A1706)
|GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2
|-
|MacBook Pro (Retina, 13-inch, 2020, 4TBT, Intel, A2251)
|J462, J463, J465, J466, J6W9, J6WC, J6WD, J6WF, J6WG, J6WH, MJFX, MJFY, PPCR, PXGR, PXGT, PXGV
|-
|MacBook Pro (Retina, 13-inch, 2020, 2TBT, M1, A2338)
|NTJH, NTJJ, NTJF
|}
{| class="wikitable"
|+
|MacBook Pro (Retina, 16-inch, 2019, 4TBT, Intel, A2141)
|D07CL
|}
<br>
==Connectors==
2009-2011 MacBook Pro 13" LVDS connectors are compatible. Part is I-Pex 20474-030E. They will work with a 2012 display but need to be forced<br>
L2008-2011 MacBook Pro 15" and 17" LVDS connectors are compatible. Part is I-Pex 20474-040E. They will work with a 2012 display but need to be forced<br>
2012 MacBook Pro 13": Part is I-Pex 20525-130E. Pin-out is the same as on the 2011 model.<br>
2012 MacBook Pro 15": Part is I-Pex 20525-140E. Pin-out is the same as on the 2011 model.<br><br>
The following use the same connector (can be purchased [https://store.rossmanngroup.com/index.php/l3-macbook-pro-air-and-retina-lvds-lcd-connector.html here]):<br>
2010-2017 MacBook Airs, both 11" and 13". Part is I-Pex 20525-130E. <br>
2012-2015 MacBook Pro, both 13" and 15" including the non Retina models. Part is I-Pex 20525-130E. <br>
iPad 2
[[Category:Mac]]
[[Category:MacBook]]
fvmo5wc67qw575caeiq9kjk34d32e3c
MacBook NAND List
0
2218
7654
7608
2024-08-23T10:21:11Z
Danila17
945
/* 512 GB total capacity (Hynix) */
7654
wikitext
text/x-wiki
Hello all!
Below is a list of different NANDs on MacBooks
==T2 Nand support==
T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage
T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1TB , 2TB , 4TB , 8TB of Storage
Known types of RAM + APL number:
*APL1027 (T2 itself)
*339S00467 - 2GB
*339S00533 - 1GB
Known Ram codes(apl code does not match one in BOM table, so there might be other variants):
-h9hknnn8kumuvr - 1GB Hynix Chip.
-D9LVN - Micron 1GB
- h9hkNNNBRUMUVR - Hynix 2GB
==MacBook Pro==
===MacBook Pro 2018 (A1990 15")===
====256GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4227(128G)
|-
|U8700
|TSB4226(64G)
|-
|U8800
|TSB4226(64G)
|-
|U8900
|TSB4226(64G)
|}
===MacBook Pro 2019 (A1990 15")===
====512GB (Toshiba) (Black version is TSB3227)====
{| class="wikitable"
|U8600
|TSB4228(128G)
|-
|U8700
|TSB4228(128G)
|-
|U8800
|TSB4227(128G)
|-
|U8900
|TSB4227(128G)
|}
===MacBook Pro 2019 (A2141 16")===
====512GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4227(128G)
|-
|U9100
|TSB4227(128G)
|-
|U9200
|TSB4227(128G)
|-
|U9300
|TSB4227(128G)
|-
|U9400
|TSB4227(128G)
|}
====1Tb (Toshiba)====
{| class="wikitable"
|U8600
|TSB4228(192G)
|-
|U9100
|TSB4228(192G)
|-
|U9200
|TSB4228(192G)
|-
|U9300
|TSB4228(192G)
|-
|U9400
|TSB4228(192G)
|}
====2TB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4232(320G)
|-
|U8700
|TSB4232(320G)
|-
|U8800
|TSB4228(128G)
|-
|U9100
|TSB4232(320G)
|-
|U9200
|TSB4232(320G)
|-
|U9300
|TSB4232(320G)
|-
|U9400
|TSB4232(320G)
|}
===MacBook Pro 2019 (A2159 13")===
===='''128GB (Hynix)'''====
{| class="wikitable"
|U8600
|H23QFG82D6ADQ(64G)
|-
|U8700
|H23QFG82D6ADQ(64G)
|}
====256GB (Hynix)====
{| class="wikitable"
|U8600
|H23Q1T83G6ADQ(128G)
|-
|U8700
|H23QFG82D6ADQ(64G)
|-
|U8800
|H23QFG82D6ADQ(64G)
|-
|U8900
|H23QFG82D6ADQ(64G)
|}
====256GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4227(128G)
|-
|U8700
|TSB4226(64G)
|-
|U8800
|TSB4226(64G)
|-
|U8900
|TSB4226(64G)
|}
====512GB (SanDisk)====
{| class="wikitable"
|U8600
|SDSBFBGI6(128G)
|-
|U8700
|SDSBFBGI6(128G)
|-
|U8800
|SDSBFBGI4(128G)
|-
|U8900
|SDSBFBGI4(128G)
|}
====512GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4228(128G)
|-
|U8700
|TSB4228(128G)
|-
|U8800
|TSB4227(128G)
|-
|U8900
|TSB4227(128G)
|}
=== MacBook Pro 2020 (A2251 13" 4TB) ===
==== 1TB (Hynix) ====
{| class="wikitable"
|U8600
|H23Q2T84K6AEQ (256G)
|-
|U8700
|H23Q2T84K6AEQ (256G)
|-
|U8800
|H23Q2T84K6AEQ (256G)
|-
|U8900
|H23Q2T84K6AEQ (256G)
|}
==MacBook Air==
===MacBook Air 2018 (A1932 13")===
====128GB (Hynix)====
{| class="wikitable"
|U8600
|H23QFG82D6ADQ(64G)
|-
|U8700
|H23QFG82D6ADQ(64G)
|}
====128GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4226(64G)
|-
|U8700
|TSB4226(64G)
|}
====256GB (Hynix)====
{| class="wikitable"
|U8600
|H23Q1T83G6ADQ(128G)
|-
|U8700
|H23Q1T83G6ADQ(128G)
|}
====256GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4227(128G)
|-
|U8700
|TSB4227(128G)
|}
====512GB (Toshiba)====
{| class="wikitable"
|U8600
|TSB4232(256G)
|-
|U8700
|TSB4229(256G)
|}
==MacBooks M1 NANDs replacement==
===Information about NAND replacement on MacBook M1===
On macbooks with an M1 processor and higher, the same principle applies as on T2 devices, namely, in order to replace the SSD, it is necessary to transfer a set of memory chips from the donor observing the positional numbers on the board. At the time of writing this message, the JC P13 programmer does not support reading and writing configurations for M1 laptops, so the only way is to install chips from a donor.
===MacBooks Pro / Air M1 (A2337 / A2338) NANDs configurations===
====256 GB total capacity (Toshiba)====
{| class="wikitable"
|UN000
|KICM232 (128GB)
|-
|UN100
|KICM225 (128GB)
|}
'''256 GB total capacity (Hynix)'''
{| class="wikitable"
|UN000
|H23B1T82D7AEQ(128GB)
|-
|UN100
|H23B1T82D7AEQ(128GB
|}
====512 GB total capacity (Toshiba)====
{| class="wikitable"
|UN000
|KICM233 (256GB)
|-
|UN100
|KICM227 (256GB)
|}
====512 GB total capacity (Hynix)====
{| class="wikitable"
|UN000
|H23B2588H7AEQ-BC (256GB)
|-
|UN100
|H23B2T83G7AEQ-BC (256GB)
|}
====1 TB total capacity (Toshiba)====
{| class="wikitable"
|UN000
|KICM229 (512GB)
|-
|UN100
|KICM229 (512GB)
|}
====1 TB total capacity (SanDisk)====
{| class="wikitable"
|UN000
|SDREGJHIH (512GB)
|-
|UN100
|SDREGJHIH (512GB)
|}
====2 TB total capacity (Toshiba)====
{| class="wikitable"
|UN000
|KICM223R (1TB)
|-
|UN100
|KICM223R (1TB)
|}
====2 TB total capacity (Hynix)====
{| class="wikitable"
|UN000
|H23B8T85K7AFJ-BC(1TB)
|-
|UN100
|H23B8T85K7AFJ-BC(1TB)
|}
== MacBooks Pro M1 (A2442-A2485) NANDs replacement ==
== MacBooks M2 NANDs replacement ==
=== MacBooks Air M2 (A2681) NANDs configurations ===
==== 256 GB total capacity (Toshiba) ====
{| class="wikitable"
|UN000
|KICM5224 (256GB)
|}
3kbbfdbvap705lyzoy7h1dwuqfggjl5
MacBook OEM, Aftermarket, and Knock-Off Batteries
0
1754
6773
6466
2023-03-01T17:45:26Z
Inwerp
16
/* Battery diagnostic and troubleshooting */
6773
wikitext
text/x-wiki
==Batteries==
===MacBook Pro 13" A1502 2015E Model: A1582===
[[File:A1582 OEM TOP.jpg|none|thumb|860x860px|PCB Manufactured by COMPEQ, Controller BQ20Z451, board is secured with torx screws (Most knockoffs use philips)]]
[[File:A1582 OEM BOTTOM.jpg|none|thumb|860x860px|Every cell has QR code and lots of numbers including unique serial number]]
[[File:A1582 OEM PCB.jpg|none|thumb|860x860px|Main terminals are welded instead of being soldered, it also uses battery balancing wires and thermal couple (absent on almost all knockoff batteries). 15A fuse is clearly seen. ]]
[[File:A1582 OEM TEMP.jpg|none|thumb|860x860px|Thermal cutoff device is present on every cell, thermal couple also visible in center]]
<br />
===Macbook Pro 15" A1398 2013L-2014M Model: A1494===
Original battery disassembled from untouched device. [[File:A1494_OEM_TOP.jpg|alt=|none|thumb|860x860px|Allmost all components secured with strong adhesive, gold plating]]
<br />
[[File:A1494_OEM_BOTTOM.jpg|alt=|none|thumb|860x860px|Every cell marked with QR code and some sort of serial number (last line)]]
[[File:A1494_OEM_PCB.jpg|alt=|none|thumb|860x860px|PCB Manufacturer is COMPEQ (Same as all Logicboards). Thermocouple present (absent on most Knock-off boards). Smartbattery controller: BQ20Z451]]
[[File:A1494 OEM TEMP.jpg|none|thumb|860x860px|Every cell has HC77AY-1 Thermal Cutoff Device placed on input. ]]
<br />
===Macbook Pro 15" A1398 Early 2013 Model: A1417===
[[File:A1417 battery for A1398 adh pattern 1fixed.jpg|alt=|none|thumb|850x850px|A1417 battery for A1398 MacBook Pro Early 2013 adhesive pattern reference 1]]
[[File:A1417 battery for A1398 adh pattern 2.jpg|alt=|none|thumb|850x850px|A1417 battery for A1398 MacBook Pro Early 2013 adhesive pattern reference 2, for those that have brains that work differently.]]
<br />
===Macbook Pro 13" A1706 Touch Bar 2016 Model: A1819===
Original battery disassembled from untouched device.
[[File:A1819 recto.jpg|alt=|none|thumb|860x860px|A1819 recto (manufacturer : Simplo Technology (Changshu) Inc.]]
[[File:A1819 recto pcb.jpg|alt=|none|thumb|860x860px|A1819 recto pcb]]
[[File:A1819 verso.jpg|alt=|none|thumb|860x860px|A1819 verso]]
[[File:A1819 verso pcb.jpg|alt=|none|thumb|860x860px|A1819 verso pcb (black sticker peeled off)]]
[[File:A1819 verso thermalcouple.jpg|alt=|none|thumb|860x860px|A1819 verso thermalcouple (one per cell)]]<br />
==Aftermarket Batteries==
===MacBook Pro 13" A1502 2015E Model: LMP A1582===
[[File:Macbook Pro-2015-13-A1502-A1582-front-LMP.jpg|alt=|none|thumb|860x860px|LMP is a Swiss firm, manufacturing in China. it is delivered in fancy package with glue remover and pry tool. Glue remover is toulene, not recommended. Got EC / TÜV certificates, does not even try to look like OEM-Apple battery. AHT Test passes with no hardware issues found, system information reveals same serialnumbr as on sticker. ]]
[[File:Macbook Pro-2015-13-A1502-A1582-back.jpg|alt=|none|thumb|860x860px|Back side of the board. Note much more advanced design compared to regular knock-offs. Thermal pair is present and balanced charging implemented. Pretty suprised, instead of battery controller it actually uses ARM Microcontroller Atmel samd 10u. This board should not be considered as cheap aftermarket since it implements pretty decent charging scheme with high level of control and cell balancing capability. Quite expensive 300LSE adhesive is probably not the best choice, so i would rather replace it with floam before installing.]]
[[File:Macbook Pro-2015-13-A1502-A1582-front2.jpg|alt=|none|thumb|860x860px|Exposed cell packs, completely blank front side of the PCB]]
===Apple MacBook Pro 15 A1398 (Late 2013, Mid 2014) Model: LMP A1582===
[[File:LMP A1494 Front.jpg|none|thumb|860x860px|Pretty solid battery. Full balance-charging implemented, temperature sensor could be found in the middle of the battery. Compared to Apple betterie, No thermal-protection devices on individual cells.]]
[[File:LMP A1494 Board.jpg|none|thumb|860x860px|Some basic liquid protection like on Apple batteries. Slowburn fuse, thermal pair. Controller is the same Atmel SAMD10U]]
===Battery diagnostic and troubleshooting===
This is an old article. New one is here: [[MacBook battery diagnostics and repair]]
Clean AHT does not necessarily mean that battery is fine. The most basic thing you should expect to measure is output voltage as soon as SYSTEM_DETECT_L is pulled low. On many modern boards it is pulled down by mosfet which means it means to have ppbus BEFORE battery will be activated on (after you plug the charger it will pull the switch down and activate the battery). If you do not have the charger (say, cd3215 is blown and you have to recover data urgently) you can find this circuit on your board and simply pull this line to ground for a short period of time. This will enable battery and allow you to safely recover the data before proceeding to fix cd3215/17 circuit.
The second thing to expect is communication. if battery outputs voltage, it SHOULD communicate.
Many macbooks like A1398 15" DG need good battery to fully boot and properly work. MacBook Pro 16" will throttle with a bad battery and will blow full fan if no battery is present (however it will fully boot).
To diagnose Smartbattery controller you need special equipment. There are few devices to reprogram the batteries. Unfortunately it is a mixed experience since most of them are requiring subscription and also known for spying on their customers (they check how many batteries you reset, they limit you to replace SSD / CPU in your bench PC, etc). The only known tool without this kind of arrogance is MBRT /Macbook Battery Repair Tool) which is extremely hard to get in US/EU.
If battery is clean and "should be working", there is still a chance that internal fuse is blown and battery will still report good condition. Personally i do not recommend recelling batteries and never plan to. LiPOL Chemistry is not a rocket science but if done unproperly - life dangerous. I am using this device purely to keep stocked batteries in a good shape + charge batteries in case of urgent data recovery.
I am currently developing adapter board for all common apple connectors, so this section will be improved later.
<br />
9wp6u5toarz5pxnd7c8ikbswll269rr
MacBook OEM and Knock-Off batteries
0
1880
5547
2021-02-04T11:53:12Z
Inwerp
16
Inwerp moved page [[MacBook OEM and Knock-Off batteries]] to [[MacBook OEM, Aftermarket and Knock-Off batteries]]: Better page description
5547
wikitext
text/x-wiki
#REDIRECT [[MacBook OEM, Aftermarket and Knock-Off batteries]]
2da478ofggigea9hlqe4a2vvcg0wyfq
MacBook Parts List
0
138
6885
6881
2023-07-25T09:02:21Z
Zave
991
/* Parts & Compatibility */ add some part link
6885
wikitext
text/x-wiki
=='''Trusted Retailers'''==
'''Board Components:'''
[http://www.mouser.com www.mouser.com] (USA)
[http://www.mouser.ca www.mouser.ca] (Canada)
[http://www.digikey.com www.digikey.com] (USA)
[http://www.digikey.ca www.digikey.ca] (Canada)
[http://www.mobilesentrix.com www.mobilesentrix.com] (USA)
[http://www.mobilesentrix.ca www.mobilesentrix.ca] (Canada)
http://www.heisener.com (China)
https://chipdatas.com (China)
'''Parts & Complete Logic Boards:'''
[http://www.protechrestore.com www.protechrestore.com] (USA)
[http://www.deviceparts.com www.deviceparts.com] (China)
[http://www.unionrepair.com www.unionrepair.com] (China)
[http://www.onebitetechnology.ca www.onebitetechnology.ca] (Canada)
=='''Stencils'''==
Stencils:
*General MacBook stencil kit from [https://www.aliexpress.com/item/33006894821.html?spm=a2g0o.productlist.0.0.10e34b70Cpjb4N&algo_pvid=b4cbe29d-1fc3-4039-a84c-ffed078e8896&algo_expid=b4cbe29d-1fc3-4039-a84c-ffed078e8896-2&btsid=0be3764315896326058074910ef401&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ AliExpress] (please notice there are five pieces)
*Stencil kit for CD3215 and CD3217 from [https://www.aliexpress.com/item/4001335999851.html Aliexpress]
=='''Parts & Compatibility'''==
MacBook Air 2018-2020 Themal Grease part number: x-23-7868-2d
GPU/MCP Capacitor:
*A1286 2009-2010 A1297 2009-2010 [https://www.mouser.com/ProductDetail/667-2TPE330MADGB 2TPE330MADGB] <-- This is the exact [https://caps.wiki/wiki/Main_Page capacitor], however I recommend the larger Polymer Cap below. I'll leave this up for discussion.
*Replace with [https://www.mouser.com/ProductDetail/667-EEF-LX0D331R EEF-LX0D331R](These are non-tantalum and have 3 pads instead of 2 so you don't have to scrape into the board)
Backlight drivers:
*A1466 2013-2017: [https://www.mouser.com/ProductDetail/Texas-Instruments/LP8550TLX-A-NOPB?qs=sGAEpiMZZMsE420DPIasPp5tEEXBF6h%252BuFbkYiwyIS73ZkAnA%2Fkmuw%3D%3D LP8550TLX] Subsitute: [https://www.mouser.com/ProductDetail/Texas-Instruments/LP8550TLE-NOPB?qs=sGAEpiMZZMsE420DPIasPlogyTiw5LxrZVnzodlyt%252BM%3D LP8550TLE] or [https://www.digikey.com/product-detail/en/texas-instruments/LP8550TLE-NOPB/296-39068-1-ND/5143097 LP8550TLE]
*A1502, A1706, A1707, A1708, A1989, A1990 [https://store.rossmanngroup.com/b4-lp8548b1sq.html LP8548B1SQ]
Backlight Fuses:
*Various models (32V 3A 0603): [https://www.mouser.com/ProductDetail/693-3412.0121.22 3412.0121.22] & [https://www.mouser.com/ProductDetail/576-0467003.NRHF 0467003.NRHF]
CPU MOSFETs:
*A1398 L2013-2015 IG: [https://www.mouser.com/ProductDetail/512-FDMF6708N FDMF6708N] or [https://www.mouser.fr/ProductDetail/512-FDMF3030/ FDMF3030] replaces FDMF6808N
*A1466/A1465 2013-2017: High:[https://www.mouser.com/ProductDetail/Vishay-Siliconix/SISA18DN-T1-GE3?qs=%2Fha2pyFaduhTwVi4%2FNVcCTxbqBwveEaZWrbfNHiQwSw%3D SISA18DN] Low: [https://www.mouser.com/ProductDetail/Vishay-Semiconductors/SISHA12ADN-T1-GE3?qs=UkDUCjYnTB11vuPTlzSINA%3D%3D SISA12DN]
Temp monitoring sensor
*Various models [https://www.digikey.com/product-detail/en/microchip-technology/EMC1704-2-AP-TR/EMC1704-2-AP-CT-ND/4490160 EMC1704]
PP3V3_G3H/PP3V42 Buck Converter:
*A1707: [https://www.mouser.com/ProductDetail/700-MAX77596ETBB%2b MAX77596ETBB] & [https://www.mouser.com/ProductDetail/700-MAX77596ETBC%2b MAX77596ETBC+]
PP3V3 & 5V Buck Converter
*U9850 6142E can be replaced with pi3vdp
*Various models: [https://www.mouser.com/ProductDetail/595-TPS22924BYZZR TPS22924BYZZR]
*Older MacBook Pros: U7200 U7201 [https://www.mouser.com/ProductDetail/595-TPS51125RGER TPS51125RGER]
*A1708: [https://chipdatas.com/item/8512212-TPS2052BDR.html TPS51980A] ([https://chipdatas.com/item/2hdgb8bvh-TPS51220.html TPS51220] closest Ti public available part [https://www.ti.com/lit/ds/symlink/tps51220.pdf?ts=1593200325335&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTPS51220 data sheet])
Trackad IPD Flex Connector:
*A1466/A1465 2013-2017: TF13BS-20S-0.4SH Source: [https://beetstech.com/product/trackpad-connector-20-pin US] [https://www.aliexpress.com/item/4000134694943.html?spm=a2g0o.productlist.0.0.35b35435K2Otze&algo_pvid=422ee6cb-1cd2-49ff-8fae-ae019aac8008&algo_expid=422ee6cb-1cd2-49ff-8fae-ae019aac8008-2&btsid=716fe582-a800-41fc-8559-0f99d03feae8&ws_ab_test=searchweb0_0,searchweb201602_5,searchweb201603_53 China]
V Sync Flex Cable:
*A1311 A1312: [https://www.aliexpress.com/item/1998618174.html?spm=a2g0s.9042311.0.0.57024c4d6R0FdH *Need part number and US source] [https://www.mouser.com/ProductDetail/538-15267-0721 Need to test 15267-0721]
*A1312 2009: MFG 593-1049-A or APN 922-9161. May have to get off of eBay
Battery ISL:
*A1706 A1707 A1708: [https://store.rossmanngroup.com/index.php/x5-isl9239.html ISL9239] (Custom chip)
*MBP 2010-2015 MBA 2010-2017 U7000 U7100 [https://store.rossmanngroup.com/index.php/t8-isl6259ahrtz.html ISL6259]
PPBUS MOSFETs:
*A1466/A1465 2013-2017: [https://www.mouser.com/ProductDetail/863-NTMFD4902NFT1G NTMFD4902NFT1G]
*A1278/A1286 2012: High/Low: [https://www.mouser.com/ProductDetail/Renesas-Electronics/RJK03M5DNS-00J5?qs=%2Fha2pyFaduhWHsysA2gioi05ld94IUfqj5XvvZJXmV%2FAjt%2FDRXuJ1g%3D%3D RJK03M5DNS] (Verify)
USB C Port
*A1706 A1707: [https://store.rossmanngroup.com/index.php/za2-cd3215c00.html CD3215C00] (Custom chip)
*USB-C [https://aliexpress.com/item/1005002460226377.html Board side connector] (official name NOVASTACK®35-HDP)
ISL95870HRUZ-T U8110/U7710 on 820-01598/A2159 and 820-01987/A2289 for example [https://au.mouser.com/ProductDetail/Renesas-Intersil/ISL95870HRUZ-T?qs=dAsayXGOMrtdrjLaFukZjg== Mouser] [https://www.digikey.com/en/products/detail/renesas-electronics-america-inc/ISL95870HRUZ-T/2551659 Digikey]
2011 A1286 A1297 dosdude1 DeMUX Tools:
*GMUX Header [https://www.digikey.com/product-detail/en/0781715006/WM5408CT-ND/2769882?utm_medium=email&utm_source=oce&utm_campaign=2988_OCE19RT&utm_content=productdetail_US&utm_cid=519125&so=62184659&mkt_tok=eyJpIjoiWldFeE56RmpNV0ZsTVdSbSIsInQiOiJGWGsyaFBNTjRHQU00R2pU 0781715006]
*Lattice to GMUX Wire Housing [https://www.mouser.com/ProductDetail/538-36920-0602 36920-0602]
*Programmer [https://www.ebay.com/itm/163044311540 Lattice HW-USBN-2A ICSP FPGA]
*JTAG KIT (Alternative) 1. [https://www.mouser.de/ProductDetail/538-78171-5006 Molex connector] PN: 78171-5006 2. [https://www.mouser.de/ProductDetail/538-78172-5006 Molex connector (cable side)] PN: 78172-5006 3. [https://www.mouser.de/ProductDetail/538-79758-1010 Wires] PN: 79758-1010
*[https://aliexpress.com/item/4001238375263.html?af=843361&utm_campaign=843361&aff_platform=portals-tool&utm_medium=cpa&dp=3620ec0b19e66caf6cb2032b4b11c774&aff_fcid=50c941829a354024ba568a6721e46420-1617222034437-05922-_ePNSNV&cv=47843&aff_fsk=_ePNSNV&mall_affr=pr3&sk=_ePNSNV&aff_trace_key=50c941829a354024ba568a6721e46420-1617222034437-05922-_ePNSNV&terminal_id=4f535b2aee21440d88514f606261a6ee&tmLog=new_Detail&utm_source=admitad&utm_content=47843 pogo pins] + [https://oshpark.com/shared_projects/x8CMvEG2 board]
EMI shielding tape (need to verify which is closest to OEM):
*[https://hollandshielding.com/Mu-ferro-tape-foil holandshieldshielding]
*[https://www.digikey.com/catalog/en/partgroup/86750-conductive-fabric-tape/49522 DigiKey]
*[https://www.amazon.com/Conductive-Fabric-Adhesive-Laptop-Shielding/dp/B019OTRL5Y Amazon]
*[https://www.3m.com/3M/en_US/company-us/all-3m-products/~/3M-EMI-Shielding-Fabric-Tape-CN-4490/?N=5002385+3293415075&rt=rud 3M (Obsolete)]
*[https://www.mouser.se/ProductDetail/3M-Electronic-Specialty/AL-36FR?qs=sGAEpiMZZMtQwYqzsFSgXLiXf0JbOX2MTP63nOiCDLU%3D 3M (test this)]
Display connectors:
*2012+ 30 pin I-PEX 20525-030E-01S (must contact to order)
Keyboard FPC Cable Connector:
*MB/MBP A1342 A1278 A1286 A1297 [https://www.ebay.com/itm/10pcs-Keyboard-FPC-Cable-Connector-For-MacBook-Pro-A1342-A1278-A1286-A1297-JIsz/202867576968?hash=item2f3bd99088:g:Dh8AAOSwnAJeBbKK ebay US] [https://www.ebay.com.au/itm/10pcs-Keyboard-FPC-Cable-Connector-For-MacBook-Pro-A1342-A1278-A1286-A1297-JIsz/202867576968?_trkparms=aid%3D1110006%26algo%3DHOMESPLICE.SIM%26ao%3D1%26asc%3D20131003132420%26meid%3D0c54979636704ce199147cefa1bcd17d%26pid%3D100005%26rk%3D5%26rkt%3D12%26mehot%3Dpf%26sd%3D330972574623%26itm%3D202867576968%26pmt%3D1%26noa%3D0%26pg%3D2047675%26algv%3DSimplAMLv5PairwiseWeb%26brand%3DUnbranded&_trksid=p2047675.c100005.m1851 eBay AU]
Keyboard Backlight Connector
*A1502 and a variety of other boards see [https://imgur.com/a/QC0pKxk here] Verified on 820-3476 (J4915) MPN - [https://au.mouser.com/ProductDetail/656-AA07A-S010VA1R6 WP7A-S010VA1-R6000] Note this is a 10 position socket.
I/O to Logic Board Connector
*MacBook Air 11" A1465 and 13" A1466 [https://beetstech.com/product/io-to-logic-board-connector-48-pin J4700 and J9500]
820-00840 Q3100 FDPC 4044
*[https://www.digikey.com.au/product-detail/en/on-semiconductor/FDPC4044/FDPC4044CT-ND/4494096?utm_adgroup=ON%20Semiconductor&utm_source=google&utm_medium=cpc&utm_campaign=Dynamic%20Search_EN_Suppliers&utm_term&productid&gclid=Cj0KCQjwtZH7BRDzARIsAGjbK2YKVHWh3rYghm6ga-F-B5i5ggmqOlpdfHD-Q31V7PbNaBIz2EAz4nkaAg1SEALw_wcB&fbclid=IwAR21wJyOLUeXrKaHd077NUnmCGc9oaxO5w-dj30uQeULSiqeLNyGMV7whho N channel MOSFET]
Extension cables
*[https://www.aliexpress.com/item/1005001860231489.html iPex eDP (USB C models) display test extension] (works as an extension cable without removing from chassey)
*[https://www.aliexpress.com/item/32910194485.html?spm=a2g0o.productlist.0.0.590a3e31rbKSFs&algo_pvid=f840fded-838c-4301-ace7-aff94df0406d&algo_expid=f840fded-838c-4301-ace7-aff94df0406d-0&btsid=0bb0623416017602855437582e4266&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ I-PEX 30 pin] Works with 2012 A1278, A1369, A1370, A1398, A1425 A1465, A1466, A1502#
WIFI Antenna cable
*[https://www.digikey.com/product-detail/de/cinch-connectivity-solutions-johnson/415-0088-500/J952-ND/1305571 Hirose 50cm HF cable](US) [https://www.digikey.de/product-detail/de/cinch-connectivity-solutions-johnson/415-0088-500/J952-ND/1305571 Hirose 50cm HF cable](Germany)
*[https://alexnld.com/product/dc-power-jack-for-macbook-pro-retina-13-inch-a1708/?gclid=Cj0KCQiA7YyCBhD_ARIsALkj54quT5Iqx9-4m5ZLlN-Ovrd_4Vi0VwCkp3lBLOO5znphYPaOhoHQ5CYaAtfEEALw_wcB USB-C charge port A1708] (soldered on)
TouchID/Power button connector (Mesa) (J4900)
*Board side: Molex 505066-1220 replaced by [https://www2.mouser.com/ProductDetail/538-505066-1222 Molex 505066-1222]
*Button side: Molex 505070-1220 replaced by [https://www2.mouser.com/ProductDetail/538-505070-1222 Molex 505070-1222] Board side also available on [https://www.aliexpress.com/item/4001214086236.html Aliexpress]
===Keyboards "known-good parts"===
Macbook Pro 2019 16" A2141 https://www.aliexpress.com/item/4001214086236.html - looks 100% original, there is even a tape to secure fpc connector lock. Routing is 100% identical, same markings, manufacture date is laser-engraved.
===SPI Tools===
[https://aliexpress.com/item/33058068396.html? T2 SOC ROM Adapter] (search for USON8 if sold out) you need tl866 with 1.8v adapter or RT809H to programm this chip ([https://aliexpress.com/item/1005002748887534.html? mx25u3235f] for example, U4770 on 820-01700).
===Mouser / Hirose Connectors (iPhone/JTag-Like)===
How to search for connectors by local iphone suppliers or aliexpress, patterns:
#Macbook connector placenumber on board.
#iphone or ipad + fpc flex connector + pin number
#samsung flex connector
[https://www.mouser.de/Molex/Connectors/Board-to-Board-Mezzanine-Connectors/SlimStack/_/N-ay0kr?P=1z0zlewZ1yilumnZ1yzuwyz Mouser search for other "SlimStack" macbook connectors]
A2179 Auidio board tonnector could be found as "44 pin iphone fpc" connector
A2159 MacBook Pro 13" Touch Bar Two USB C BN 820-01598
*[[File:touchbarconnector.png|left|thumb|Hirose 34 pin connector, both Touch Bar/controller sides could be found as "iPhone X fpc LCD connector" on aliexpress]]<br />[[File:Touchbar controller board.png|left|thumb|touchbarcontrollerboard, prob. LED]]<br />
[[Category:Mac]]
[[Category:MacBook]]
9m8dza5htx8afiat1ikev9lu8xqg37t
MacBook Power Up Circuits
0
25
561
26
2020-02-02T11:31:12Z
Piernov
10
Category Mac MacBook
561
wikitext
text/x-wiki
At this level, in order to discuss in greater detail, we need to make use of schematic diagrams, here we will be taking the 820-3437 MacBook Air 2013 A1466 Intel Haswell CPU logic board as an example.
1. The always-on 3.42V power rail PP3V42_G3H can be created directly from an internal battery or Magsafe charger shown as below:
[[File:MacBook-power-up-1.jpg|thumb]]
Battery power goes through R7006, D7005 to U7090 the power management chip. Charger power also can go through R7005, D7005 to U7090. D7005 is used to prevent the 14.5V charger voltage to be delivered directly to the battery. U7090 is a low power 300mA buck converter chip. It converts 8.4V from the battery or 14.5V from the charger to 3.42V. This power rail powers the System Management Controller (SMC). The Mac is in off mode (G3) but the SMC keeps scanning the keyboard power-on button and MagSafe connector for actions.
Checkpoint 1: PP3V42_G3H can be measured at L7095 inductor (coil).
2. If you connect Magsafe2 to the Mac, the Magsafe2 will output 3V with a limited current to test the load and detect shorted circuits. If the load is 170K then 14.5V will be output to Magsafe connector. The power management chip U7000 is responsible for creating the 8.4V power rail PPBUS_G3H shown below:
[[File:MacBook-power-up-2.jpg|thumb]]
U7000 receives power from pin 2 CHGR_DCIN 14.5V then outputs 5.1V VDD on pin 19. VDD goes through R7101 and comes back as VDDP to power the PWM module of U7000. Charger 14.5V is divided by R7110 and R7111 as 3.81V feeding to pin 3 ACIN for voltage detection. 3.81V is above ACIN threshold 3.2V and SMC_BC_ACOK will be sent out from pin 14 to one-wire circuits. SMC will use the one-wire circuit to read code from the chip on the Magsafe connector to identify the type of charger. A green light indicates that the one-wire circuit and charger are both fine.
When the pin 2 DCIN voltage is higher than pin 17 CSON battery voltage, pin 1 output AGATE 0V and R7186 is effectively shorted to ground. Charger power PPDCIN_G3H 14.5V is divided by R7185 and R7186 and 6V will be applied to the gate of Q7180 P-channel dual MOSFET pin 3. Q7180 pin 1 and 2 source voltage is 14.5V and the gate pin 3 is 6V so the MOSFET on the left will be open. 14.5V power will go through the left MOSFET and then the internal diode of the right MOSFET to reach pin 4 and 5. 0.4V drops on the internal diode and the 14.1V power will go through R7120 for current sensing. When the current reaches to 0.4A, the 8mV voltage drop on R7120 will be sent to U7000 pin 28 CSIP and pin 27 CSIN charger current sensing circuit. U7000 will output 0V CHGR_SGATE and R7181 is effectively shorted to ground. 14.1V will be divided by R7180 and R7181 and 5.4V will be applied to Q7180 gate pin 6. The MOSFET on the right will be fully open to provide high current for more circuit power up. And the 0.4V voltage drop will disappear. If over-current is detected, U7000 will pull up AGATE and SGATE to close Q7180, cutting off power from the charger.
The PWM module of U7000 then starts to work. Pin 23 PHASE will check the PPBUS_G3H to make sure no short on this power rail and pin 24/21 output UGATE and LGATE to control Q7130 and create the PPBUS_G3H power rail. Pin 6 CELL is used to set the PPBUS_G3H “base” voltage. When CELL pulls up to 3.42V, the PPBUS_G3H “base” voltage is 12.22V (equal to 3-cell battery voltage). When CELL pulls down to 0V, the PPBUS_G3H “base” voltage is 8.1V (equals to 2-cell battery voltage). When CELL opens to float, the PPBUS_G3H “base” voltage is 4.05V (equals to 1-cell battery voltage). PPBUS_G3H “base” voltage is 8.1V for this logic board.
[[Category:Mac]] [[Category:MacBook]]
aflq6em27hp1n01owwfjnsdvgc0pzwm
MacBook Pro Diode Measurements
0
452
1028
2020-04-07T18:09:40Z
Chrisb
1
Chrisb moved page [[MacBook Pro Diode Measurements]] to [[MacBook Diode Measurements]]: Include MacBooks as well as MacBook Pros
1028
wikitext
text/x-wiki
#REDIRECT [[MacBook Diode Measurements]]
5auwvr5t2kfimcrr252l54ibx3d4aay
MacBook Pro Pictures
0
1696
7035
5997
2023-12-25T22:23:46Z
Heinrich1129
1064
/* MacBook Pro 15" Retina L2013 IG (820-3662) */
7035
wikitext
text/x-wiki
==MacBook Pro 15" 2010 (820-2850)==
[[File:820-2850 top.jpg|900px]]
[[File:820-2850 bottom.jpg|900px]]
'''OpenBoardView Background Image configuration'''
<nowiki>
TopImageFile = 820-2850_top.jpg
TopImageOffsetX = -400
TopImageOffsetY = -91
TopImageScalingX = 2.250000
TopImageScalingY = 2.250000
TopImageMirrorX = false
TopImageMirrorY = false
TopImageTransparency = 0.000000
BottomImageFile = 820-2850_bottom.jpg
BottomImageOffsetX = -220
BottomImageOffsetY = -9
BottomImageScalingX = 2.200000
BottomImageScalingY = 2.190000
BottomImageMirrorX = true
BottomImageMirrorY = false
BottomImageTransparency = 0.000000</nowiki>
==MacBook Pro 13" Unibody 2012 (820-3115)==
[[File:820-3115 top.jpg|900px]]
[[File:820-3115 bottom.jpg|900px]]
==MacBook Pro 13" Retina L2013 8GB/16GB (820-3476)==
[[File:820-3476 top.jpg|900px]]
[[File:820-3476 bottom.jpg|900px]]
'''OpenBoardView Background Image configuration'''
<nowiki>
TopImageOffsetX = -250
TopImageOffsetY = -43
TopImageScalingX = 2.133000
TopImageScalingY = 2.140000
TopImageMirrorX = false
TopImageMirrorY = false
TopImageTransparency = 0.000000
BottomImageFile = 820-3476_top.jpg
BottomImageOffsetX = -140
BottomImageOffsetY = -10
BottomImageScalingX = 2.140000
BottomImageScalingY = 2.120000
BottomImageMirrorX = false
BottomImageMirrorY = true
BottomImageTransparency = 0.000000
TopImageFile = 820-3476_bottom.jpg</nowiki>
==[[MacBook]] Pro 15" Retina L2013 IG (820-3662)==
[[File:820-3662 top.jpg|900px]]
[[File:820-3662 bottom.jpg|900px]]
==MacBook Pro 15" Retina L2013 DG (820-3787)==
[[File:820-3787 top.jpg|900px]]
[[File:820-3787 bottom.jpg|900px]]
==MacBook Pro 15" Touch Bar 2016 (820-00281)==
[[File:00281 recto composite v2.jpg|600px]]<br>
[[File:00281 recto low res.jpg|300px]]<br>
[[File:00281 verso composite v2.jpg|600px]]<br>
[[File:00281 verso low res.jpg|300px]]<br>
Note : low res pictures for comparison in case composite image is not accurate.
'''OpenBoardView Background Image configuration'''
<nowiki>
TopImageFile = 00281_verso_composite_v2.jpg
TopImageOffsetX = -305
TopImageOffsetY = -424
TopImageScalingX = 2.350000
TopImageScalingY = 2.345000
TopImageMirrorX = false
TopImageMirrorY = false
TopImageTransparency = 0.000000
BottomImageFile = 00281_recto_composite_v2.jpg
BottomImageOffsetX = -204
BottomImageOffsetY = -392
BottomImageScalingX = 2.310000
BottomImageScalingY = 2.310000
BottomImageMirrorX = true
BottomImageMirrorY = false
BottomImageTransparency = 0.000000</nowiki>
==MacBook Pro 13" Touch Bar 2017 (Four thunderbolt 3, 820-00923)==
[[File:00923 recto composite.jpg|900px]]<br>
[[File:00923 verso composite.jpg|900px]]<br>
'''OpenBoardView Background Image configuration'''
<nowiki>
TopImageFile = 00923_verso_composite.jpg
TopImageOffsetX = -429
TopImageOffsetY = -606
TopImageScalingX = 2.084500
TopImageScalingY = 2.080000
TopImageMirrorX = false
TopImageMirrorY = false
TopImageTransparency = 0.000000
BottomImageFile = 00923_recto_composite.jpg
BottomImageOffsetX = -336
BottomImageOffsetY = -280
BottomImageScalingX = 2.140000
BottomImageScalingY = 2.130000
BottomImageMirrorX = true
BottomImageMirrorY = false
BottomImageTransparency = 0.000000</nowiki>
==MacBook Pro 15" Touch Bar 2017 (820-00928)==
[[File:00928 recto composite.jpg|900px]]<br>
[[File:00928 recto low res.jpg|600px]]<br>
[[File:00928 verso composite.jpg|900px]]<br>
[[File:00928 verso low res.jpg|600px]]<br>
Note : low res pictures for comparison in case composite image is not accurate.
'''OpenBoardView Background Image configuration'''
<nowiki>
TopImageOffsetX = -423
TopImageOffsetY = -506
TopImageScalingX = 2.175000
TopImageScalingY = 2.205200
TopImageMirrorX = false
TopImageMirrorY = false
TopImageTransparency = 0.000000
BottomImageFile = 00928_recto_composite.jpg
BottomImageOffsetX = -534
BottomImageOffsetY = -469
BottomImageScalingX = 2.396000
BottomImageScalingY = 2.375000
BottomImageMirrorX = true
BottomImageMirrorY = false
BottomImageTransparency = 0.000000
TopImageFile = 00928_verso_composite.jpg</nowiki>
==MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) A2159 820-01598==
[[File:820-001598-A Top.jpg|left|frameless|900x900px|820-001598-A Top]]
<br />
[[File:820-001598-A Bottom.jpg|left|frameless|900x900px|820-001598-A Bottom]]
[[File:820-01598 top brd.jpg|left|frameless|900x900px|820-01598 top for board view]]
[[File:820-01598 bottom brd.jpg|left|frameless|900x900px|for board view]]
<br />
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Pro]]
c4k5wtwqgjfocn7r2j8lfw5y0vycbq0
MacBook SSD Repair
0
2229
6906
6866
2023-09-07T11:59:14Z
Inwerp
16
/* Tools */
6906
wikitext
text/x-wiki
==Disclaimer==
This article is purely speculative, based on various facts and ideas gathered online and from random discussions in chat rooms. There might be, and obviously are, many elements I have partially or completely misunderstood. I use "most likely" in its literal sense, indicating that 30-50% of the points made here could be inaccurate. I would genuinely appreciate if someone corrects me, explaining how these processes truly work. This article is intended for repair technicians. SSD repair/replacement is not something that can be accomplished after a few hours of watching repair videos online. It requires advanced soldering equipment and the expertise of a professional repair technician.
==Little Theory==
Since 2016, the 4TBT model from Apple has been using embedded SSD drives soldered on the motherboard. The first generation of such SSD drives allowed for Lifeboat access to extract data from a broken logic board if you had the rather unique "Apple Customer Data Migration Tool (CDM) Apple P/N 076-00236", which is essentially a fancy PCI-E to USB adapter. The Lifeboat connector is essentially a plug that disconnects internal power supplies and PCI-E differential pairs, allowing the external interface to read the drive itself. There is a possibility (not yet proven) of hard-wiring a standard M.2 SSD drive connector to the Lifeboat plug. If you install an M.2 2240 SSD Drive into the chassis, you can expand to 2 TB of space or whatever capacity you find on the market.
Modern SSD drives consist of three components (excluding the power supply): the Controller, RAM, and NAND memory chips arranged in some sort of RAID array for performance and wear distribution. Internal firmware is stored in a service area on one of the NANDs and is somewhat similar to HDD firmware. It includes a bad block list, LBA Translator, self-monitoring logs, and so forth.
To replace such a drive, you need a full set of SSD Chips as well as a controller, so you can only source it from a working donor. I've heard a few stories of people being able to use the Gumstick5 (2TBT 2016-2017 model) drive as a source, but I can't confirm this.
Later in their development, Apple "removed" the Lifeboat feature by introducing the Intel-T2 hybrid architecture. This is not entirely true because they simply moved it to another place, which I will describe later.
There is no longer an embedded SSD drive, but rather a monolithic SIP NAND drive which integrates the controller, DDR cache, and NAND into a single package. It operates through the same PCI-E interface and essentially stems from the iPhone/iPad architecture. In fact, these are basically the same chips; you could even use a MacBook as a donor for an iPad or iPhone.
Apple uses different brands, including Toshiba and Sandisk, on different boards, but the principle remains the same. Each NAND functions as a separate device on the T2 BridgeOS level, and it is, indeed, mounted into a hardware RAID0-like volume, seen as a single internal drive to the end user.
It's most likely that the T2 OS (BridgeOS) itself is stored on the volume level, just in a hidden area, which makes it impossible to restore the T2 partition if you swap NAND positions or replace them, thus disrupting the RAID array. Most likely, NANDs are preprogrammed using a pogo-pin connector after board assembly. Each board has a set of pins, allowing direct, low-level access to each NAND.
==Tools==
Replacing the T2 MacBook NAND is similar to the process for the iPhone or iPad. You'll need the standard tools for underfilled chips, a stencil, and quality soldering equipment.
The most crucial tool is the JC P13 NAND configuration tool, which is currently the only one available(P11 can be used if you have dumps + probably any other P13 clone could do same job if you have dumps, however it is not really clear). This tool is used to configure the NAND before soldering them onto the board. It can also serve as a reference for purchasing replacement chips (to prepare the NAND, you'll need to specify which IC and device you have). Use [[MacBook NAND List]] as a reference.
More info here: https://www.youtube.com/watch?v=yR7m4aUxHcM
To figure proper NAND set refer to the [[MacBook NAND List]] page. Do not forget to check your T2 memory size.
==More Theory and Practice==
As mentioned earlier, the T2 acts as a RAID controller, which expects to see a configured set of SSDs in the correct order. This is precisely why you need the JC P13. It writes a sysconfig block (on iPhones/iPads, this is used to configure WIFI, SN, etc.) to the raw drive using a repository of original configuration images. You must select the number of chips, their vendor and capacity, as well as the target device, to ensure everything works as it should. After you've prepared the NANDs, you need to solder them onto the board in the correct order and perform a full DFU restore (since there will be no BridgeOS on the NAND yet, it's similar to the process you'd follow for an iPhone after a NAND upgrade).
After this, you should have a functional Mac once again.
Unconfirmed Possibilities:
*Partial NAND Replacement: If you had a highly shorted 2.5v rail, there's a good chance that only one NAND was damaged. You might be able to read its config block using the JC P13 and a freezer (the freezer provides higher current, and it's been confirmed to be useful in iPhone repairs to recover the original MAC/SN/WLAN config) and prepare just one NAND, meaning you won't have to remove them all.
*Whole RAW NAND Backup: Currently, devices like the Magico and JC P13 only work with small sysconfig blocks. However, it's clear that technically RAW NAND access should and could be free to use. This could potentially allow for data transfer from a faulty, shorted NAND to a good one (if it permits itself to be read under a freezer/being reset every few seconds, etc.).
MacBook M1 and Beyond:
Here's some good news. You might have figured out that T2 SSD repair/upgrade is in fact easier and more convenient than doing so on T1 MacBooks. And the process is even simpler on the M1, since M1 DFU does not require you to prepare the NANDs. You just solder them onto the board like any other chip and it works. No BridgeOS means no NAND preparation. Again use [[MacBook NAND List]] as a reference(M1 models compatible IC IDs added recently).
UPDATE: It is not clear since which AC2 update this happened but for now DFU Restore only works only if you solder unprogrammed clean / unused NANDS.
Yay!
==Data Recovery Possibilities==
As previously mentioned, the Pre-T2 Lifeboat connector provides a direct interface to the SSD drive, similar to a normal M.2 NVME drive. The T2 can grant access to the internal volume using a tool called the "data transfer utility," which is only accessible to AASP providers. To run the app, you need approval and a ticket in the AASP system. It operates through a USB 2.0 interface, so the transfer rate is... well, it doesn't really matter because it can read an SSD with a dead Intel CPU/PCH part.
9r2saalzyv0gdh9jjo7zmzq4fm60a3i
MacBook Stencils
0
1811
5305
2020-12-06T18:42:50Z
Chrisb
1
Redirected page to [[MacBook Parts List#Stencils]]
5305
wikitext
text/x-wiki
#REDIRECT [[MacBook Parts List#Stencils]]
ckt28jwf6tgyrztmk086h78esytg1p6
MacBook USB-C LCD Backlight Flex Compatibility
0
2214
6760
6759
2023-02-14T22:55:05Z
Alan.l
19
6760
wikitext
text/x-wiki
{{DISPLAYTITLE:MacBook USB-C LCD Backlight Camera Flex Compatibility}}
[[File:backlightflexcable3.jpg|thumb]]
<br />
=='''Pair (Left and Right)'''==
'''MacBook Air 13" A1932 A2179 A2337'''
Left PN: 821-01317-A
Right PN: 821-01318-A
'''MacBook Pro 13" A1706 A1708 A1989 A2251 A2289'''
Left PN: 821-00602-03
Right PN: 821-00603-03
Left PN: 821-01228-A
Right PN: 821-01229-A
'''MacBook Pro 15" A1707 A1990'''
Left PN: 821-01270-01
Right PN: 821-01271-01
'''MacBook Pro 16<nowiki>''</nowiki> A2141'''
Left PN: 821-02251
Right PN: 821-02252
[[Category:Mac]]
[[Category:MacBook]]
{{DEFAULTSORT:MacBook_USB-C_LCD_Backlight_Camera_Flex_Compatibility}}
n1w685dx06xmsl71h58xv74stt37mrt
MacBook USB-C Video Out
0
1725
5755
5754
2021-04-21T23:11:11Z
Nobluesky
182
cleaned url
5755
wikitext
text/x-wiki
Many video adapters and multiport hubs will not support video out until MacOS has booted to a login screen.
Apple's own USB Type-C Digital AV Multiport Adapter does not display video out until macOS is booted.
'''The most reliable means of getting boot-menu and Apple-logo loading screen output is with the internal display connector fully disconnected.'''
Most USB-C to Displayport adapters should support boot menu display out natively when the internal display is disconnected, because there's no intermediary adapter between the USB-C port's native DisplayPort Out and the monitor itself. [https://www.amazon.com/gp/product/B01J6DT070 This] USB-C to DisplayPort cable is confirmed as working at the boot menu with a T2-era MacBook Pro A2159, among other later-era MacBooks equipped with USB-C / TB3 / TB4. It is a DisplayPort 1.4 adapter so it supports 8K/60Hz and lower resolutions at higher refresh rates.
Many HDMI adapters will not work reliably as the USB-C port does not put out a native HDMI signal, but [https://www.amazon.com/gp/product/B075V5JK36/ this] adapter is tested and works to display the EFI portion of boot so you can see the Apple symbol and the FileVault screen. It is a HDMI 2.0 adapter so it also supports 4K/60Hz display.
m2u0lhlf0fv99w71378ecagsacs7w76
MacBook battery diagnostics and repair
0
2153
7064
7063
2024-03-06T12:25:39Z
Inwerp
16
/* How to test if charging circuit works properly. */
7064
wikitext
text/x-wiki
==Disclaimer==
We strongly do not recommend you to refurbish / repair batteries for further customer use unless you know what are you doing, and you are qualified(which is clearly not the case if you read this article).
Batteries are highly explosive and dangerous products, this is exactly a red line where consumer electronics repair stops being safe, so '''we do not recommend re-celling batteries''' since good li-pol cells is not something you can confidently buy in electronics store.
There are very few cases where you might try to fix the battery instead of installing a new one:
- if you have slightly over-discharged battery.
- If your battery had short circuit on board in 100% charged condition. Such lock might also happen if you had 19V on your PPBUS line, but it would also burn the fuse. Usually short circuit causes temp.fail condition which is reset if BMS sees current flow in opposite direction(which means from Laptop TO battery). Since "FULLY_CHARGED" flag will prevent the battery from opening its mosfet, charging the battery won't reset this flag. Some old PC laptop batteries could be discharged with external load(use digital controlled load only) on cells to reset this flag.
- if you need to backup customer's data before fixing charging circuit / ordering a new battery, etc.
==Theory==
Moderns notebook batteries are quite sophisticated devices(also known as smart battery) with its own microcontroller and balancing electronics. Check [[MacBook OEM, Aftermarket, and Knock-Off Batteries]] for comparison and photos of Macbook Battery internal parts.
#Battery controller (Texas instruments b20 series) This part of the battery stores all the service information like remaining capacity (calculated during charge), cycles, fail flags, etc.
#Cell charging/balancing system. Say, there are 3 cells in your battery in series, each is discharged to 3V. We apply 13V to the battery pack. Each cell has its own capacity, resistance and charging performance. To keep batteries charged evenly we need to control and balance them by injecting voltage between cells during charge or withdrawing excess charge from "overcharged" cells during discharge. Balancing algorithm is dependent on BMS and cell pack design. If the difference between cells is more than 0.2V, Temporary FAIL flag might be triggered and battery will stop charging. [https://www.ti.com/download/trng/docs/seminar/Topic%202%20-%20Battery%20Cell%20Balancing%20-%20What%20to%20Balance%20and%20How.pdf Further read]
#Fuse. Macbooks use self-burning fuse which has 4 pins. there is a heating element which melts solder blob between two B+ poles. This event is triggered if battery is shorted in use, or overvoltage is detected. In some cases battery might even report itself as a "perfect condition". it will pass AHT, but still, there would be no charge and no output.
#Cells. In most macbooks there will be 3S(3 Cells/Cell Packs in SERIES) battery with 10-12.8v output voltage. PPBUS voltage when running from power supply is approximately same voltage as a fully charged battery. PPBUS Voltage is set by CELL pin on charger IC.
#Thermal couple on battery pack. Small, but really important thing. In some cases thermal couple gets damaged by drop damage, it might also be damaged during transport or battery installation. (for example, on MacBook Air '''A1466''' It is mounted close to sharp plastic edge which cuts thermal couple). This is Permanent "TERMINATE_DISCHARGE" flag failure, and you can fix it by replacing the thermal couple and resetting the battery (special equipment required, but maybe this particular flag has some sort of timeout since hot battery never causes battery bricking itself on Smartphones, however it happens from time to time). To check the thermal couple, measure voltage across: there should be 0.15V cycling every second. If you see higher voltage, most likely the sensor is OL. [[File:thermal couple.png|none|thumb|thermal couple cut by plastic frame after drop damage(MacBook Air Battery)]]<br />
<br />
==Troubleshooting==
#To turn on the battery you need to pull down SYSDETECT_L to ground. on old models it is done by connector itself, modern macs need you to plug the power supply to switch this line to ground. If you need to turn on such battery without power supply, simply short it to ground with tweezers once. If it only shows empty battery sign on screen, you can also pull BATLOW_L to 3.3V with 10-Ohm jumper(say, you have charging circuit problem, but you want to first backup data using pre-charged battery) [[File:SYSDETECT L.png|none|thumb|508x508px|Sysdetect_l circuit. Once battery is ON, there will be PP3V3_G3H on gate which will keep Q6955 ON, thus shorting SYS_DETECT_L to ground. ]]<br />
#No output would mean that the battery is in permanent/temporary failure state. Measure voltage on banks, check if you have bad balance and correct it with bench power supply. This is not a repair solution, but it might be necessary if you have one of the macs which won’t boot without the battery, and you need data first.
#If there is output, but battery is not detected, inspect I2C lines. Some macs like M1 MAX will, in fact, run from battery with no communication with the battery. For some reason it will show 0% battery even in system. all 16" models will throttle and run 100% fan with no battery connected. The battery won't charge without i2c communication, both lines are active every 0.5seconds, so it could even be seen as a slight voltage fluctuation on RMS multimeter.
#If battery is detected but not being charged, you can also get more information from it usind terminal command(on mac devices it is much more verbose): ioreg -l -w0 | grep Capacity this command will show you quite a lot useful information including battery voltage. if your battery voltage calculates to below 2.8V per cell, battery will lock itself. for example if you have 2S-cell battery like Macbook air, everything below 5.6V would mean that battery is not possible to recover without special device and precharging cells to 3V.
=== How to test if charging circuit works properly. ===
with battery disconnected:
# Check with Multimeter or Oscilloscope if SCL / SDA lines have 1/Sec activity. Good multimeter will indicate slight voltage jump.
# Check if there is output voltage to the battery. Working charger IC would send 6-7V pulses every second and permament 12V on M1 PRO/MAX macbooks (Need to confirm on few other devices) The idea behind that is that if battery is not detected, charger will try to "wake it" with power pulses and SDA/SCL "ping".
# check if Gate on BatFet is below ppbus voltage (2-5V)
# also good indicator is PPBUS voltage on intel macs: 12.3 indicate problem with SMC-Charger IC communication (even if mac works).
with battery connected:
# there should be communication on SCL SDA lines
# Batfet Gate should be stable 2-4V which indicate open BatFET
# voltage to the battery should be around normal PPBUS voltage. If battery charges, its voltage should slowly raise.
'''<u>note on M1 devices:</u>'''
non working SDA/SCL will cause device to show "1%" battery and "service recommended" instead of "no battery detected". However, mac will work from battery.
The battery will be also charged a just a tiny bit to 12V (default PPBUS voltage). If used for long period of time, battery will lose its calibration and it will need to be fully discharged (approx 9.8V till it shuts itself down) and then fully charged.
<br />
==Links==
[https://www.ti.com/download/trng/docs/seminar/Topic%202%20-%20Battery%20Cell%20Balancing%20-%20What%20to%20Balance%20and%20How.pdf Texas Instruments Balancing guide]
Known good 3rd party Battery suppliers:
[https://lmp-adapter.com/product/ LMP] They also produce batteries for very old models. Since late 2021 they changed Cell supplier which seems to have much lower quality.
Diagnostic equipment:<br />[https://www.laptopu.ro/product/professional-laptop-battery-analyzer-nlba1/ NLBA1(laptop battery analyzer and repair device)]
You can also use EV2300 (Texas Instruments programming kit), but without some deep knowledge of registers / tech mode key this is useless.
There is also a small apple-only device called MBRT, available on aliexpress. (no reason to link since they expire quite fast)
sg0a8pdgxtgx28eu7z18txhavr1ap6i
Mac GPU Repair
0
2653
7740
7737
2025-02-04T07:16:47Z
Leshuq
657
Added VRAM for 0885252, corrected dram p/n
7740
wikitext
text/x-wiki
== Introduction ==
# '''GPU reflow is scam. GPU Rehot is scam and always has been. Never reflow GPU if you are not the one who knows thats a drop damage and you gonna reball it afterwards.'''
# '''GPU flip is scam. A1286 GPU replacement is scam. There is no such thing as "fixed" or "better" chips with later datacode.'''
== AMD VRAM Compatibility ==
if possible always replace AMD gpu with its VRAM if vendor is different. it looks like there are differently marked chips with same model number in system but different ram. Especially the case if you move macbook GPU to iMac.
Below here are <u>known good combinations of GPU+VRAM</u> (either factory variants or manually tested ones):
2016-2017 GPUs:
'''216-0896074''' = ('''TODO''': Model) / Samsung ('''TODO''':Which/capacity)
'''216-0896144''' = Radeon Pro 450 (MacBook A1707 2016) / Elpida ('''TODO''':Which/capacity)
'''216-0885348''' = Radeon Pro 555 (MacBook A1707 2017) / Samsung K4G41325FE-HC28 x4 = Total 2GB || Elpida W4032BABG-70-F x4 = 2GB || Hynix H5GC4H24AJR x4 = Total 2GB
'''216-0885184''' = Radeon Pro 555 (iMac 21.5" 4K 2017) / Hynix H5GC4H24AJR x4 = Total 2GB
'''216-0885252''' = Radeon Pro 555 (iMac 21.5" 4K 2017) / Samsung K4G41325FE-HC28 x4 = Total 2GB
'''216-0885238''' = Radeon Pro 560 (Macbook A1707 2017) / Samsung K4G80325FB-HC28 x4 = Total 4GB
'''216-0885170''' = Radeon Pro 560 (iMac 21.5" 4K 2017) / Hynix H5GQ8H24MJR x4 = Total 4GB
'''216-0885286''' = Radeon Pro 560 (iMac 21.5" 4K 2017) / Hynix H5GC8H24MJR x4 = Total 4GB
2019-2020 GPUs:
'''215-0932252''' = Radeon Pro 5500M (Macbook Pro A2141) / (Samsung K4Z80325BC-HC14 x4 = Total 4GB) || (Samsung K4ZAF325BM-HC14 x4 = Total 8GB)
'''215-0932268''' = Radeon Pro 5300M (Macbook Pro A2141) / (Samsung K4Z80325BC-HC14 x4 = Total 4GB)
'''215-0932348''' = Radeon Pro 5300 (iMac 27" 5K A2115 2020) / Micron D9WCW x4 = Total 4GB
'''215-0932332''' = Radeon Pro 5500XT (iMac 27" 5K A2115 2020) / Micron D9WZX x4 = Total 8GB
== MacBook Pro 2019 16" A2141 GPU failure ==
This issue seems to be a common problem. In many cases it starts with GPU being unable to wake up after sleep and some GPU-related kernel panics after it reboots. Once it progresses, device works only in safe mode. Last step is no post and no image/backlight. Unfortunately there is no good source for new replacement chips, so if you use chips from donor, it is agood idea to get 2 chips and put one aside for warranty. It is also a good practice to give prolonged warranty since it might fail again.
8ge7el1cdtdi7173pmje4qztjbu452d
Mac Pro 6,1 Late 2013 Diagnostic LEDs
0
634
1323
1321
2020-06-09T12:58:24Z
Pranas
2
added block diagram
1323
wikitext
text/x-wiki
[[File:late-2013-mac-pro-system-block-diagram.png|thumb|Mac Pro 6,1 Late 2013 System Block Diagram]]
The Mac Pro (Late 2013) contains several diagnostic LEDs and test points to assist in troubleshooting:
Status LEDs are green, and do not illuminate unless the DIAG button (refer to the I/O Board LEDs topic) on the I/O board is being pressed. This type of LED is only found on the I/O board. They are used to identify power states and are useful in troubleshooting the startup sequence.
Error LEDs are red, and illuminate continuously when there is a problem.
[[File:macpro 4.png|thumb]]
Warning LEDs are yellow, and illuminate continuously when a thermal problem is detected. This type of LED is only found on the CPU riser card.
Using Diagnostic LEDs for Troubleshooting The Mac Pro (Late 2013) contains a Hall Effect sensor that will prevent operation of the computer with the housing removed. For the purpose of viewing diagnostic LEDs only, it is possible to briefly operate the computer with the housing removed.
From the Apple menu, choose Shut Down (or if the computer is not responding, hold the power button until it turns off). Remove the AC power cord and all cables and peripherals that might be connected to the system. Remove the housing. Connect the AC power cord. Warning: To prevent injury, avoid contact with the bus bars and the bus bar screws (shown below) when the computer is plugged in and powered on. The bus bars and the bus bar screws, located at the top of the main boards, have enough energy to cause a burn if they are bridged with metal (such as a ring or other jewelry). Avoid contact with I/O board bus bars and bus bar screws:
[[File:macpro 3.jpg|thumb]]
[[File:macpro 1.png|thumb|[[File:macpro 2.png|thumb]]]]
I/O Board Error LED
<nowiki>#</nowiki>1: Flex Check: This indicates that there is a connection issue between the logic board and the I/O board. Check the mezzanine connectors on both the logic board and I/O board to be sure the connections are fully seated.
I/O Board Status LEDs
<nowiki>#</nowiki>2: 11V Power: This indicates 11V power from the power supply. It should remain illuminated whenever AC power is connected.
<nowiki>#</nowiki>3: 12V Power: This indicates 12V main system power. It should illuminate once the power button has been pressed, and should remain on while the system is powered on and not in sleep mode. If high-power USB or Thunderbolt devices are connected prior to sleep, this LED will remain illuminated during sleep.
<nowiki>#</nowiki>4: Platform Reset Release: This indicates that the system has transitioned to a fully running power state (S0). During startup, this indicates that the system can transition to EFI Boot.
<nowiki>#</nowiki>5: S5 Power State: This indicates that the S5 (soft power off) state is available. It will illuminate at all power states, until the computer is fully shut down. If the computer is scheduled to turn on at a certain time in the Energy Saver preference pane, this LED will still illuminate after the computer has been shut down.
<nowiki>#</nowiki>6: S0 Power State: This indicates that the S0 (full power) state is available. It will illuminate once the computer begins the startup sequence, but does not necessarily indicate that computer has successfully started up.
<nowiki>#</nowiki>7: S4 Power State: This indicates that the S4 (hibernate) state is available. It should illuminate at the same time as the S0 LED. If, during startup, this LED illuminates without S0 illuminating, it may indicate an issue.
<nowiki>#</nowiki>8: PCIe Switch Status: This indicates the status of the link from the PCIe switch on the I/O Board to the CPU. During startup, this indicates that the system has reached EFI Boot. If the link to the PCIe switch is not operating in PCIe v3 mode, this LED will blink. A fast blink indicates v2 mode, while a slow blink indicates v1 mode. These states may correlate to issues with Thunderbolt or USB devices. Important: Be sure to remove any magnetic source used in step 6 (above) to re-enable the safety interlock circuit as soon as possible, to minimize risk of injury from contact with the bus bars and bus bar screws.
pre39tqaefm6qz1u9w43voayey6xbkw
Mac Pro 6,1 Trash Can Late 2013 Diagnostic LEDs
0
1679
5013
2020-10-12T14:07:46Z
Chrisb
1
Redirected page to [[Mac Pro 6,1 Late 2013 Diagnostic LEDs]]
5013
wikitext
text/x-wiki
#REDIRECT [[Mac Pro 6,1 Late 2013 Diagnostic LEDs]]
29frhdfbmvmxmqz2sc7stw87hc9cssr
Mac mini Common Issues
0
1881
5551
2021-02-07T17:47:18Z
Chrisb
1
Redirected page to [[A1347 2010-2012 common issues]]
5551
wikitext
text/x-wiki
#REDIRECT [[A1347 2010-2012 common issues]]
mivuzt3wubx6lxssllsotkc3fdckidb
Mac sensors reference designators
0
1902
6693
6692
2022-12-31T13:02:16Z
Alex6337
28
/* Example: */ added some details
6693
wikitext
text/x-wiki
SMC sensor codes (reported in ASD) can be quite cryptic and there is no way to immediately know which component it refers to on the logic board.
Some schematics have the sensor code next to the component, some don't. Some schematics tell the description for a group of sensor, some give a hint on the placement, but sometimes it is wrong.
Remember that when you have an issue on an SMBUS, you will have multiple sensors showing an error, all related to the same sensor hub on that specific SMBUS, but it may be caused by something else (eg. ALS or Touchpad).
'''Warning: this is a work in progress. The information here has not been exhaustively verified!''' This is mostly guess work from the information in the schematics, the boardviews, the ASD sensor lists and reports of correlation between sensors found on the web.
Warning 2: when using a monitoring software such as HWMonitor, the sensor descriptions may be wrong. It may even hide some sensors and show missing ones.
==List of abbreviations used in sensor descriptions==
*TBT = Thunderbolt
*T29 = Thunderbolt controller
*MLB = Main Logic Board
*BOT = Bottom
*TBD = To Be Determined (ie. no information in this schematics revision)
*BMON = Battery Monitoring
*AMON = AC Adapter Monitoring
==Replacing temperature sensors==
==='''Carefully check the datasheet of the sensor you are trying to replace.'''===
===<u>Example:</u>===
TMP461 (known as U5850 on 820-00239 - Thunderbolt die, Airflow Left, but widely used on Macbook board) as several ground pads. It's close to the edge of the board and is sometimes teared off by careless repair shops... '''Pads 5 and 10 are actually used to determine the I2C address. They can be GND, floating, or VCC.''' These pads can be ground or pulled high, and must grounded or pulled high carefully (like...when the lines have been raped... We've all been ther) so that the sensor is recognized.
It may be similar for other sensors references.
==MacBook Air==
===MacBook Air 11" 2013 820-3435===
Matching between reference designators and sensor description is different from the MacBook Air 13" 2013 820-3437.
MacBookAir6,1 in [[SMC Sensor Codes]].
Schematics contains gives wrong hints about sensors.
{| class="wikitable"
|+Temperature sensors
|-
!SMC Sensor Code!!Description!!Reference designator!!Bus
|-
|TS2P||Memory Proximity||Q5810||SMC S0 "1" SMBus
|-
|THSP||T29 Proximity||Q5820||SMC "3" SMBus S0
|-
|Ta0P||Inlet||Q5830||SMC S0 "1" SMBus
|-
|TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0
|-
|TM0P||Camera Proximity||Q5850||SMC "3" SMBus S0
|-
|TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus
|-
|TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus
|-
|Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0
|-
|Ts0P||Trackpad||J4800||SMC "3" SMBus S0
|-
|TB0T||Battery||J6950||SMC "5" SMBus G3H
|-
|TB1T||BMU 1||J6950||SMC "5" SMBus G3H
|-
|TB2T||BMU 2||J6950||SMC "5" SMBus G3H
|-
|Th1H||Fin Stack||J9500||SMC "2" SMBus S3
|-
|TCXC||CPU Core PECI||U0500||PECI
|-
|TPCD||Platform Controller Hub||U0500||PECI
|}
===MacBook Air 13" 2013 820-3437===
MacBookAir6,2 in [[SMC Sensor Codes]].
Schematics contains gives wrong hints about sensors.
{| class="wikitable"
|+Temperature sensors
|-
!SMC Sensor Code!!Description!!Reference designator!!Bus
|-
|TS2P||Camera Proximity||Q5810||SMC S0 "1" SMBus
|-
|THSP||T29 Proximity||Q5820||SMC "3" SMBus S0
|-
|Ta0P||Inlet||Q5830||SMC S0 "1" SMBus
|-
|TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0
|-
|TM0P||Memory Proximity||Q5850||SMC "3" SMBus S0
|-
|TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus
|-
|TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus
|-
|Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0
|-
|Ts0P||Trackpad||J4800||SMC "3" SMBus S0
|-
|TB0T||Battery||J6950||SMC "5" SMBus G3H
|-
|TB1T||BMU 1||J6950||SMC "5" SMBus G3H
|-
|TB2T||BMU 2||J6950||SMC "5" SMBus G3H
|-
|Th1H||Fin Stack||J9500||SMC "2" SMBus S3
|-
|TCXC||CPU Core PECI||U0500||PECI
|-
|TPCD||Platform Controller Hub||U0500||PECI
|}
===MacBook Air 13" 2015 820-00165===
MacBookAir7,2 in [[SMC Sensor Codes]].
Warning: HWMonitor may show a non-existent "Meomory Proximity" and hide "Thunderbolt Proximity"
Schematics contains gives wrong hints about sensors.
{| class="wikitable"
|+Temperature sensors
|-
!SMC Sensor Code!!Description!!Reference designator!!Bus
|-
|TS2P||S2 Camera Proximity||Q5810||SMC S0 "1" SMBus
|-
|THSP||T29 Proximity||Q5820||SMC "3" SMBus S0
|-
|Ta0P||Air Flow||Q5830||SMC S0 "1" SMBus
|-
|TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0
|-
|TM0P||Memory Proximity||Q5850||SMC "3" SMBus S0
|-
|TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus
|-
|TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus
|-
|Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0
|-
|Ts0P||Trackpad||J4800||SMC "3" SMBus S0
|-
|TB0T||Battery||J6950||SMC "5" SMBus G3H
|-
|TB1T||Battery Sensor 1||J6950||SMC "5" SMBus G3H
|-
|TB2T||Battery Sensor 2||J6950||SMC "5" SMBus G3H
|-
|Th1H||Fin Stack||J9500||SMC "2" SMBus S3
|-
|TC1C||CPU Core 1||U0500||PECI
|-
|TC2C||CPU Core 2||U0500||PECI
|-
|TCGC||Intel GPU||U0500||PECI
|-
|TCSA||CPU System Agent Core||U0500||PECI
|-
|TPCD||Platform Controller Hub||U0500||PECI
|}
===Repair section===
In most cases failed sensors is rather a communication line problem. Since it is shared between multiple sensors, it might cause lots of different issues. For example, failed ALS sensor on the display side might cause malfunctions of amost all thermal sensors on board, simply because it is pulling shared SMC SMBus line to ground.
<br />
==820-3437-B multiple sensor issues==
'''The problem:-'''
70% CPU usage when idle, machine slow and you may need to hold the power button to get the system to boot, however, sometimes the system still fails to power.
ASD faulting sensors (IC0R, ID0R, IM3C, ISDC, PB1R, PC0R, PDTR, PPBR, PSDC, VC1C, VCS0, VP0R). Device takes 0.06MAh.
'''Issues found/fixed:-'''
PBUS_S0_VSENSE missing - Q5500 Pin 3 via severely corroded. Ran jumper to R5503 Pin 1 to restore, issues persist.
C5021 turned into 1Ω. Capacitor replaced, issues resolved, and ASD passed diagnostics.
'''Addition:-'''
I had an issue with C5021 again (21st September 2021) and this time the machine would not power on and PM_SLP_S4_L was missing. A quick check of C5020, C5021 and C5125 showed they were shorted to ground through C5021. Replacing C5021 (1uf X5R 0201) fixed the issue and the machine boots again. If there is a short in this area, it can cause all sorts of issues.
[[File:SMCSensorRevised.png|thumb|alt=|left]]
[[Category:Mac]]
[[Category:MacBook]]
[[Category:MacBook Air]]
[[Category:MacBook Pro]]
tdhelnvtirxituwh7ku6yt7ac0m8nbx
Macbook - Documented Repairs and Guides
0
2121
6360
6359
2022-01-21T19:07:20Z
Alpha Bravo Tech.
538
6360
wikitext
text/x-wiki
This is Dusten Mahathy's house!
Everyone is welcome to visit and everyone is welcome to contribute!
[[Category:Mac]]
gtd101nh5dr2q5doclsxc4q6yjgzd6e
Macbook Failures From Experience
0
2096
6271
6270
2021-11-29T19:37:04Z
Dusten04
30
/* 820-00928 PPBUS not being generated, no shorts */
6271
wikitext
text/x-wiki
===Overview:===
This page is more of a diary of repairs, more than a guide on how to repair.
<br />
==='''820-00958 CPU Failure'''===
The unit came in with slight liquid damage on U7650, U6940, and Q7660. Shorted was PP5V_G3S. The shorted component was U8245. After replacing U8245, I found that PP5V_G3S was 10v, instead of the 5v that it was intended for. After only a few seconds of having the board on again after replacing U8245, to check measurements, it was shorted again. At this point, I replaced U7650, Q7660, and repaired several traces and capacitors, resistors. Once again, replacing U8245. This time when powering on the board PP5V_G3S, was at its normal voltage. However, the unit still would not boot. Hovering about 20v 100mA. So after further investigation, I found PPVCCIN_AUX_PCH was not being generated. This was due to PPVCCINAUX_VCC being shorted to ground. This failed component was U7400. Which was powered by PP5V_G3S. So, after replacing U7400, I was making progress. The unit would start the boot process, getting 1v8 on PPVCC_S0_CPU for a second, then 0v, but pulsing. So on/off/on/off scenario. I found the pulsing started all the way back at PP1v8_SLPS2R. I did find, however, that if I removed R7210, R7220, and R7230 the system would be stable again. These are the three resistors that powers PPVCC_S0_CPU. At this point, I am pretty certain that I have some sort of CPU failure. Wether it be the CPU itself or not, I am not sure. I felt that it was, as I have a suspicion the 10v going through the CPU MOSFETs probably killed the CPU. However, as a last desperation, and for research, I decided to attempt to DFU the machine. At his point, it failed, and I got '''error code 9'''. This was somewhat expected, as all the power rails are pulsing currently. So what I decided to do, was remove the three resistors mentioned early, to make the system stable again. At this point, the DFU restore went through successfully. This leads me to believe that CPU failure can cause '''error code 9'''
<br />
===820-01700 Not booting without battery, not charging stone dead battery===
Unit not booting without battery present. This board will boot on a 96watt adapter normally. I have seen 3 cases where the board doesn't boot on the adapter alone, and wouldn't charge a stone dead battery normally.
Without battery connected: 20v with a jump to 300-500mA then back to 70mA and kind of sit there.
With battery connected: It would very slowly raise to charging amperage. (It would take 2 to 3 minutes for it to reach 4 and a half amps, vs the normal 30 seconds to a minute)
After diagnosing the charging circuit, and seemingly everything on the board is physically okay, I decided to DFU restore the unit, thinking something with the SMC, that T2 is now handling.
This resolved the issue.
<br />
===820-00928 PPBUS not being generated, no shorts===
5v and 100mA for about 10 seconds then would jump to 20v 60mA - PPBUS not being generated. Initially found short on SMBUS_SMC_5_G3_SDA caused by D6950. After diode replacement, same result. Resolved issue by replacing SMC.
Voltages I had
*PPBUS_G3H - 0.300
*PP3V3_G3H - 3.4
*TBA_GATE_Q1 - 0
*TBA_GATE_Q2 - 0
*TBA_GATE_Q3 - 0
*TBA_GATE_Q4 - 0
*PPVIN_G3H_P3V3G3H - 19.8
*TBA_AUX_DET - 5.07
*HPWR_EN_L - 3.36
*SMC_RESET_L - 3.4
*TBA_VDDA - 5.07
*TBA_VDDP - 5.07
*PM_EN_P3V3_G3H - 5.08
*PPDCIN_G3H_CHGR - 19.8
*SMC_BC_ACOK - 3.4
*CHGR_AMON - 0
*CHGR_BMON - 0
=== 820-01949 PPBUS Short, leading to T2 shorted ===
This one started with 5v-60mA, classic PPBUS short draw for the T2 models. The PPBUS short was caused by U6903. After removing the IC, PPBUS short went away, however after probing the area around, I discovered PP3V3_G3H_RTC was short as well. So before I injected any voltage I removed R5920, which connects PP3V3_G3H_RTC to PP3v3_G3H_SSD. Probing under this resistor, I found that the short on PP3V3_G3H_RTC went away, and PP3V3_G3H_SSD0 was shorted. This time the short was caused by U9000. So after replacing U9000 and U6903 I checked around both ICs for shorts and didn't find anything. So I went ahead and attempted to boot the unit. At which point the unit would just restart my amp meter repeatedly, before even giving me a reading. All the power rails were pulsing from PPBUS to 12.6v to 3v very rapidly, and the pulsing stopped at PP3v3_G3H, which was just 0v. At this point I discovered that PP1V8_SLPS2R was shorted. The short being caused by T2. Just speculating, but I think something that connects PP3V3_G3H_RTC and PP1V8_SLPS2R probably shorted internally, and shoved 3v3 into 1v8. Again, purely speculation.
tcsvrnf928aqm79oxfc6lw5a9jdjknt
Macbook Lid Angle Sensor Calibration
0
2247
6958
6956
2023-10-06T21:46:15Z
Vladislav98759
951
6958
wikitext
text/x-wiki
[[File:MLASCT.jpg|thumb]]
https://github.com/Vladislav98759/Macbook-Lid-Angle-Sensor-Calibration-Tool/tree/main
This tool can be used to calibrate the new lid angle sensor on the macbook A2141 A2442 A2485 A2779 A2780 A2681.
The programmer has 3 operating modes, the modes are switched by a short push of a button and switched in a circle. You can tell which mode is currently selected by the blinking of the LED (1, 2 and 3, respectively). Each of the modes is activated by pressing the button for a long time (1 second).
In the mode 1, calibration is performed for the PRO series macbooks (A2141, A2442, A2485, A2779, A2780), if the calibration was successfully recorded, the LED will light up for 3 seconds.
In the mode 2, calibration is performed for the AIR series macbooks (A2681), if the calibration record was completed successfully, the LED will light up for 3 seconds.
In mode 3, the function of recognizing the current angle is activated (if the lid is open, the LED lights up, closed - goes out).
Before recording in modes 1 and 2, the tool makes checks for the possibility of flashing, if the sensor is not connected, the LED will blink 3 times, if a sensor removed from another device (calibrated by Apple) is connected, it will blink 6 times.
<youtube>4y4Nq-6QuaA</youtube>
t0ikr2jvcy6ezlnr27xdmia9ftrfubw
Macintosh Plus Resources
0
475
1153
1152
2020-04-30T17:42:05Z
Chrisb
1
1153
wikitext
text/x-wiki
[http://www.micromac.com/whats_new/logic_board_picture.html Logic board pictures can be found]
[https://www.instructables.com/id/Apple-M0110-Keyboard-Crossover-Adapter/ DIY keyboard cable]
[https://www.shapeways.com/product/27DNUVPJA/replacement-floppy-drive-gear-for-macintosh-comput Replacement Floppy Drive Gear]<br><br>
Classic Mac Tech Info:<br>
[[File:Classic_Mac_Tech_Info.pdf|page=1|Classic Mac Tech Info|alt=|200x200px]]<br><br>
The Dead Mac Scrolls:<br>
[[File:The_Dead_Mac_Scrolls_1992.pdf|page=1|The Dead Mac Scrolls|alt=|200x200px]]<br><br>
Macintosh Repair and Upgrade Secrets:<br>
[[File:Macintosh_Repair_and_Upgrade_Secrets.pdf|page=1|Macintosh Repair and Upgrade Secrets|alt=|200x200px]]
<br />
oxg5vjwmv7zrl70pfhys4dcoxx2x9ud
Macintosh Portrait Display Cable
0
1863
5486
5484
2021-01-15T13:49:25Z
Chrisb
1
5486
wikitext
text/x-wiki
{| class="wikitable"
|'''Apple DB-15 to 13W3 Pinout'''
|Version 1.0 – October 2020
|-
|
|
|-
|'''DB-15 (Male Side) Pin #'''
|'''13W3 (Male Side) Pin #'''
|-
|1
|A3 (Outside)
|-
|2
|A3 (Inside)
|-
|3
|5
|-
|4
|9
|-
|5
|A2 (Inside)
|-
|6
|A2 (Outside)
|-
|7
|8
|-
|8
|None / Not Connected
|-
|9
|A1 (Inside)
|-
|10
|3
|-
|11
|4, 7, & 10
|-
|12
|2
|-
|13
|A1 (Outside)
|-
|14
|1
|-
|15
|6
|-
|Connector Sheild
|Connector Sheild
|}
[[File:Apple-DB15-13w3-pinout-diagram-cropped.jpg|800x800px]]
'''Note!''' This page only shows the basic pinout of this cable. The original cable may have resistors or other components inside which are unknown to me. If you happen to find additional information on what is needed to replicate this cable, or you successfully build a replacement cable, please contact us or https://mac84.net/ with any additional helpful information you may have.
[https://Mac84.net/web/mac84tv/repair-guides-documents/apple-db-15-to-13w3-cable-pinout-for-macintosh-monitors-portrait-display-two-page-monochrome-display/ Pinout for 13W3 to DB-15 cable]
[https://support.apple.com/kb/TA43900?locale=en_US Link to Apple's site with pinout]
gam7wek2of9xlp8a4dyfavoo7vbj1bd
Macintosh SE Resources
0
531
5481
5480
2021-01-14T05:22:45Z
Chrisb
1
5481
wikitext
text/x-wiki
[[File:Iconic Book 1.jpg|thumb|''Iconic: A Photographic Tribute to Apple Innovation By Jonathan Zufi'']]
[http://www.micromac.com/whats_new/logic_board_picture.html]
Logic board pictures can be found
<br><br>
[https://www.shapeways.com/product/27DNUVPJA/replacement-floppy-drive-gear-for-macintosh-comput Replacement Floppy Drive Gear]
SE
Classic Mac Tech Info:<br>
[[File:Classic_Mac_Tech_Info.pdf|page=1|Classic Mac Tech Info|alt=|200x200px]]<br><br>
The Dead Mac Scrolls:<br>
[[File:The_Dead_Mac_Scrolls_1992.pdf|page=1|The Dead Mac Scrolls|alt=|200x200px]]<br><br>
Macintosh Repair and Upgrade Secrets:<br>
[[File:Macintosh_Repair_and_Upgrade_Secrets.pdf|page=1|Macintosh Repair and Upgrade Secrets|alt=|200x200px]]
Apple Memory Guide
[[File:Apple_Memory_Guide.pdf|page=1|Apple Memory Guide|alt=|200x200px]]
<br />
c94et8btxsyoxp4h81hbisseb32mcbp
Magsafe Sleep Mode
0
328
7018
6453
2023-11-25T17:00:35Z
Inwerp
16
7018
wikitext
text/x-wiki
Magsafe has a "sleep" mode where it sends out 3V or 6V (Magsafe2/Magsafe1) when disconnected. It is unrelated to 1-wire.
It measures the current going out and when you connect it to a Macbook, it will detect the small current consumption of the small resistor between PPDCIN_G3H and ground. (22k, 68k…, R7012 on 820-3437)
If it detects a current consumption within the correct range, it'll send out the 16.5V (or 14.8V/18.5V/20V depending on Magsafe power and version).
The Macbook will enable PP3V42_G3H circuit only when voltage is above a threshold, due to the zener diode (D7012 on 820-3437) + MOSFET (Q7010 on 820-3437).
And charger IC (U7100 on 820-3437) will turn on DC-in MOSFET (Q7180 on 820-3437) when it's above a certain threshold as well (on the ACIN pin n°3).
The knockoff Magsafe (or a PSU) don't do that and that's why you can get sparks with them.
When a genuine Magsafe doesn't send out the full voltage but the Macbook works properly with a knockoff or a PSU, it is related to those circuits
Either the resistor between PPDCIN_G3H and ground, the threshold circuit for PP3V42_G3H, or the DC-in MOSFETs and their gate control (resistors and traces).
Most common is a shorted DC-in MOSFET.
Important note: 45W Magsafe 2 charger sends 0.7-0.9V and this is totally fine. If you have no-"Sparkitecture" problem with 45W PSU but it works from 85W, troubleshoot it like "no-genuine charge" problem.
There might be a funny issue where macbook air works fine with 85W charger but does not activate 45V right after re-plugging it. It might go green after 10-30 seconds or even newer work before you completely discharge ppbus caps. The reason for that would be bad In-Rush mosfet which causes DCIN to get some leaking voltage from PPBUS thus not allowing power supply to be triggered (it turns on once DCIN reaches 0.3v, so if its 3-4V because of leakage, it wont work with magsafe after replug.
[[File:PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437.png|thumb|PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437]]
[[File:Charger IC Threshold on 820-3437.png|thumb|Charger IC Threshold on 820-3437]]
[[File:DC-in MOFET and gates on 820-3437.png|thumb|File:DC-in MOFET and gates on 820-3437]]
[[Category:Mac]]
[[Category:MacBook]]
snxjr36ptkuoh0spnssuc7xg6cmawg8
Magsafe troubleshooting
0
2207
7089
7088
2024-04-16T17:34:36Z
Francis
4
7089
wikitext
text/x-wiki
===Notes on Magsafe 3: <ref>fronke_</ref>===
'''Only the Magsafe 3 cable that comes with the 140W USB-C charger will work with it, the Magsafe 3 cables from the 14" M1 and M2 Macbook pro and M2 Macbook Air will NOT work/charge and will make the Magsafe 3 head blink orange.'''
====Lower wattage USB-C chargers that come with Magsafe 3 have been untested as of yet.====
The 140W charger and the Magsafe 3 that came with that charger will charge any Magsafe 3 macbooks normally.
If the magsafe 3 head blinks orange and its the original that came with the charger, then try cleaning the Magsafe 3 port with a microfiber towel and some isopropanol. (Feel free to correct this info if you discover something new)
The 140W charger can be used normally with a regular USB-C charging cable, up to 96W with macbooks as well as with any USB-C charged device.
<br />[[File:Magsafe pinout.png|thumb]]
==Magsafe 1 and 2:==
Magsafe 1 and 2 work identical. The only difference is in the mechanical shape of the plug. Magsafe-2 is longer and narrower than Magsafe-1.
'''1.''' Test a known good DC-IN board first, and make sure you have a genuine MagSafe cable. Newer machines are extremely fussy about being able to communicate with the charger tip properly.
'''2.''' Check '''PP3V42_G3H''' is 3.42v. Without this G3 rail the '''SMC''' will remain unpowered, along with other important circuits, i.e.: '''1-Wire'''.
'''3.''' Check '''SMC_RESET_L''' is high. If this signal is missing then '''SYS_ONEWIRE''' will not come up to communicate as the '''SMC''' is stuck in reset mode; ''SMC'' is in ''RESET'' when signal is ''L(OW).''
'''3a.''' Check the '''SMC''' is powered (Can be checked at the '''PP3V3_S5_SMC_VDDA''' inductor).
'''3b.''' Check the '''SMC''' is running ('''PPBUS_G3H''' gets boosted by roughly ''400mv,'' varies per model).
'''4.''' Check the service port for corrosion as '''PP3V42_G3H''' and '''SMC_RESET_L''' both show up here.
'''5.''' Check the '''1-Wire''' circuit is working as it should (If it's on the logic board, MacBook Air have '''1-Wire''' on the LIO board, which should already be ruled out in step '''1''').
'''5a.''' On MacBook Air '''3437/00165''' boards, make '''SURE''' to check ''R7012'' is not damaged and measures 68k regardless of whether you have '''PP3V42_G3H''', or not. Sometimes you can be led to a dead end, and this resistor is the culprit of all your misery.
[[File:Magsafe schematics.png|frameless|478x478px]]
'''6.''' Remove the '''MAX9940''' IC to check '''ADAPTER_SENSE''' and '''SYS_ONEWIRE''' voltages. Both sides should be chattering at around +3v through the '''MAX9940''', this IC is there to stop 14.85+ volts going to the '''SYS_ONEWIRE''' bi-directional data line and cooking the '''SMC'''.
''' 6a.''' If both are at the correct voltage check '''C7000''' and '''R7029''', replace '''MAX9940''' if necessary.
''' 6b.''' If '''ADAPTER_SENSE''' is low check the '''ADAPTER_SENSE''' line back to the DC-IN board.
''' 6c.''' If '''SYS_ONEWIRE''' is low you most certainly have a faulty '''SMC'''. This line comes directly from the '''SMC''' straight to the '''MAX9940''' (In most cases?).
'''1-Wire notes:'''
· '''SMC_BC_ACOK''' must be present on ''both'' pins 2 and 3 (A+B) of the '''U7001''' AND gate otherwise it will not open and let 3.42v out to create '''SMC_BC_ACOK_VCC'''.
· If the capacitor ('''C7000''') on '''SMC_BC_ACOK_VCC''' goes bad then current will go directly to ground as it will become the path of least resistance; therefore, '''U7000''' won’t be powered.
· Sometimes adapter voltage can leak onto '''ADAPTER_SENSE'''. This will cause '''U7000''' to trigger overvoltage protection and shut off to protect the '''SMC'''.
'''Other notes:'''
· Just because a MacBook turns on, it does not rule out the System Management Controller. One way to tell if the '''SMC''' has a bad '''SYS_ONEWIRE''' line is as follows: Plug in a charged battery, power on the device and start MacOS, then plug in the charger and see if the light comes up after 10-60 seconds and MacOS detects charging. If so, this indicates a partially faulty '''SMC'''.
· In RARE occurrences you may get away with flashing the System Management Controller.
· On a MacBook Air, it’s always a good idea to check '''J9500''' and the LIO Board Flat Flex Connector. Corrosion can damage either of them and affect communication across '''SYS_ONEWIRE'''.
· '''PP3V42_G3H''' can be pulled low by corrosion hidden in, or underneath the keyboard connector.
· Fake MagSafe chargers will work when a battery is plugged in, however usually fail to charge the device once the battery is flat or unplugged, they also FORCE voltage into the system. '''Put fake chargers where they belong''' 🗑️. When in doubt use a CMIzapper MagSafe Tester to see if the charger is real or fake.
· Sometimes '''PP3V3_S5_AVREF_SMC''' (and other SMC circuits) can become shorted to '''SMC''' analogue ground; this will cause strange and temperamental behaviour, including no light on the charger.
[[File:SMC AVREF .png|frameless|499x499px]]
=== Cases: ===
fronke_: board only works with fake charger, had low resistance on R7080, replaced Q7080 and R7020, fixed issue. See [https://boards.rossmanngroup.com/threads/820-3332-no-power-magsafe-light-turns-green-and-off-then-repeats.38598/ here]. [https://boards.rossmanngroup.com/threads/820-3332-turns-on-but-don´t-charge.64326/ This] can also help
'''Discord: muertogb'''
<references />
i5oh75y5avwh4yab0nvw78dh65cqkdj
Main Page
0
63
7686
7680
2024-08-30T01:00:51Z
CBax
996
/* Welcome to Logi.Wiki */
7686
wikitext
text/x-wiki
=='''Welcome to Logi.Wiki'''==
This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions. <br>
== '''We now have a Discord! Please [https://repo.doslabelectronics.com/misc/logicord.html click here] for the invite link.''' ==
<strong><span style="color:red">If you need any help</span></strong>, contact @cbax on discord or visit the [https://doslabelectronics.com/contact DosLab Electronics contact form]. [https://www.facebook.com/profile.php?id=100082550894310 David Roberts] is also available on Facebook, you can tag him in the [https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Repair Community] group. PLEASE SEND ME ANY FEEDBACK OR SUGGESTIONS YOU HAVE TO MAKE WIKI BETTER!
<br />
=='''Categories'''==
{| class="wikitable sortable" style="width:100%;"
|- style="vertical-align:top;"
| style="width:33%;border:none;" |{{#categorytree:Mac|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:iPhone|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:iPad|mode=all|depth=0}}
|- style="vertical-align:top;"
| style="width:33%;border:none;" |{{#categorytree:Troubleshooting_Guide|mode=all|depth=0}}
| style="width:33%;border:none;" |{{#categorytree:Game_Consoles|mode=all|depth=0}}
| style="width:33%;border:none;" |
|}
=='''All pages'''==
{{Special:AllPages}}
=='''Recent Contributions'''==
{{Special:RecentChanges|limit=15|days=7}}
=='''Top Users'''==
{{Special:ContributionScores/10/180}}
==Special Thanks==
Special thanks to Jonathan Zufi for his [http://iconicbook.com Iconic Book]! Its a cover to cover treasure for any Apple lover.
[[File:Iconic Book 1.jpg|800x800px]]
9xcgefc15bj7xfq90lpturci3j1sacq
Malware Removal
0
735
7547
7081
2024-07-19T04:31:51Z
Miloh
918
Brief description of the Library folders, what type of information the folders hold. Also added a description of Browser malware
7547
wikitext
text/x-wiki
Steps 0-2 can and should be done on a booted testing drive/machine, not booted into the customers OS. (Preferably performed with the customer machine in target mode/share disk mode). It can still be done in the customers OS if necessary, but some programs may be more stubborn to remove. Steps 3-6 should be done in the customers OS.
If you suspect malware is running when the user logs in you can start the computer in safe mode to disable auto launch programs. Applications and executables that load from LaunchAgents and LaunchDaemon plist files will be disabled.
Malware can be installed to the system, root user, a user account, as an application or within a browser. There may be more variations such as profiles installed on the user account, or chrome being "managed by an organization." The Library folders are often the first locations to look at because they hold OS and application files used to run programs.
Library/LaunchAgents and Library/LaunchAgents, either system or user-specific, will hold a plist file pointing to an executable or program that launches at user login. Most programs rely on this to start services, such as Microsoft's background AutoUpdater, Spotify, etc. You can preview or open in TextEdit one of these plist files and determine where the program resides. Using best judgement, either by the naming scheme: com.microsoft.xxx.plist or com.xjffiyc.plist looking suspicious, or the location of the program written in the plist file, you can remove these at your discretion though some programs may break until these are restored. Microsoft Office's background processes complain and do not restore if deleted.
Most executable malware - programs that run on the computer as applications do, are located within Library/Application Support. Having "Show Hidden Files" enabled to see (dot). files and folders can sometimes reveal malware that is hiding as .xjffiyc. Executables should be located within their own folder and will have a black terminal preview image. Names that are unfamiliar can be noted as suspicious but shouldn't be removed by default. Malware often has a suspiciously vague name or some form of identifier that looks different from stock Application Support folder names, and/or executable names.
In most cases executable malware is installed to the user library /Users/<current user>/Library but can be installed to the system's editable library: /Library. The system's non-writable library of /System/Library is generally unaffected unless System Integrity Protection has been disabled, or if it is an older operating system. The root user, seldom affected, has a folder of /private/var/root, with it's own Library folder, which can be checked manually if malware persists after re-login/reboot.
Browsers are the most commonly affected items. Safari is usually safer because it's limited by Apple, in comparison to Chrome or Firefox. As a general checklist: extensions, plugins, startup pages, auto-complete search engines, browser-specific notifications, search history, and proxies, are good settings to check for each browser. Malware programs such as ClamXAV or Malwarebytes typically do not catch browser-specific malware. Extensions usually have a Chrome Web Store link which can be investigated to compare your suspicion to relative downloads, reviews, and ratings. Browsers that support different profiles may require you to check multiple profiles for all of these settings, as malicious settings may be specific to one profile.
== '''Step 0: (optional)''' Use ClamXAV to speed things up a bit. ==
===Install ClamXAV from official website===
*https://www.clamxav.com
**Follow the instructions to add necessary items to security settings, making sure to allow the several entries.
**The program will want to restart a few times during this process, proceed.
*Select Macintosh HD under "drives" in the left-hand pane then click "Scan now"
**Make sure to allow access to specific library/path popups that happen on newer systems while the scan runs
**The scan can take upwards of several hours for disks with more than 300-500gb of data.
**During the scan, you can choose to quarantine or delete the detected files
**At the end of the scan, it's suggested to open the report view and screenshot/take a photo for client purposes.
=='''Step 1:''' Clear Malicious Apps==
===Applications (Root)===
*Check for and remove anything weird
**Install Mac
**Webtools
**MacKeeper
**Tune My Mac
**Clean My Mac
===Applications (User)===
*Navigate through Macintosh HD/Users/(user name)/Applications
**Check for and remove anything weird. Remove Chromium and '''Opera''' if the customer does not know what those are.
**Delete any MacCleaner type applications
===Shared (User)===
*Navigate through Macintosh HD/Users/Shared
**Check for and remove anything weird. The only typical folders seen here are Adobe and audio libraries.
=='''Step 2:''' Clear Directory Remnants==
Finder (If on Sierra or newer use '''CMD+Shift+Dot''' to show hidden files, Does not work on El Cap or lower.)
==='''Library''' (Root)===
*Internet Plug-Ins
**Do NOT remove these
***''Default browser.plugin''
***''nslQTScriptablePlugin.xpt''
**Use best judgment for the rest
*Launch Agents
**Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs.
*Launch Daemons
**Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs.
*Startup
*Occassionally you will find additional remnants in Application Support files. Delete any remnants associated with the files you removed but proceed with caution!
==='''''User Library'''''===
'''<nowiki>*</nowiki>Note: to access hold option/alt key while under “GO” menu of finder if running newer OS;'''
Otherwise, navigate through Macintosh HD/Users/(user name)/Library
*Internet plug-ins
**If there are any here they are probably bad
***Use best judgement
*Launch Agents
**Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs.
*Launch Daemons
**Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs.
*Application Support - Same as library files above.
*Startup
=='''Step 3:''' Check Login Items==
*Under system pref->users->login items
**Delete anything that doesn’t need to run at start
=='''Step 4:''' Clear Browser(s)==
==='''Safari''': Click Safari under menu. Then select preferences===
*Check home page
**Reset to “google.com” if wonky
**Check browser extensions/ add-ons
***Delete anything suspicious
*Check search engines
**Enable Quick Website Search -> "Manage Websites"
***Delete anything suspicious
==='''Firefox''': Click Firefox finder menu. Then select preferences===
*Check home page
**Reset to “google.com” if wonky
**Check browser extensions
***Click on the button with 3 parallel horizontal bars
***Select add-ons
****Delete anything suspicious
*Check search engines
**Go to settings -> Search
***Search Shortcuts
****Delete anything supicious
==='''Chrome''': Click Chrome from finder menu. Then select preferences===
*Under Appearance, make sure home page set to “google.com”
*Click Extensions (top left)
**Delete anything suspicious or anything non-google
**At bottom of page click “Get more extensions”
**See [[Cleaning Policies From Chrome|Cleaning Policies For Chrome]] for additional assistance if needed
*Check search engines
**Settings -> Search Engine -> Manage Search engines
***Investigate Search Engines and Site Search
=== All Browsers: Verify history when typing search ===
* If the malware was redirecting to a fake "search" website, the search history may be compromised.
** Scenario: customer searches by typing "search" in the address bar, but instead of google, anysearch appears from history.
** You might opt to wipe the search history, or search through history for keyword "search" which will help identify the malware
** If you see a suspicious website, you can then filter history by the website and remove all entries
=='''Step 5:''' Check System Preferences==
*Verify that no additional profiles have been added
*If a profile has been added, remove it directly from system preferences. If unable to remove from system preferences, refer to Google search.
*Check network settings to make sure there aren't any weird connections/devices/VPNs/proxies.
=='''Step 7:''' Check Notifications!==
*Some websites (legitimate and not) add annoying notifications. Often customers will click ok and add them without knowing. Clean notifications from browsers and/or talk to customers about turning off notifications in System Preferences for the browsers.
=='''Step 6:''' Empty Trash and TEST!==
*Reboot and recheck all browsers. They should have a legitimate home page and when using the search bar, should return a major search engine directly, like google.
j5t8ka3g2sc32l3putftj9jvekxp3u1
Microscopes and Microscope Cameras
0
1743
5180
5148
2020-11-03T06:13:24Z
OptimizeLogicRepair
243
5180
wikitext
text/x-wiki
-Recommended microscopes
-What kind of scope do you need?
-Recommended microscope cameras
A good option: https://www.amscope.com/1080p-hdmi-digital-camera-for-standalone-and-pc-imaging.html
-Do you need a microscope camera?
ogwntecwlbysqhgd0z3qoo27t46727x
Mojave Common Issues
0
141
562
411
2020-02-02T11:31:24Z
Piernov
10
Category Mac
562
wikitext
text/x-wiki
== WiFi: No Hardware Installed, sluggish performance after Mojave upgrade ==
If your Mac is running slow and/or your WiFi hardware is missing after upgrading to macOS Mojave, You may have an exisiting incompatible config file from a previous version of Mac OSX. Deleting this file will speed up the operating system and restore Wi-Fi functionality.
''If you're booting from a usb drive, make sure to edit the file on the right volume.''
1. Start the terminal app from Applications/Utilities
2. Check if the file exists, by typing
'' '' <code>ls -l /etc/sysctl.conf</code>
If this returns a result like the following, then the file exists: <code>-rw-r--r-- 1 root wheel 125 21 Nov 2016 /etc/sysctl.conf</code>
If it does not, then your issues are caused by something else'' ''
3. Rename the file:
<code>sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak</code>
4. Restart your computer, and you should be all set, or if you've rolled back to High Sierra, you should be good to attempt the upgrade again.
<br />
== Messages Running slow after Mojave Upgrade ==
Your Mac can have a '''corrupted Contacts database'''.
Signing out and back in to iCloud isn’t fixing anything because your Mac reusing its local database, and thinking that everything is up to date. Updating a contact is what “rebuilds” its entry, allowing it to be displayed.
Try wiping your local cache to force your MacBook Pro to re-download all of your contacts from iCloud.
# '''Sign out of iCloud'''.
# Delete <code>~/Library/Application Support/AddressBook</code>
# Delete <code>~/Library/Caches/com.apple.AddressBookSourceSync</code>
# Delete <code>~/Library/Saved Application State/com.apple.AddressBook.savedState</code>
# Delete <code>~/Library/Preferences/com.apple.AddressBook.plist</code>
# Restart your Mac
# Sign Back into iCloud
Your contacts should all download fresh from iCloud.
(Note: '''Steps 2 & 3''' are really the crucial ones, but the '''Contacts.app''' doesn’t have much in the way of preferences, so might as well be thorough.)
[[Category:Mac]]
ifabz9bqiy4nlij8tf0vyo165ipbyr0
Move iTunes or Music Library
0
736
1593
1564
2020-08-30T18:31:46Z
Chrisb
1
Chrisb moved page [[Editing Move iTunes or Music Library]] to [[Move iTunes or Music Library]] without leaving a redirect
1564
wikitext
text/x-wiki
For Catalina - The process is the same but instead of "iTunes" folders you will be using "Music" Folder.
# Encourage customer to back up their music prior to moving the library.
# Check size of iTunes or Music library is to make sure that it fits in the location that you are moving it to (ie. external hard drive). To do this, right-click "Get Info" on the ~/UserName/Music folder or wherever the music is currently stored.
# Plug in external drive and make sure to quit iTunes/Music if open.
# Open Finder and select the Mac's hard drive.
# Click on the Music Folder
# Select iTunes and drag it to external hard drive. You may need to enter password. For Catalina, there is second folder named "Music" within the first Music folder. This is the one you will move.
# Once folder is transferred, press the option key and launch iTunes/Music.
# Click on Choose Library.
# Select the external hard drive under devices in Finder sidebar.
# Open iTunes or Music folder.
# Check items in iTunes/Music to make this was successful (you can find info by right-clicking a song and selecting "Get Info" to verify where the file is stored).
# If working, you can either delete the old iTunes/Music library on the internal drive.
# The external MUST be connected when iTunes/Music is launched going forward in order to find the files.
b673haqwy54sxj5y2dpqwmh2x9arjbj
Multimeter
0
1690
5182
5181
2020-11-03T06:17:30Z
OptimizeLogicRepair
243
5182
wikitext
text/x-wiki
-Just get a nice multimeter, non accurate measurements will only hurt you and your learning progress
-Fine/needle point gold leads and their importance
Good multimeter leads with sharp tips help with measuring tiny resistors without slipping and potentially causing a short. A good option is Probe Master brand. USA company based in California, top notch quality.
cxjizpe21jqjpgu3gt7z7t97oz2ucgt
NAND Compatibility
0
530
1159
1158
2020-05-01T14:22:15Z
Dusten04
30
1159
wikitext
text/x-wiki
<br />
==32/64bit NAND (ALL CROSS COMPATIBLE) LGA60==
===Programmer Needed: NaviPlus===
iPhone 5
iPhone 5s
iPhone 5c
iPhone 6
iPhone 6 Plus
iPad Air 1
iPad Air 2
iPad Mini 1
iPad Mini 2
iPad Mini 3
iPad Mini 4
<br />
==PCI-E NAND: (ALL CROSS COMPATIBLE)==
===Programmer Needed: P7===
iPhone 6s
iPhone 6s Plus
iPhone 7
iPhone 7 Plus
iPhone SE (2016)
iPad 5
iPad 6
iPad 7
iPad Pro 12.9 1st Generation
iPad Pro 12.9 2nd Generation
iPad Pro 9.7
iPad Pro 10.5
<br />
==PCI-E 2: (ALL CROSS COMPATIBLE)==
===Programmer Needed: P11===
iPhone 8
iPhone 8 Plus
iPhone X
==Newer Models: (ALL CROSS COMPATIBLE)** READ DISCLAIMER**==
===Programmer Needed: P11===
iPhone XS
iPhone XS Max
iPhone XR
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPad Pro 12.9 3rd Generation
iPad Pro 12.9 4th Generation
iPad Pro 11 1st Generation
iPad Pro 11 2nd Generation
<nowiki>*</nowiki>DISCLAIMER: If iPad Pro came with Black NAND, it will work with Silver NAND, but may cause issue. If iPad Pro came with Silver NAND, it will work with Black and Silver
d45rnf480mkgdp49n7k8g1ducfkyiag
NVRAM
0
1432
3164
2020-10-10T22:11:36Z
QuiveryNut
206
Created basic page for NVRAM
3164
wikitext
text/x-wiki
Similar to PRAM
Key Combination: Option + Command + P + R
Stands for "Non-volatile Random-Access Memory", NVRAM is Random-Access Memory that stores information that's accessed during boot even before the OS X bootloader kicks in. NVRAM stores information for Volume, screen resolution, time zone information, and which disk to boot from. Corrupt NVRAM can cause glitches and prevent the machine from booting, and while clearing it may not solve the problem, its always a good first step.
9v1wpvkt2ec9mpx03ak7i9gpjpqekus
Nintendo Switch
0
2107
6327
2022-01-08T05:29:17Z
Alpha Bravo Tech.
538
Created page with "Nintendo Switch info here [[Category:Game Consoles]]"
6327
wikitext
text/x-wiki
Nintendo Switch info here
[[Category:Game Consoles]]
38ys70vgki6n3fbkwl10vrjybdqvhwx
Nintendo Switch Lite
0
2108
6328
2022-01-08T05:29:38Z
Alpha Bravo Tech.
538
Created page with "Nintendo Switch Lite info here [[Category:Game Consoles]]"
6328
wikitext
text/x-wiki
Nintendo Switch Lite info here
[[Category:Game Consoles]]
g9hvfcj7qfsko7236suzhykasdz0mdm
Older MacBook Power up Sequence
0
20
7094
802
2024-05-03T06:35:48Z
Acro
1133
Link PPBUS_G3H
7094
wikitext
text/x-wiki
2008 [https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/systems-without-suspend-supply-paper.pdf document] from intel about power states.
Notes:
1. An always-on PP3V42_G3H 3.42V power rail is created directly from internal battery or a charger. This power rail powers the System Management Controller (SMC). The Mac is in “off mode" (G3) but the SMC keeps scanning the keyboard power-on button and Magsafe connector for further inputs.
2. If you connect Magsafe to the Mac, the SMC will read code from the chip on the Magsafe connector to identify the type of charger connected. The charger outputs a pre-set voltage (14.5/16.5/18.5/20) 1 second after the connection is stabilized and the charger type is identified. The green light then turns on. The charging circuit will receive power from Magsafe. A power management chip will create a [[PPBUS_G3H]] power rail, operating at 12.6V for MBP and 8.4V for MBA and Retina. The SMC reads the chip on the battery to check the battery status and therefore determine the required charging current. If the battery is empty then a high current will be applied (fast charging mode).The current will be gradually reduced when the battery is near full. The orange light turns on while battery is being charged. Once the battery is fully charged, the green light will turn on again and no current will be sent to the battery.
3. When you press the power-on button then release it, a high-low-high pulse will be sent to SMC. SMC will enable a power management chip to create a 3.3V power rail from the PPBUS_G3H rail. This rail powers up Intel’s Platform Controller Hub’s (PCH) real-time clock circuit, deep sleep power well, and suspend power well. PCH will enable the remaining power management chips to create different voltage rails (5.0V, 1.8V, 1.5V, 1.35V, 1.2V, 1.05V, 0.9V, etc. depending on hardware design) for different devices. All these power rails can be measured on the inductors (coil). Since more than 50% of faulty logic boards are related to one or more missing power rails, this information will be helpful if you decide to get it fixed by a component level repairer.
4. The memory module (RAM) will receive power first followed by the CPU, hard drive, optical drive, graphics chip, screen, sound chip, and WiFi card. DDR3 RAM will receive the 1.5V power rail (1.35V for low voltage DDR3). Mechanical hard drives and optical drives will receive the 3.3V and 5V rails. SSD drives will receive the 3.3V rail only. CPU and GPU core power rails are dynamic depending on load.
5. All power rails report to the SMC by sending PG (power good) signals. If any one of these rails fail to send a PG signal within a pre-set time, the SMC would shut down all power rails except the always-on PP3V42_G3H 3.42V rail and PPBUS_G3H 12.8V/8.4V rail. Multiple voltage and current sensing circuits, in addition to other protective circuits are implemented in the MacBook logic board as safety measures. Malfunction of any one of these circuits can shut down all power rails to protect the MacBook. This is the reason why MacBooks are much harder to repair than other laptop brands. If all the power rails are fine, SMC will report to PCH and it will send a “reset” signal to the CPU.
6. Upon receiving the reset signal, the CPU will load BIOS/EFI codes (hardware specific codes stored in the ROM chip) to the memory module and execute POST (Power-On-Self-Test). After POST, all devices including the hard drive, optical drive, USB, sound card, WiFi and GPU will be initialized and ready to go.
7. The GPU will read the code chip on the LVDS (Low Voltage Differential Signalling) or eDP (Embedded Display Port) screen circuits for resolution setting and switches on the screen image processing logic circuit and back-light circuit. The Mac will chime at the same time as screen back-light turns on. If you hear a chime but no image on the screen, shine a touch from the back of the screen through the Apple logo and if you can see the image, then the Mac has back-light problem. You may have a faulty screen (LED light or cable fault) or faulty back-light circuit on the logic board. Apple puts the back-light circuit on the logic board instead of on the screen as other brand names do. This is the major reason why other screen brands cannot be used on MacBook. This design also makes MacBook particularly vulnerable to water damage. Water can kill the 28V-50V back-light circuit instantly.
8. The CPU starts and executes BIOS/EFI’s PnP (Plug and Play) codes to allocate resources such as DMA channels, I/O port address and IRQs.
9. The CPU then executes BIOS/EFI’s input/output codes to access bootable devices such as hard drives, optical drives or USB drives, searching for an operating system loader. If no bootable drive is found or the bootable drive does not have a loader, a question mark will be displayed. If a loader is found, the Apple logo will be displayed. The CPU then executes the loader and loads the rest of Apple’s OSX software into your Mac. You will see a loading progress bar while OSX loads (older OS X uses a rotating gear image).
10. The loader loads the core OSX first followed by application and hardware drivers. MacBooks with graphics issues usually start going wrong at 2/3rds of the loading progress bar, corresponding to the moment the graphics driver is being loaded and executed.
11. Upon finishing loading, control is passed to OSX.
[[Category:Mac]]
[[Category:MacBook]]
0otr1t3v3cujdpic3srkwl7aech0b1f
Option ROM
0
1434
3167
2020-10-10T22:25:18Z
QuiveryNut
206
Created basic page for Option ROM pulled from Wikipedia
3167
wikitext
text/x-wiki
An '''Option ROM''' is a piece of [[wikipedia:Firmware|firmware]] that resides in BIOS or on an expansion card, which gets shadowed into memory and executed to initialize the device and register it with the BIOS. It is essentially a driver that interfaces between BIOS services and hardware.
=== <u>UEFI Option ROMs</u> ===
The PCI spec allows multiple option ROM images on the same device. These option ROMs could be Legacy x86 & UEFI. If the Option ROM format is set to "UEFI Compatible" in the UEFI Setup, the DXE stage will load the newer UEFI Option ROM if one is present and the legacy Option ROM if one is not. UEFI can use legacy option ROMs when a [[wikipedia:Compatibility_support_module|Compatibility Support Module]] (CSM) is enabled. Note that when [[wikipedia:Secure_Boot|Secure Boot]] is enabled, execution of the Compatibility Support Module and legacy Option ROMs is prohibited because legacy firmware drivers do not support authentication, which is a security threat.
See [[wikipedia:Option_ROM|Wikipedia]] for more
g9um7sb33i40ek3nqkewwv15imc5bld
Oscilloscope
0
1691
5040
2020-10-17T20:14:58Z
JamesGilligan
200
Created page with "-Do you need one? -Price brackets and quality"
5040
wikitext
text/x-wiki
-Do you need one?
-Price brackets and quality
6xsw3jm2cdpniw6icowwc9pd6fb5stl
PM SLP S4 L Timing
0
2130
6385
2022-02-02T17:42:50Z
Chrisb
1
Chrisb moved page [[PM SLP S4 L Timing]] to [[PM SLP S4 L Timing Troubleshooting]]: searchablity
6385
wikitext
text/x-wiki
#REDIRECT [[PM SLP S4 L Timing Troubleshooting]]
97liwclo86o43gxjj6uuse58evup79l
PM SLP S4 L Timing Troubleshooting
0
19
6384
6383
2022-02-02T17:42:50Z
Chrisb
1
Chrisb moved page [[PM SLP S4 L Timing]] to [[PM SLP S4 L Timing Troubleshooting]]: searchablity
6383
wikitext
text/x-wiki
{{DISPLAYTITLE:PM_SLP_S4_L Troubleshooting}}
PM_SLP_S4_L Apple Mac Logic Board Signal Timing Discussion<br><br>
When will the CPU or PCH shoot out the PM_SLP_S4_L signal?<br><br>
This question burdens a lot of component level repair technicians. This article discusses the prerequisites that must be met before the Intel CPU/PCH outputs PM_SLP_S4_L. Once you understand the timing, missing PM_SLP_S4_L signal is not hard to deal with.<br><br>
There are two sets of PM_SLP_S4_L prerequisites. Intel 1st to 5th generation CPUs use the same set of prerequisites called 11+1 conditions. Intel 6th generation onward CPUs use a different set of prerequisites called 13+1 conditions (discuss in a separate article). Intel and Apple use a different naming system. We use the Apple naming system by default. Since Apple uses different names referring to the same Intel CPU/PCH signal in different models, we use MacBook Air 2013 A1466 Haswell-ULT CPU 820-3437 schematics here as an example.<br><br>
Intel 1st to 5th generation CPUs 11+1prerequisites for PM_SLP_S4_L:<br><br>
1. PPVRTC_G3H (VCCRTC) – Intel naming system<br>
2. RTC_RESET_L (RTCRST#)<br>
3. PCH_SRTCRST_L (SRTCRST#)<br>
4. PCH_INTVRMEN_L (INTVRMEN)<br>
5. PCH_DSWVRMEN_L (DSWVRMEN)<br>
6. SYSCLK_CLK32K_RTCX1 (RTCX1)<br>
7. PP3V3_S5 (VCCDSW3-3)<br>
8. PM_DSW_PWRGD (DPWROK)<br>
9. PP3V3_SUS (VCCSUS3)<br>
10. PM_BATLOW_L (BATLOW#)<br>
11. PM_RSMRST_L (RSMRST#)<br>
+1. PM_PWRBTN_L (PWRBTN#)<br>
If PM_SLP_S4_L missing, we need to check these before replacing the CPU/PCH.<br>
1. PPVRTC_G3H (VCCRTC) real-time clock circuit power supply. 3.3V ok<br>
2. RTC_RESET_L (RTCRST#) real-time clock circuit reset. 3.3V ok<br>
3. PCH_SRTCRST_L (SRTCRST#) secondary real-time clock circuit reset. 3.3V ok<br>
4. PCH_INTVRMEN_L (INTVRMEN) internal voltage regulators 1.05V and 1.5V enable. 3.3V ok<br>
5. PCH_DSWVRMEN_L (DSWVRMEN) deep sleep well(power) voltage regulator enable. 3.3V ok<br>
6. SYSCLK_CLK32K_RTCX1 (RTCX1) 32khz clock for RTC circuit. Measured by an oscilloscope.<br>
7. PP3V3_S5 (VCCDSW3-3) deep sleep well (power rail) present. 3.3V ok<br>
8. PM_DSW_PWRGD (DPWROK) deep sleep well not only present but also stable(OK). 3.3V ok<br>
9. PP3V3_SUS (VCCSUS3) suspended mode(shallow sleep mode) power rail present. 3.3V ok<br>
10. PM_BATLOW_L (BATLOW#) if the battery voltage is NOT low, or no battery is connected, SMC will output 3.3V to inform CPU/PCH. 3.3V ok<br>
11. PM_RSMRST_L (RSMRST#) stands for “resume reset”, the system is ready for resuming from suspended mode (from shallow sleep mode to wake up). 3.3V ok<br>
12. PM_PWRBTN_L (PWRBTN#) power button on/off. If the logic board is connected to the battery only, you need to press the power button on the keyboard to send a high-low-high pulse to the CPU/PCH (via SMC). If you connect the logic board to the charger only without connecting the battery, once SMC receives the SMC_BC_ACOK from charging circuit power management IC u7100, SMC will output SMC_ADAPTER_EN (ACPRESENT). In this case, the signal SMC_ADAPTER_EN will act as the same as PM_PWRBTN_L. In other words, the PM_PWRBTN_L is not always a “must" in some situation. It is why we call it “+1" condition.
When the 11 prerequisites are met, once you press the power button (PM_PWRBTN_L) or connect a charger to the logic board (SMC_ADAPTER_EN), CPU/PCH will shoot out PM_SLP_S5_L, PM_SLP_S4_L and PM_SLP_S3_L to enable S4, S3 and S0 state power rails.<br><br>
In most models, Apple does not utilise PM_SLP_S5_L, just feedback this signal to SMC and that is all. PM_SLP_S4_L will enable the S3 state power rails including the memory module power rail. PM_SLP_S3_L will enable the rest S0 state power rails.
[[Category:Mac]]
rglirqov8kln4vybvuk4tsvqfbf6kr1
PP3V42 G3H
0
51
565
333
2020-02-02T11:32:01Z
Piernov
10
Category Mac MacBook
565
wikitext
text/x-wiki
{{DISPLAYTITLE:PP3V42_G3H}}
PP3V42_G3H takes power from either the DC in or battery through a three legged SOT dual diode. It creates 3.42V from either source. It is used to power the circuits needed to create the [[S5]] power rail. The SMC and inrush/charging circuits use PP3V42_G3H as does the [[one-wire]] circuit. Without this rail you will not get a charger light. Check this first if you have no charger light with an [[OEM charger]].
==Troubleshooting==
Check for a [[short to ground]] on the output side of this [[power rail]] after the [[inductor]]. If there is a short you can [[inject voltage]] to find the component that gets hot.
If there is no short test the input and [[SHDN]] pins. The SHDN pin is fed through a [[resistor]] from [[VIN]]. After that test all the [[passive components]] around the [[buck converter]]. The [[voltage divider]] between output, feedback, and ground is used to keep the output as close to 3.42V as possible. If either resistor is out of spec, the voltage will be off.
If everything looks good, replace the chip.
[[Category:Mac]] [[Category:MacBook]]
iztjz7nnhribrf7g4xrdk9hy0ajcw8q
PPBUS G3H
0
2271
7095
2024-05-03T06:36:06Z
Acro
1133
Redirected page to [[PPBus G3H]]
7095
wikitext
text/x-wiki
#REDIRECT [[PPBus_G3H]]
hpgnjgjy893567cjbpxqtubkby6w4x5
PPBus G3H
0
50
7100
7099
2024-05-03T06:38:16Z
Acro
1133
Fix glitch
7100
wikitext
text/x-wiki
{{DISPLAYTITLE:PPBus_G3H}}
PPBus_G3H is the main power rail of the Mac. It is powered from either the battery or DC in. Its voltage will be based off how many battery cells are in series. The MacBook Pro series uses a 3S2P battery so on the charger it has a PPBus of 12.6V (12.2V before [[SMC]] boosts). The Air has a 2S3P battery so on the charger it has a PPBus of 8.6V (8.2 before boosting). This is to charge the battery, which will have a lower voltage than PPBus<br>Note : older Air have a lower PPBUS_G3H, at 8.4V.<br>
PPBus voltage on the battery will equal the current voltage of the battery. It is enabled from a MOSFET controlled by an ISL62xx through a current sensing resistor. This circuit controls how quickly the battery charges. If any of those components are damaged it may not run off battery or charge.<br><br>
The [[ISL]] that creates PPBus is powered from [[PP3V42_G3H]]. This rail is created either from the charger or battery. Since it is [[G3H]] rail it is always on when the Mac has power. All the power rails are created from this. Always check for [[#PPBus_Shorts]] when you do not have full PPBus voltage.
==PPBus Current Sense==
Measure resistance of the current sensing circuit at the PPBus Supply and Battery Charging chip. It is typically an ISL62xx. <br>
Pins 17/18 measure the battery charging/discharging current.<br>
Pins 27/28 measure the charger input current.<br>
Use the schematic to verify total resistance by adding the current sense resistor value and the value of the resistor on each pin. <br>
If the resistance is off by more than 10% check the individual passive components. Remember to account for the resistance of your leads<br>
<br>
[[MOSFETs|How to test MOSFETs]]
==PPBus Shorts==
Injecting 5V on PPBUS_G3H with a shorted high-side MOSFET = melting CPU/GPU/PCH
So no, it is ABSOLUTELY NEVER safe to inject a high voltage on this kind of rail. First you have to check exact resisntace to ground, can give an indication if it's a full short on the rail, or a partial short through a MOSFET.
If a partial short through a MOSFET is suspected, you have to find it first, so check resistance to ground on all the inductors, if there is a similar value check resistance between that inductor and the main power rail. If that gives an almost 0ohm resistnace there is a high-side MOSFET shorted that you have to remove first.
Otherwise always start at 1V and check if any large BGA is heating up first. If 1V is not enough to generate heat (remember that it's the power which is voltage times current that generates heat, not the voltage or the current alone) then you can try increasing little by little, checking again if any large BGA heats up.
Better be on the safe side, even if a shorted high-side MOSFET almost always means a dead BGA chip on newer platforms.
[5:31 PM] piernov: Let's take a concrete example: I'm working on an Haswell platform, I suspect a short to ground on main power rail because it is missing, I measure resistance to ground and I get 50 ohms. What can I conclude? This is a partial short, injecting voltage is not necessarily helpful in those cases, and it sounds like the resistance of CPU VCore. So I check resistance of CPU VCore to ground and I get 50 ohms as well. Then I check resistance between main power rail and CPU VCore and I get 0 ohm. Only then I can rightfully conclude I have a shorted high-side MOSFET on CPU VCore and I should not inject voltage but replace all high-side MOSFETs and their driver/controller (CPU is probably dead anyway though). [5:34 PM] piernov: Now, same platform, still suspecting a short to ground, but I measure 0.3 ohm to ground. Then this is a full short to ground, and it is unlikely any other power rails is measuring 0.3 ohm short to ground, so it is unlikely that I have a shorted high-side MOSFET. I don't have to waste my time measuring resistance between main power rail and each inductor. I can start by injecting 1V on the main power rail, monitoring current to know what power it is dissipating, and trying to locate the component that heats up, but still checking CPU/GPU/PCH first, you never know… If the power is not enough, I can slowly increase the voltage until I get a satisfying power dissipation (let's say 3W). [5:35 PM] piernov: This 2 to 5 basic measurements with the multimeter to know what's happening, before injecting voltage, before any soldering, before destroying the board. And it takes a minute to do at worst.
[[Category:Mac]]
[[Category:MacBook]]
g4iwhmzdnkeb827oas5ackwp4v1i15c
PRAM
0
1431
5421
3179
2020-12-25T01:27:07Z
Joesipaq
20
Added link to reset
5421
wikitext
text/x-wiki
Stands for "Parameter Random Access Memory," and is pronounced "P-ram." PRAM is a type of memory found in Macintosh computers that stores system settings. These settings include display settings (like screen resolution and color depth), the time zone setting, speaker volume, and the startup volume choice. The system settings that are stored in the computer's PRAM differ from Mac to Mac, but the purpose of the memory remains the same.
PRAM resetting a Mac is extremely important when processing for resale. The Find My Mac token is stored in PRAM.
To preform a PRAM reset, visit [[Startup_Keys#PRAM_Reset:|here - PRAM Reset]]
d0708ydcdvm3xwf5ddu1iqjb6061ieg
Playstation 4
0
2104
6405
6404
2022-02-07T06:17:49Z
Alpha Bravo Tech.
538
6405
wikitext
text/x-wiki
'''<big>Diode Mode Readings Around Southbridge on PS4 Pro NVG-002</big>'''
<br />[[File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK.jpg|none|thumb|Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK]]
[[File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT.jpg|none|thumb|alt=|Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT]]
[[Category:Game Consoles]]
mn3te1jnfd4nwdur1x2ax7wu06ng1xe
Playstation 5
0
2106
7093
6326
2024-05-02T04:08:20Z
Acro
1133
Add much needed punctuation
7093
wikitext
text/x-wiki
Playstation 5 info here.
[[Category:Game Consoles]]
qb49e5gjfc31a1qc9csmcpk3mhjb9fc
Power On Pads
0
102
2915
2914
2020-10-03T15:32:31Z
Chrisb
1
2915
wikitext
text/x-wiki
{{Mbox|text=A power button press can be simulated by shorting these two pads. A conductive pair of tweezers or a screwdriver tip will work.}}
MacBook Pro Unibody https://beetstech.com/blog/where-are-macbook-pro-unibody-power-on-pads-located
MacBook Air https://beetstech.com/blog/macbook-air-power-pads
Macbook A1534
It's hard to get access to SMC_ONOFF_L on these machines. To test keyboard functionality, these test points are useful.
[[File:A1534 SMC ONOFF Trackpad Test point.jpg|thumb|alt=|none|400x400px]]
Power button test point on the keyboard backside, under the black film (No continuity to SMC_ONOFF_L)
[[File:SMC ON OFF Keyboard TP.jpg|none|thumb| 400x400px]]
And the power pads are located here on the board:
[[File:SMC ONOFF L POWERPAD TOP.jpg|none|thumb| 400x400px]]
[[File:SMC ONOFF L POWERPAD BOTTOM.jpg|none|thumb| 400x400px]]
<br />
[[Category:Mac]]
[[Category:MacBook]]
9j6zrkqaasv9gqmg5cood38t93o77xe
Power Rail List
0
1920
5711
5708
2021-04-01T10:59:31Z
Piernov
10
typos
5711
wikitext
text/x-wiki
==A1278==
===820-3115===
{| class="wikitable"
|+
! colspan="7" |[[File:Optimize Logic Repair.png]]
|-
! colspan="7" |'''Model # A1278 - 820-3115'''
|-
|
|
|Normal
|
|
|
|Normal
|-
|"G3Hot" Rails
|PPBUS_G3H
|12.6V
|
|ENET Rails
|PP3V3_ENET
|3.3V
|-
|
|PPBUS_S5_HS_COMPUTING_ISNS
|12.6V
|
|
|
|
|-
|
|PPBUS_S5_HS_OTHER_ISNS
|12.6V
|
|"FW" Firewire Rails
|PPVP_FW
|12.8V
|-
|
|PPDCIN_G3H
|18.5V
|
|
|PP3V3_FW_FWPHY
|3.3V
|-
|
|PP3V42_G3H
|3.42V
|
|
|PP1V0_FW_FWPHY
|1.0V
|-
|
|PPVRTC_G3H
|3.3V
|
|
|
|
|-
|
|
|
|
|T29 Rails
|PP15V_T29
|17.8V
|-
|5V Rails
|PP5V_S5
|5.0V
|
|
|PP3V3_T29
|3.3V
|-
|
|PP5V_SUS
|5.0V
|
|
|PP1V05_T29
|1.05V
|-
|
|PP5V_S3
|5.0V
|
|
|
|
|-
|
|PP5V_S0
|5.0V
|
|1V05 S0 LDO
|PP1V05_S0_PCH_VCCADPLL
|1.05V
|-
|
|PP5V_S0_HDD
|5.0V
|
|
|
|
|-
|
|
|
|
|Chipset "VCore" Rails
|PPVCORE_S0_CPU
|1.25V
|-
|
|
|
|
|
|PPVCORE_S0_AXG
|1.05V
|-
|3.3V Rails
|PP3V3_S5
|3.3V
|
|
|PP1V5_S3_CPU_VCCDQ
|1.5V
|-
|
|PP3V3_SUS
|3.3V
|
|
|PP1V05_S0_CPU_VCCPQE
|1.05V
|-
|
|PP3V3_S4
|3.3V
|
|
|PP1V8_S0_CPU_VCCPLL_R
|1.8V
|-
|
|PP3V3_S3
|3.3V
|
|
|
|
|-
|
|PP3V3_S0
|3.3V
|
|
|
|
|-
|
|
|
|
|
|
|
|-
|1.8V/1.5V/
1.2V/1.05V Rails
|PP1V8_0
|1.8V
|
|
|
|
|-
|
|PP1V5_S3_DDR
|1.5V
|
|
|
|
|-
|
|PP1V5_S3
|1.5V
|
|
|
|
|-
|
|PP1V5_S3RS0
|1.5V
|
|
|
|
|-
|
|PP1V5_S0
|1.5V
|
|
|
|
|-
|
|PPVTTDDR_S3
|0.75V
|
|
|
|
|-
|
|PP0V75_S0_DDRVTT
|0.75V
|
|
|
|
|-
|
|PPVCCSA_S0_CPU
|0.9V
|
|
|
|
|-
|
|PP1V05_S0
|1.0V
|
|
|
|
|-
|
|PP1V05_S0_PCH
|1.0V
|
|
|
|
|}
==A1297==
===820-2914===
{| class="wikitable sortable mw-collapsible"
! colspan="7" |[[File:Optimize Logic Repair.png]]
|-
! colspan="7" |'''Model # A1297 - 820-2914'''
|-
|
|
|Normal
|
|
|
|Normal
|-
|"G3Hot" Rails
|PPBUS_G3H
|12.6V
|
|1.5V/1.05V Rails
|PP1V5_S0
|1.5V
|-
|
|PPVIN_S5_HS_COMPUTING_ISNS
|12.6V
|
|
|PP1V2_S0
|1.2V
|-
|
|PPVIN_S5_HS_OTHER_ISNS
|12.6V
|
|
|PP1V05_SUS
|1.05V
|-
|
|PPVIN_S5_HS_GPU_ISNS
|12.6V
|
|
|PP1V05_S0
|1.05V
|-
|
|PP3V42_G3H
|3.42V
|
|
|
|
|-
|
|PPVRTC_G3H
|3.42V
|
|Chipset Rails
|PPVCORE_S0_CPU
|1.1V
|-
|
|
|
|
|
|PPVCORE_S0_AXG
|1.02V
|-
|5V Rails
|PP5V_S5
|5.0V
|
|
|PPVCCSA_S0_CPU
|0.9V
|-
|
|PP5V_S3
|5.0V
|
|
|PP1V5_S3_CPU_VCCDQ
|1.5V
|-
|
|PP5V_S3_ISNS_R
|5.0V
|
|
|PP1V05_S0_CPU_VCCPQE
|1.05V
|-
|
|PP5V_S0
|5.0V
|
|
|
|
|-
|
|PP5V_S0_ISNS_R
|5.0V
|
|ENET Rails
|PP3V3_ENET
|3.3V
|-
|
|PP5V_SUS
|5.0V
|
|
|PP1V2_ENET
|1.2V
|-
|
|
|
|
|
|
|
|-
|3.3V/1.8V Rails
|PP3V3_S5
|3.3V
|
|T29 Rails
|PP3V3_T29
|3.3V
|-
|
|PP3V3_S4
|3.3V
|
|
|PP1V05_T29
|1.05V
|-
|
|PP3V3_S5_ISNS_R
|3.3V
|
|
|PP15V_T29
|15V
|-
|
|PP3V3_SUS
|3.3V
|
|
|
|
|-
|
|PP3V3_S3
|3.3V
|
|DDR Rails
|PP1V5_S3
|1.5V
|-
|
|PP3V3_S3_ISNS_R
|3.3V
|
|
|PP1V5_S3RS0
|1.5V
|-
|
|PP3V3_S0
|3.3V
|
|
|PP1V5_S3RS0_CPUDDR
|1.5V
|-
|
|PP1V8_S0
|1.8V
|
|
|PPVTTDDR_S3
|0.75V
|-
|
|PP1V8_S0_CPU_VCCPLL_R
|1.8V
|
|
|PP0V75_S0_DDRVTT
|0.75V
|-
|
|
|
|
|
|
|
|-
|"FW" Firewire Rails
|PPVP_FW
|12.6V
|
|GPU Rails
|PPVCORE_GPU
|1.5V
|-
|
|PP3V3_FW_FWPHY
|3.3V
|
|
|PP3V3_S0GPU
|3.3V
|-
|
|PP1V0_FW_FWPHY
|1.0V
|
|
|PP1V5_S0GPU_ISNS_R
|1.5V
|-
|
|
|
|
|
|PP1V5R135_GPU_FB_ISNS
|1.5V
|-
|
|
|
|
|
|PP1V0_S0GPU_ISNS_R
|1.0V
|-
|
|
|
|
|
|PP1V0_S0GPU_ISNS_R
|1.0V
|-
|
|
|
|
|
|PP1V8_S0GPU
|1.8V
|}
==A1466==
===820-3437===
{| class="wikitable"
|+
! colspan="7" |[[File:Optimize Logic Repair.png]]
|-
! colspan="7" |'''Model # A1466 - 820-3437'''
|-
|
|
|Normal
|
|
|
|Normal
|-
|"G3Hot" Rails
|PPBUS_G3H
|12.6V
|
|ENET Rails
|PP3V3_ENET
|3.3V
|-
|
|PPBUS_S5_HS_COMPUTING_ISNS
|12.6V
|
|
|
|
|-
|
|PPBUS_S5_HS_OTHER_ISNS
|12.6V
|
|"FW" Firewire Rails
|PPVP_FW
|12.8V
|-
|
|PPDCN_G3H
|18.5V
|
|
|PP3V3_FW_FWPHY
|3.3V
|-
|
|PP3V42_G3H
|3.42V
|
|
|PP1V0_FW_FWPHY
|1.0V
|-
|
|PPVRTC_G3H
|3.3V
|
|
|
|
|-
|
|
|
|
|T29 Rails
|PP15V_T29
|17.8V
|-
|5V Rails
|PP5V_S5
|5.0V
|
|
|PP3V3_T29
|3.3V
|-
|
|PP5V_SUS
|5.0V
|
|
|PP1V05_T29
|1.05V
|-
|
|PP5V_S3
|5.0V
|
|
|
|
|-
|
|PP5V_S0
|5.0V
|
|1V05 S0 LDO
|PP1V05_S0_PCH_VCCADPLL
|1.05V
|-
|
|PP5V_S0_HDD
|5.0V
|
|
|
|
|-
|
|
|
|
|Chipset "VCOR" Rails
|PPVCORE_S0_CPU
|1.25V
|-
|
|
|
|
|
|PPVCORE_S0_AXG
|1.05V
|-
|3.3V Rails
|PP3V3_S5
|3.3V
|
|
|PP1V5_S3_CPU_VCCDQ
|1.5V
|-
|
|PP3V3-SUS
|3.3V
|
|
|PP1V05_S0_CPU_VCCPQE
|1.05V
|-
|
|PP3V3_S4
|3.3V
|
|
|PP1V8_S0_CPU_VCCPLL_R
|1.8V
|-
|
|PP3V3_S3
|3.3V
|
|
|
|
|-
|
|PP3V3_S0
|3.3V
|
|
|
|
|-
|
|
|
|
|
|
|
|-
|1.8V/1.5V/
1.2V/1.05V Rails
|PP1V8_0
|1.8V
|
|
|
|
|-
|
|PP1V5_S3_DDR
|1.5V
|
|
|
|
|-
|
|PP1V5_S3
|1.5V
|
|
|
|
|-
|
|PP1V5_S3RS0
|1.5V
|
|
|
|
|-
|
|PP1V5_S0
|1.5V
|
|
|
|
|-
|
|PPVTTDDR_S3
|0.75V
|
|
|
|
|-
|
|PP0V75_S0_DDRVTT
|0.75V
|
|
|
|
|-
|
|PPVCCSA_S0_CPU
|0.9V
|
|
|
|
|-
|
|PP1V05_S0
|1.0V
|
|
|
|
|-
|
|PP1V05_S0_PCH
|1.0V
|
|
|
|
|}
===820-00165===
{| class="wikitable"
|+
! colspan="7" |[[File:Optimize Logic Repair.png]]
|-
! colspan="7" |'''Model # A1466 - 820-00165'''
|-
|
|
|Normal
|
|
|
|Normal
|-
|"G3Hot" Rails
|PPBUS_G3H
|8.6V
|
|LCDBKLT Rails
|PPHV_S0SW_LCDBKLT
|50V
|-
|
|PPBUS_S5_HS_COMPUTING_INS
|8.6V
|
|
|
|
|-
|
|PPBUS_S5_HS_OTHER_ISNS
|8.6V
|
|TBT Rails
|PP15V_TBT
|17.8V
|-
|
|PPDCIN_G3H_ISOL
|18.5V
|
|
|PP3V3_TBTLC
|3.3V
|-
|
|PPDCIN_G3H
|18.5V
|
|
|PP1V05_TBTCIO
|1.05V
|-
|
|PP3V42_G3H
|3.42V
|
|
|PPVIN_SW_TBTBST
|12.8V
|-
|
|PPVRTC_G3H
|3.0V
|
|
|
|
|-
|
|
|
|
|CPU "VCORE" Rails
|PPVCC_S0_CPU
|1.8V
|-
|5V Rails
|PP5V_S5
|5.0V
|
|
|
|
|-
|
|PP5V_S4RS3
|5.0V
|
|
|
|
|-
|
|PP5V_S0
|5.0V
|
|
|
|
|-
|
|
|
|
|
|
|
|-
|3.3V Rails
|PP3V3_S5
|3.3V
|
|
|
|
|-
|
|PP3V3_S4
|3.3V
|
|
|
|
|-
|
|PP3V3_SUS
|3.3V
|
|
|
|
|-
|
|PP3V3_S3
|3.3V
|
|
|
|
|-
|
|PP3V3_S0
|3.3V
|
|
|
|
|-
|
|PP3V3_S4SW_SNS
|3.3V
|
|
|
|
|-
|
|PP3V3_S0SW_SSD
|3.3V
|
|
|
|
|-
|
|PP3V3_S4_TBTAPWR
|3.3V
|
|
|
|
|-
|
|
|
|
|
|
|
|-
|1.8V/1.5V/
1.2V/1.05V Rails
|PP1V8_S3
|1.2V
|
|
|
|
|-
|
|PP1V2_S3
|1.2V
|
|
|
|
|-
|
|PP1V05_SUS
|1.05V
|
|
|
|
|-
|
|PP1V5_S0
|1.5V
|
|
|
|
|-
|
|PP0V6_S0_DDRVTT
|0.75V
|
|
|
|
|-
|
|PP1V05_S0
|1.05V
|
|
|
|
|-
|
|PP1V05_S0SW_PCH_HSIO
|1.05V
|
|
|
|
|}
==A1706==
===820-00239===
{| class="wikitable"
|+
! colspan="7" |[[File:Optimize Logic Repair.png]]
|-
! colspan="7" |'''Model # A1706 - 820-00239'''
|-
|
|
|Normal
|
|
|
|Normal
|-
|PBUS Rails
|PPBUS_G3H
|13.1 V
|
|
|PP1V8_S4
|3.3 V
|-
|
|PPBUS_HS_CPU
|13.1 V
|
|
|PP1V8_S3
|1.8 V
|-
|
|PPBUS_HS_OTHSV
|13.1 V
|
|
|PP1V8_S3_MEM
|1.8 V
|-
|
|PPBUS_HS_OTH3V3
|13.1 V
|
|
|PP1V8_S0
|3.3 V
|-
|
|PPBUS_S4_HS_TPAD
|13.1 V
|
|
|
|
|-
|
|
|
|
|1V0 Rails
|PP1V0_SUS
|1.0V
|-
|3V3 G3H Rails
|PP3V3_G3H
|3.3 V
|
|
|PP1V0_SUSSW
|1.0V
|-
|
|PP3V3_G3H_SMC_ISNS
|3.3 V
|
|
|PP1V0_S3
|1.0V
|-
|
|
|
|
|
|PP1V0_S0SW
|1.0V
|-
|RTC Rails
|PP3V0_G3H
|3.0 V
|
|5V Rails
|PP5V_S5
|
|-
|
|
|
|
|
|PP5V_S4
|5.0 V
|-
|IMVP Rails
|PPVCC_S0_CPU
|1.5 V
|
|
|PP5V_S4SW
|5.0 V
|-
|
|PPVCCSA_S0_CPU
|1.5 V
|
|
|PP5V_S4SW_ISNS
|5.0 V
|-
|
|PPVCCGT_S0_CPU
|1.5 V
|
|
|PP5V_S0
|5.0 V
|-
|
|
|
|
|
|PP5V_S0_KBD
|5.0 V
|-
|CPU VCCIO Rails
|PPVCCIO_S0_CPU
|0.95 V
|
|
|
|
|-
|
|
|
|
|3V3 Rails
|PP3V3_S5
|3.3 V
|-
|CPU EDRAM Rails
|PPVCCEDRAM_S0_CPU
|1.05 V
|
|
|PP3V3_SUS
|3.3 V
|-
|
|
|
|
|
|PP3V3_S4
|3.3 V
|-
|PCH Prime Core Rails
|PPVCCPRIMCORE_SUS_PCH
|1.0 V
|
|
|PP3V3_TBT_X_S0
|
|-
|
|
|
|
|
|PP3V3_TBT_T_S0
|
|-
|0V6 Rails
|PP0V6_S0_DDRVTT
|0.6 V
|
|
|PP3V3_S4_BT
|3.3 V
|-
|
|PP0V6_S3_MEM_VREFDQ_A
|0.6 V
|
|
|PP3V3_S4_TPAD
|3.3 V
|-
|
|PP0V6_S3_MEM_VREFCA_A
|0.6 V
|
|
|PP3V3_S4SW_SNS
|3.3 V
|-
|
|PP0V6_S3_MEM_VREFDQ_B
|0.6 V
|
|
|PP3V3_S5_SSD_LB
|3.3 V
|-
|
|PP0V6_S3_MEM_VREFCA_A
|0.6 V
|
|
|PP3V3_S5_SSD
|3.3 V
|-
|
|
|
|
|
|PP3V3_S4_MESA
|3.3 V
|-
|1V8 Rails
|PP1V8_SUS
|1.8 V
|
|
|PP3V3_2V7_NAND_VCC
|2.7 V
|-
|
|
|
|
|T208 Rails
|PP3V3_S5_T139
|3.3 V
|-
|
|
|
|
|
|PP3V3_S4_SOC_PMU
|3.3 V
|}
d8wx38o08jf1hd6dfw5wooyiui96942
Power Rail Order
0
1923
5665
2021-03-11T14:42:23Z
Chrisb
1
Chrisb moved page [[Power Rail Order]] to [[Power Rail List]]: More accurate
5665
wikitext
text/x-wiki
#REDIRECT [[Power Rail List]]
9b9m246m6nhtga9f1vpdez2j4kr30gk
Power Supply
0
1741
6430
6429
2022-02-18T18:38:52Z
Inwerp
16
6430
wikitext
text/x-wiki
==How to start 15" MacBook with lower wattage supply/fake cable and no battery==
1. Device will start in SMC Bypass mode (Hold power button and plug n magsafe cable. release after 5 seconds), device will start with no magsafe light and full fan
2. pull up SMC_BATLOW_L to 3v3_S5 Lineline. Device should immidiately start. On 820-2915 board that would be R5040 pin 1 to pin 3 of Q5040.
[[File:batlow l to 3v3 s5.png|none|thumb|How to start 15" MacBook Pro with Start with 65w charger and no battery]]
==Why its important to have a good power supply==
Even slight overvoltage(~25V) might cause mainboard damage. If you take in the device with cheap Knock/off charger - ALWAYS tell customer to buy a good one. It would also be reasonable to warranty if customer ignores your recommendation. In most burned ISL6259 cases there is a knock-off charger somewhere in customer's backpack.
'''Magsafe 1&2:''' get a dead OEM 85W charger and use its cable to have a reference cable: such cable will work with every Macbook. This is really important if you troubleshoot SMC/ISL6259/Battery. You also need to check it with original working charger after the repair: if you have bad [[Magsafe Sleep Mode|MagSafe Sleep mode]], your device wont run from OEM charger but will work on bench!
Important note: Refer to [https://logi.wiki/index.php/MacBook_Battery_Compatibility#MacBook_Pro_15%22 MacBook Battery compatibility page] for the list of boards which wont boot / properlz start with no battery wven on proper charger.
[http://www.righto.com/2013/06/teardown-and-exploration-of-magsafe.html Read more about how OEM MagSafe works and what exactly is hidden in Magsafe connector.]
'''USB-C Models:''' you need a 100W power supply to autostart 16" macbook, so thats also must have for your bench. <br />
<br />
iwbmgbh9peejgsn9gbgdtg8i7oojlyp
Programmers
0
1746
5167
5151
2020-10-29T00:18:07Z
Chrisb
1
Chrisb moved page [[programmers]] to [[Programmers]] without leaving a redirect
5151
wikitext
text/x-wiki
-Programmers recommended
-iphone
-macbook
lxn8x9kvr9b86fmzggvss4giqua0rxi
Proper Nomenclature
0
738
7125
1758
2024-06-14T12:25:40Z
Francis
4
/* Operating System & Formatting */
7125
wikitext
text/x-wiki
'''Not sure how to properly refer to a product on a work order? Check here.'''
Things listed here will be properly capitalized and worded. Any additions are welcome. Just run them by your leader first.
''This is not to waste your time or insult your intelligence telling you obvious things like what an iPhone is. This page exists so that we can efficiently communicate in work orders and all be on the same page. Proper capitalization of nomenclature will be taken VERY seriously in work orders or any type of documentation that will be in front of a customer at ANY time.''
<br />Link to Apple official [https://www.apple.com/legal/intellectual-property/trademark/appletmlist.html trademark names] and [https://www.apple.com/legal/intellectual-property/guidelinesfor3rdparties.html guidelines on usage].
==Operating System & Formatting==
macOS - Macintosh Operating System
iOS - iPhone and iPod Touch Operating System, also on older iPad models which do not update to iOS 13.
watchOS - Apple Watch Operating System
iPadOS - iPad Operating System
HFS - Hierarchical File System - Mac OS Standard - drive format up to macOS 9
HFS+ - Hierarchical File System Extended - Mac OS Extended - drive format up to 10.13 High Sierra
APFS - Apple File System - drive format beginning with 10.13 (High Sierra) to present macOS. Read/write support was introduced in Sierra, but Sierra will not boot from an APFS formatted drive. The High Sierra installer converts HFS to APFS with SSDs. The Mojave installer converts all HFS to APFS. If Mojave is cloned to a HFS drive it will boot but not update.
==Devices==
iPhone
iPad
iPad Pro
iPad Air
iPad mini
iPod - Apple Music Player
iPod Touch - Touch screen variant of the iPod
Apple Watch - do NOT use iWatch
Apple TV 4K - Apple streaming device in 4K
Apple TV HD - Apple streaming device
HomePod - Apple's smart speaker
<br />
==Computers==
MacBook Pro - Not to be confused with a standard Aluminum MacBook
iMac - Desktop all-in-one Apple machine
iMac Pro - Desktop all-in-one Apple computer, introduced in 2017
Mac mini - Stand alone Apple computer in a small form factor
Mac Pro - Apple aluminum tower. Switched form factor in 2013 to the cylinder.
==Accessories==
Magic Keyboard - Wireless, battery operated Bluetooth Apple keyboard
Magic Keyboard 2 - Wireless, rechargeable Bluetooth Apple keyboard - uses lightning to USB cable
Magic Keyboard with Numeric Numberpad - Wireless, rechargeable Bluetooth Apple Keyboard, comes in white or Space Gray - uses lightning to USB cable
Magic Trackpad - Wireless, battery operated Apple Bluetooth track pad
Magic Trackpad 2 - Wireless, rechargeable Bluetooth Apple track pad - uses lightning to USB cable
Magic Mouse - Wireless, battery operated Bluetooth Apple mouse
Magic Mouse 2 - Wireless, rechargeable Bluetooth Apple mouse - uses lightning to USB cable.
Apple Mouse - formerly Apple Mighty Mouse - Wired and wireless options, Apple USB mouse with trackball feature
Lightning to USB cable - Apple USB charging cable using a lightning connector
30-pin to USB cable - Apple USB charging cable used with older iPod, iPhone, and iPad devices
MagSafe charger - Apple's magnetic charger for notebooks, 1st generation used from 2006 - 2012
MagSafe 2 charger - Apple's magnetic charger for notebooks, 2nd generation, introduced in 2012.
AirPods - Wireless bluetooth headphones (come in 1st generation, 2nd generation, and Pro models)
EarPods - Wired headphones
Apple Pencil - 1st and 2nd generations, for use with new model iPads
Smart Keyboard - iPad accessory for iPad Pros and 7th generation iPad
Apple USB SuperDrive - Apple's external USB optical drive
AirPort Extreme - functions as router, network switch, wireless access point
AirPort Time Capsule - AirPort Extreme but includes internal hard drive for Time Machine backups or network attached storage.
AirPort Express - Wi-Fi base station
==Common Parts==
LCD - Liquid Crystal Display
OLED - Organic light-emitting diode
Top case - varies by model, but typically includes keyboard, trackpad, speakers, microphone and other small parts
Display assembly - notebook display including clamshell, hinges, etc.
<br />
45vimd0tr2pz1ztu50tow9ps4stzu4d
Purple - iOS research
0
725
1682
1647
2020-09-13T04:20:21Z
Joesipaq
20
1682
wikitext
text/x-wiki
What is purple? How do you use it? What can be done? This is where we will explore that. (in progress)
==[[BBOX|Using Purple with BBOX/ Windows]]==
==Using Purple with DCSD cable/ Mac==
c8ms0ryxzgss7reshbu7d5c3ez933tp
QuickLookd
0
126
568
344
2020-02-02T11:32:41Z
Piernov
10
Category Mac
568
wikitext
text/x-wiki
Quicklookd can get stuck indexing files when iCloud drive is turned on. Its usually third party extensions that cause issues. To fix the problem run the following command and restart.<ref>http://hamell.net/how-to-disable-os-x-quick-look/</ref><syntaxhighlight lang="bash">
defaults write “$3/System/Library/LaunchAgents/com.apple.quicklook” Disabled -bool true
</syntaxhighlight>
[[Category:Mac]]
7wkwus8mnt7x7henjxitxyfkvdbl2c1
Recovery Mode
0
114
6261
569
2021-11-27T14:27:39Z
Inwerp
16
Added small recovery mode tip
6261
wikitext
text/x-wiki
'''Recovery Mode'''
This covers the start up mode using Command + R keys.
Note: Recovery Mode takes longer to boot - this is normal.
Things you can do in Recovery Mode:
*Restore from Time Machine back up
*Reinstall the last macOS that was previously installed
*Go to Apple Support help online
*Use Disk Utility to partition, repair, erase, format drives
*Add or remove an EFI password (must know password if removing)
*Troubleshoot network connection
*Open Terminal from Recovery Partition (reset user password, disable/enable SIP, change date, etc.)
*Select a different startup disk
*See the Installer Log
If you cannot startup in Recovery Mode by this startup combination, the recovery partition may be corrupt or non-existent, keyboard may be faulty, or the Mac was running an older OS (10.6 or older). Try a wired keyboard, Internet Recovery, a different startup disk, or bootable installer.
<br />
=== Using Recovery environment to backup folders and data ===
In some cases (for example, you replaced PCH on 16" Macbook Pro and it wont boot untill DFU Restore clears the ME region, target disk mode dows not work too) you can only use recovery mode.
You can actually backup any folder or even whole partition using Disk utility. Simply mount target drive and unlock source drive, then create an image of folder you need.
[[Category:Mac]]
rgo78jj60fiseniat05p3lbvpor3v5s
Reflow & Replace SMC
0
1330
2904
2020-09-30T17:21:09Z
Onebitetechnology
13
Reflow/Reball instructions for SMC!
2904
wikitext
text/x-wiki
Remember that your troubleshooting steps should point to this as a potential solution, don't do this without a specific reason.
Reflow:
Remove edge bonding and heat at 280 Celsius with flux to burn any crap underneath. If no change, 430 full air flow no nozzle. Give it a '''light''' nudge once you can see it moving under the air.
Replace:
430 full air, no nozzle. Grab it off once it is moving. Clean the board and remove all the old solder.
Mount your SMC upside down (ball side up) in a bracket/vice/clamp etc that will hold it still. Clean off the solder and clean with iso. Place your SMC stencil and hold it in place with tape or another method.
Apply solder paste. I use the back of a spudger to scrape the paste into all the holes. Go over it a few times with the excess paste to make sure the holes are filled. Brush the top clean with a dry cloth or iso pad (not soaked though). Make sure there isn't any excess paste sitting on top of the stencil.
Be PATIENT. I slowly heat at 385 degrees with airflow of 40-50. Hold it a few inches away to let it heat (I count to 10 or 15), then move it closer by an inch, count again. Keep doing this until you see the paste starting to heat and form balls. Don't get too close or you risk blowing the balls out of their holes. Again, be patient. Once all the balls are melted, inspect closely to ensure they are all similar and uniform. If any "bulge", push the solder down with the tip of your tweezer, and then heat it again until it melts and goes to where it should be. If any look small/low, add the tiniest amount of paste using the tip of your tweezer, and reflow.
As is it cooling, add a TINY bit of flux which will get between the stencil and the SMC to help with removal. This may not be necessary, but I find it helps.
Remove your stencil/SMC from your mount. I use a flat blade xacto and slowly wedge it under the edge of the SMC. Wiggle ever so slowly until it breaks free from the stencil.
Apply a small amount of flux to the board, and cover the whole SMC area. Not too much, or the SMC will "float" and might now stick to the right spot.
Apply the SMC into place, and again, slowly apply heat (low airflow so it doesn't blow away). You can hold it in it's place with tweezers, just be careful not to be apply pressure. Just keep it from moving out of place. Once it has attached itself in place, you can turn up the airflow to make sure it is properly flowed. I've found you can't go too high with the heat or airflow after a reball as the low melting point of the paste/solder will cause it to blow away, so just be aware.
jgx6cqlwqd2tcmwstact4hm0s0ysivt
Replacement Capacitors for Older Macintosh Computers
0
2001
5939
5916
2021-07-12T09:14:38Z
Hexington
489
5939
wikitext
text/x-wiki
<big>This page outlines the capacitors that are on the boards of older Macintosh computers and where to locate them. If there are any errors please feel free to correct me.</big>
<big>Macintosh SE/30</big>
Note: SMD Electrolytics can be substituted for Tantalum polymer caps provided they are correctly rated for voltage, can physically fit and due to the contact size/shape differing from the originals care must be taken to ensure that soldering them doesn't contact unwanted nearby vias. The benefits are they won't leak in the future.
10x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser] | Tantalum [https://uk.farnell.com/avx/tcqd476m016r0070/cap-47-f-16v-20/dp/2845687 Farnell]
01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser] | Tantalum [https://uk.farnell.com/kemet/t521b105m050ate200/cap-1-f-50v-20/dp/2855275 Farnell]
01x 16V 220µF Electrolytic Through-Hole (Radial) [https://ebay.us/XHP7VI eBay], [https://www.mouser.com/ProductDetail/Elna/RFS-16V221MH55?qs=HV%2FSjD3ivR8SPzpuGAdFSg%3D%3D Mouser] | (Axial) [https://ebay.us/AzavNI eBay](Select 16V 220µF), [https://www.mouser.com/ProductDetail/Vishay/MAL213835221E3?qs=cAZGeXF9iMrACMoSNANXsA%3D%3D Mouser]
01x 16V 470µF Electrolytic Through-Hole (Radial) [https://ebay.us/nLfLwD eBay], [https://www.mouser.com/ProductDetail/Elna/RFS-16V471MI65?qs=HV%2FSjD3ivR8sl6Ua5eZbKQ%3D%3D Mouser] | (Axial) [https://ebay.us/h2i04c eBay], [https://www.mouser.com/ProductDetail/Vishay-BC-Components/MAL213835471E3?qs=cAZGeXF9iMrD9rFShf%252Bcsg%3D%3D Mouser]
[[File:Macintosh_SE-30_Capacitor_Placement.jpg|alt=|frameless|615x615px]]
<big>Macintosh LC</big>
AP1455-03
01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser]
01x 6.3V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser]
08x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser]
05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser]
[[File:Macintosh_LC_Capacitor_Placement_01.jpg|alt=|frameless|600x600px]][[File:Macintosh_LC_Capacitor_Placement_02.jpg|alt=|frameless|600x600px]]
<big>Macintosh LCII</big>
820-3027-A
05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser]
01x 6V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser]
10x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser]
01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser]
[[File:Macintosh_LCII_Capacitor_Placement_01_Corrected_2.jpg|alt=|frameless|600x600px]][[File:Macintosh_LCII_Capacitor_Placement_02.jpg|alt=|frameless|600x600px]]
<big>Macintosh LCIII</big>
820-0650-B
05x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser]
01x 6V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser]
05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser]
[[File:Macintosh_LCIII_Capacitor_Placement.jpg|alt=|frameless|600x600px]]
mapb76uz36m93fjr1fu17ul0u0ujmge
Reset to EFI POST State for Ivy Bridge Haswell and Broadwell
0
783
1688
1674
2020-09-13T11:37:30Z
Chrisb
1
Redirected page to [[Bootup Signal Order]]
1688
wikitext
text/x-wiki
#REDIRECT [[Bootup Signal Order]]<br />
gy7frwrxiuivpj17ag44y7zye2056yf
Resistance to Ground List
0
41
6649
6458
2022-10-14T19:37:28Z
Chrisb
1
6649
wikitext
text/x-wiki
I feel it important to state that this is truly Resistance to ground - not Diode readings.
Paul Daniels is adding resistance and voltage to FlexBoardView. Linking to his repo [https://openboarddata.org here]
==Resistance by Board Number==
===820-2796 2010 11" MacBook Air===
L6995 PP3V42_G3H 160 KΩ
===820-3024 2011 11" MacBook Air===
C7649 PP1V05_S0 51 Ω
===820-00165 2015/17 13" MacBook Air===
C2740 PP0V6_S0_DDRVTT 630 Ω
C7648 PP1V05_S0 217 Ω
C1910 PPVRTC_G3H ~ 7 MΩ
C6100 PP3V3_SUS 54 kΩ
==='''820-00875 2016 13" MacBook Pro with Function keys'''===
L2950 VR09V_IND_TBT_X 564 Ω
C2994 PP3V3_TBT_X_F 2.8 KΩ
<br />
==CPU Resistance==
===Penryn===
2010 MBA 11" 59 Ω<br>
2010 MBP 13" 23.5 Ω<br>
2010 MBP 13" P8600: 62Ω<br>
===Arrandale===
2010 MBP 15" i5 101 Ω<br>
2010 MBP 15" i7 51 Ω<br>
2010 MBP 15" i5-520M: CPU=15Ω/iGPU=64Ω<br>
2010 MBP 15" i5-540M: CPU=57Ω/iGPU=33Ω, CPU=46Ω/iGPU=59Ω<br>
===Sandy Bridge===
2011 MBP 13" i5 8 Ω<br>
2011 MBP 13" i5-2415M: CPU=17Ω/iGPU=15Ω<br>
2011 MBA 11" I5 23 Ω<br>
2011 MBA 13" i5-2557M: CPU=25Ω/iGPU=20Ω, CPU=29Ω/iGPU=25Ω<br>
2011 MBA 13" i7-2677M: CPU=25Ω/iGPU=23Ω<br>
===Ivy Bridge===
Down to 1.5 Ω<br>
2012 MBP 13" i5-3210M: CPU=2.0Ω/iGPU=1.3Ω<br>
2012 MBP 13" i7-3520M CPU=2.0Ω/iGPU=2.1Ω<br>
2012 MBP 15" i7 4.1 Ω<br>
2012-E2012 MBPr 15" 1.5 Ω<br>
2012 MBA 13" i5 4.3 Ω<br>
2012 MBA 13" i5-3427U: CPU=3.4Ω/iGPU=2.0Ω<br>
===Haswell===
====Haswell-U====
At least 20 Ω<br>
L2013-2014 13" MBP<br>
L2013 MBP 13" i5-4258U: 53Ω, 76Ω, 77Ω<br>
M2014 MBP 13" i5-4278U: 165Ω<br>
2013-2014 MBA i5 120 Ω <br>
====Haswell-H====
Above 10Ω<br>
L2013-M2014 15" MBP<br>
L2013 15" MBP iGPU i7-4750HQ: 22Ω, 35Ω<br>
M2014 15" MBP iGPU i7-4770HQ: 10Ω, 15Ω<br>
M2014 15" MBP dGPU i7-4870HQ: 15Ω<br>
L2013 15" MBP dGPU i7-4850HQ: 21Ω<br>
===Broadwell===
Around 18 Ω<br>
2015 13" MBP i5 15 Ω<br>
2015 MB<br>
2015-2017 11 MBA i5 23 Ω<br>2015-2017 13 MBA i5 18 Ω<br>
2015-2017 13 MBA i7 23 Ω<br>
===Skylake===
6 Ω, 7 Ω<br>
2016 MBP<br>
2016 MB<br>
===Kaby Lake===
2017 MBP 13" i5 10 Ω<br>
2017 MB 12" m3 16 Ω<br>
===Coffee Lake===
2018-2019 MBP 15" 4.8 Ω<br>
2018-2019 MBP 13"<br>
2019 MBP 16"<br>
===Amber Lake Y===
2018-2019 MBA<br>
[[Category:Mac]]
[[Category:MacBook]]
9gt7ilfmrsguvp4k4f7y87qc9els204
Resistor
0
52
571
86
2020-02-02T11:34:07Z
Piernov
10
Category Resources
571
wikitext
text/x-wiki
A resistor is a passive component that resists the flow of electricity. It is used to lower current or divide voltages. Resistors usually fail open or at a higher resistance.
Be careful testing resistors in circuit. They will usually test lower as there are other paths the current can take.
See the full Wikipedia entry on [https://en.wikipedia.org/wiki/Resistor resistors]
[[Category:Resources]]
eitfz5lznf6xs8gvy7gzkmipi1vlk67
Resources and Tools
0
98
6944
6225
2023-09-29T06:30:01Z
CBax
996
discord dead links
6944
wikitext
text/x-wiki
==Links==
===Software===
[https://pldaniels.com/flexbv/ FlexBV]: Paul Daniel's wonderful FlexBV takes board view files and schematics together to make an easy to search tool. You can easily move back and forth between board views and schematics just by right clicking. It also has an amazing parts search, so you can find that missing component on a totally different board. Clicking on nets highlights everything attached, pin 1 shows up red, and it will soon include resistance readings, voltages, and basic instructions. iPhone boards are now supported. Check the links below.<br>
[https://store.ipadrehab.com/ZXW-3-0-INSTANT-ONLINE-License-Code-p93116884 ZXW]: is the original reverse engineered board view for iPads and iPhones. Paul's software is rapidly taking over, but this has a few things that are still relevant.<br>
[http://dosdude1.com/software.html DosDude1's macOS Patcher] to run macOS on unsupported hardware. Please note, not all machines supported by this patch will run well, for example the unibody iMacs do not have an integrated GPU and the dedicated is not supported.<br>
[https://computeco.de/Demux DosDude1's DeMux] to turn off the 2011 series MacBook Pro dedicated GPU in the video mux firmware.<br>
[https://github.com/foxlet/macOS-Simple-KVM KVM] is a simple VM to run macOS in. <br>
[https://github.com/upekkha/AppleHardwareTest Older AHT downloads]<br>
===EFI Tools===
[https://github.com/sadponyguerillaboy/Swift-Apple-EFI-Patcher GUI EFI Tool for removing EFI lock, changing Serial and swapping ME to a known good]<br>
[https://github.com/sadponyguerillaboy/Python-Apple-EFI-Patcher Script EFI Tool]<br>
===Schematics===
[https://www.badcaps.net/forum/showthread.php?t=80466 Bad Caps iPhone]<br>
[https://www.badcaps.net/forum/forumdisplay.php?f=23 Bad Caps Laptop]<br>
[https://www.badcaps.net/forum/forumdisplay.php?f=41 Bad Caps Requests]<br>
[https://discord.gg/f3QYDsZ Sorin's Discord #schematics] (dead invite link)
===[https://www.apple-schematic.se/ apple-schematic.se]===
[https://link.resilio.com/#f=Technician%20Files&sz=14E9&t=2&s=5G2UT3UQKD2HWHSCXZWJ4NIPZBN3CCPALIRDC5IHUD2QFIIG2VNA&i=CVRIRPKOV2MFHEIZSZUZFPD2WWNPCUJ62&v=2.6&a=2 resilio link to most of the stuff you'll ever need.]
===Helpful sites===
[http://knownappleissues.com/ Known issues with Apples products]<br>
[https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Logic Board Repair Facebook Group]<br>
[https://discord.gg/efCgbpZ Rossmann's Discord] (dead invite link)<br>
[http://honestgeek.ca Honest Geek's] site has useful information on EFI repair.<br>
[http://advancedreworks.com/forum/archive/index.php/forumdisplay.php/mac-computers-motherboard-repair.html Advanced Reworks Repair Forum Index] Useful forum posts about macbook problems and general troubleshooting. (Site down)<br>
[https://gbatemp.net/forums/ A Console repair site that can be helpful.]
[https:///www.microsoldering.com Micro Soldering] - Resource for getting started with your micro soldering journey. Detailed lists of tools and equipment, parts and supply, and a 5-hour online course -- all you need to know to get started.
===YouTube Channels===
[https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ EEVBlog] Dave explains electronics engineering in a fun way. He also does cool tear downs and reviews of equipment we need.<br>
[https://www.youtube.com/user/eaterbc Ben Eater] builds a full computer on a breadboard. Learn lots about latches, memory, and discrete logic.<br>
[https://www.youtube.com/user/ContourCorsets Fran's Lab] has a different feel than most electronics channels. Learn electronics from a different view.<br>
[https://www.youtube.com/channel/UCabpXFEszoj-HwHWdKtmAXg Piernov] What more needs to be said?
==Tools==
===[[Multimeter]]===
===[[Hot Air Stations]]===
===[[Oscilloscope]]===
===[[Power Supply]]===
===[[Soldering Stations]]===
===[[Microscopes and Microscope Cameras]]===
===[[Stencils]]===
==='''[[Ultrasonic Cleaners]]'''===
===[[Programmers]]===
=== [[Thermal Cameras]] ===
[https://www.aliexpress.com/item/33006894821.html?spm=a2g0o.productlist.0.0.10e34b70Cpjb4N&algo_pvid=b4cbe29d-1fc3-4039-a84c-ffed078e8896&algo_expid=b4cbe29d-1fc3-4039-a84c-ffed078e8896-2&btsid=0be3764315896326058074910ef401&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ Aliexpress]. Buy all five stencils.
==Shopping==
Support [https://store.ipadrehab.com iPad Rehab], Jessa's store and buy from iPad rehab. Her store carries mostly iPhone and iPad components and tools [USA]
[https://www.digikey.com DigiKey] has general electronics components.
[https://www.mouser.com Mouser] has general electronics components. [USA/Canada]
[https://www.arrow.com/ Arrow.com] US based and well worth a look for general electronic components [USA]
Support [https://store.rossmanngroup.com Rossmann Group]'s store and buy your MacBook Parts here. [USA]
[https://mobilesentrix.com Mobile Sentrix] MacBook & mobile parts, board components, and tools. [USA/Canada]
[https://www.injuredgadgets.com/ Injured Gadgets] mobile & tablet, board components, and tools [USA]
[https://www.crazyparts.com.au/ Crazy Parts] mobile & tablet, board components, and tools [Australia/New Zealand]
<br />
[[Category:Resources]]
s4l9zwir0ek04asq15xg8ezwpvktadq
S0 to Reset State for Ivy Bridge Haswell and Broadwell
0
781
1687
1673
2020-09-13T11:34:20Z
Chrisb
1
Redirected page to [[Bootup Signal Order]]
1687
wikitext
text/x-wiki
#REDIRECT [[Bootup Signal Order]]<br />
gy7frwrxiuivpj17ag44y7zye2056yf
S3 to S0 State for Ivy Bridge Haswell and Broadwell
0
779
1686
1685
2020-09-13T11:33:40Z
Chrisb
1
Replaced content with "#REDIRECT [[Bootup Signal Order]]"
1686
wikitext
text/x-wiki
#REDIRECT [[Bootup Signal Order]]
is6pbad0jj59f6os4c16ae2p2r8ih18
SCSI IDC 50 pin
0
202
598
596
2020-02-02T12:11:23Z
Piernov
10
IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD
598
wikitext
text/x-wiki
The original HDD in PowerPC Macintosh (before G3) are SCSI drives with an IDC 50 pin connector. They are often found dead and no replacement are available (or very expensive and not necessarily in a good state).
They can be replaced by SCSI drives with an SCA-2 80 pin connector which are cheaper, faster, quieter, in better state and with higher capacity. Adapters can be found on eBay for a few bucks.
Some of these adapters come with the MTR jumper populated, it has to be removed to allow the drive to start when powering on. Other jumpers can be removed too as usually you don't need the other features and SCSI ID 0 is ok.
In theory it should also work with 68k Macs but due to software limitations only small partitions of 2GB or 4GB can be used under older Mac OS.
There are also some 2.5" drives available that could be used in PowerBooks, provided someone makes the proper adapter.
[[File:SCSI SCA-2 to IDC-50pin.jpg|thumb|SCSI SCA-2 to IDC-50pin]]
[[File:IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD.jpg|thumb|IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD]]
[[Category:Mac]] [[Category:PowerPC]]
le4zp615w8fs06hehcyq7q1hcxo7mx0
SMC
0
1435
6702
5797
2023-01-10T17:11:11Z
Alex6337
28
Cosmetic changes.
6702
wikitext
text/x-wiki
The '''System Management Controller''' ('''SMC''') is a subsystem of Intel processor-based Macintosh computers. It is similar in function to the older SMU or PMU or UAE of non-Intel Macintosh computers, as well as the newer T2 Security Chips made by Apple (more information [https://support.apple.com/en-us/HT208862 here]; spoiler alert, they're really annoying).
==Overview==
The SMC has roles in controlling thermal and power management, battery charging, video mode switching, sleep and wake, hibernation, and LED indicators. It also enables enforcement of the macOS End User License, allowing macOS to identify when it is running on non-Apple hardware.
==Troubleshooting==
To '''reset your SMC''', see [[Startup_Keys#SMC_Reset:|this page]].
For older machines (Ivy Bridge Haswell and Broadwell), see [[G3 to S3 State for Ivy Bridge Haswell and Broadwell|this page]].
For CD3215 '''''without''''' T2 chip, see [[CD3215 Bootup Sequence|this page]].
For CD 3215/17 '''''with''''' T2 chip, see [[T2 and CD3215 Power on Sequence|this page]].
For a more in-depth explanation of '''how the SMC circuit works''' and basic functionality, see [[SMC Circuits|this page]].
To '''reflow, solder and/or replace the SMC''', see [[Reflow & Replace SMC|this page]].
For more '''info on the SMC circuits''', see [[SMC Circuits|this page]].
For '''SMC sensor codes''', see [[SMC Sensor Codes|this page]].
To '''Flash the SMC''', see [https://logi.wiki/index.php/SMC_flashing this page.]
==See also==
[[wikipedia:System_Management_Controller|Wikipedia]]
1jb0bdqw8bs8vwz27ksi2s3am95kfo5
SMC Circuits
0
16
5419
1040
2020-12-24T23:10:27Z
Piernov
10
Add some clarification about SMC requirements
5419
wikitext
text/x-wiki
We need to provide power, clock and reset signals to kick-start the SMC chip.
[[File:SMC Power up.jpg|thumb]]
pp3v42_g3h created by u7090 will provide main power to the SMC chip u5000 via the BGA ball K12, VBAT. The pp3v42_g3h also goes through L5001 to power the SMC internal logic model VDDA. The SMC will create pp1v2_s5_smc_vddc to power itself. Then the SMC crystal circuit will start to output 12 MHZ square-ls clock for the SMC.
[[File:Smc-crystal-circuit.jpg|thumb]]
U5110 monitors the voltage of pp3v42_g3h. If pp3v42_g3h is not less than 3.0V and stable, U5100 will output a delayed smc_reset_l 3.3V to reset the SMC chip. The delay time is determined by R5101and C5101. U5110 also outputs pp3v3_s5_avref_smc 3.3V references voltage for the analog-digital conversion function of SMC sensors circuits including current sensors, voltage sensors and temperature sensors.
[[File:Smc-reset-circuit.jpg|thumb]]
On receiving smc_bc_acok from charging chip u7100, SMC will communicate with the MagSafe via the one-wired circuit and the green light on the charger will be on. Meanwhile, SMC uses SMBus to communicate with u7100 to adjust the ppbus_g3h from base voltage 8.1V to standard 8.45V. If you can get 8.45V ppbus_g3h output, it means SMC is functioning, at least partially. SMC uses the same SMBus to read battery status to determine the battery charging current. SMS monitors system input current (AMON) and battery charging current (BMON) all the time.
[[File:Battey-connector.jpg|thumb]]
SMC is a very important and complex chip designed by Apple. There is no “new" SMC chip you can buy. It has to be from a donor board with the same model and year. We will discuss more SMC functions later.
SMC requires VDD (PP3V42_G3H), VDDA (PP3V3_S5_SMC_VDDA) and SMC_RESET_L to be 3.42V in order to turn on. It also requires the crystal to be in good shape to generate the clock. The crystal circuit is almost never the problem as long as it is not visually damaged.
VREFA (PP3V3_S5_AVREF_SMC) is not required for the SMC to turn on, but it is required to reach a stable S0 state, otherwise without current/voltage sensing working properly the board won't reach an S0 state or cycle. In general the board can still boot in SMC bypass mode.
'''SMC bypass is a mode where several SMC features are disabled (sensors in particular), you disconnect all power, press power button, connect Magsafe and keep power button held for 5 to 10 seconds. Fans should go at max speed.'''
[[Category:Mac]]
[[Category:MacBook]]
1j415jp8czse2cj8bwkilv9jgjdegio
SMC Compatibility
0
263
7114
7113
2024-05-21T21:00:09Z
Echow2001
1148
formatting
7114
wikitext
text/x-wiki
Question: That reminds me. I have to swap a SMC on a 2010 A1286. I don’t have an exact donor. Can I use a donor with a different processor?
Answer: [Piernov] as long as it's the same model donor board it's fine.
In some cases you can use one from similar boards. SMC firmware is exactly the same on 3476 and 3536 for example, I guess it's the same for 00163 and 00426.
In some other cases SMC from similar board should work fine but there may be some discrepencies (between 11" and 13" Air)
In some cases it'll not be 100% compatible but enough to boot, then you can force flash the SMC update for the correct board… may work.
For a 2010 A1286, the 2010 A1297 may be close enough for example, dunno.
LIST OF COMPATIBILITY:
820-3437 :
Fully compatible : 820-3435
Need to flash : 820-00165, 820-00164
820-3435
Fully compatible : 820-3437
Need to flash : 820-00165, 820-00164
820-00164
Fully Compatible : 820-00165
Need to flash : 820-3435, 820-3437
820-00165
Fully Compatible : 820-00164
Need to flash : 820-3435, 820-3437
820-3855
Need to flash : 820-5509
820-5509
Need to flash : 820-3437
mo89mspq4xc2if6j48mu21b9fgo0tfb
SMC Sensor Codes
0
103
575
226
2020-02-02T11:35:50Z
Piernov
10
Category Mac
575
wikitext
text/x-wiki
<pre>Dumping MacBookPro14,3 from MacBookPro14_3
Name: MacBook Pro (15 inch, Retina & Touch Bar, Mid 2017)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: TCXC
Key IC0R low 0 high 0 CPU Computing Highside
Key IPBR low 0 high 0 PBus
Key ID0R low 0 high 0 DC In
Key ICTC low 0 high 0 Intel GPU
Key PC0R low 0 high 0 CPU Computing Highside
Key PCAC low 0 high 0 CPU Core
Key PCGC low 0 high 0 Intel GPU
Key PPBR low 0 high 0 Battery Current
Key PG0R low 0 high 0 Radeon High Side
Key Ts0P low 0 high 0 Palm Rest 1
Key Ts1P low 0 high 0 Palm Rest 2
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TC3C low 0 high 0 CPU Core 3
Key TC4C low 0 high 0 CPU Core 4
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU PECI
Key TG0D low 0 high 0 Radeon GPU Die
Key TaLC low 0 high 0 Airflow Left
Key TTLD low 0 high 0 Thunderbolt Left Proximity
Key Th1H low 0 high 0 Right Fin Stack
Key Th2H low 0 high 0 Left Fin Stack
Key TM0P low 0 high 0 Memory Proximity
Key TC0P low 0 high 0 CPU Proximity
Key TG0P low 0 high 0 GPU Proximity
Key TW0P low 0 high 0 Airport
Key TaRC low 0 high 0 Airflow Right
Key TTRD low 0 high 0 Thunderbolt Right Proximity
Key TH0A low 0 high 0 SSD 1
Key TH0B low 0 high 0 SSD 2
Key TH0C low 0 high 0 SSD 3
Key TGVP low 0 high 0 Radeon Memory Proximity
Key VG2C low 0 high 0 Radeon VDDCI
Key VP0R low 0 high 0 PBus
Key VD0R low 0 high 0 DC In
Key VCSC low 0 high 0 CPU System Agent
Key VCAC low 0 high 0 CPU IA
Key VCTC low 0 high 0 Intel GPU
Key VG0C low 0 high 0 Radeon Core
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2160 high 5297 Leftside
Key F1Ac low 2000 high 5489 Rightside
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookAir6,2 from MacBookAir6_2
Name: MacBook Air (13 inch, Mid 2013)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0 high 10 Chipset INA Highside
Key ID0R low 0 high 3.5 DC IN Rail AMON
Key IM3C low 0 high 6 DDR S3
Key IPB1 low 0 high 10 Discrete Battery
Key IPBR low 0 high 10 PBus
Key ISDC low 0 high 5 SSD
Key PB1R low 0 high 70 Discrete BMON
Key PC0R low 0 high 30 CPU Computing High Side
Key PDTR low 0 high 70 DC In Total
Key PM3C low 0 high 20 DDR S3
Key PPBR low 0 high 70 PBus
Key PSDC low 0 high 15 SSD
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0P low 15 high 105 CPU Proximity
Key TCHP low 10 high 75 Charger Proximity
Key TCXC low 15 high 120 CPU Core PECI
Key THSP low 10 high 65 T29 Proximity
Key TM0P low 15 high 75 Memory Proximity
Key TPCD low 15 high 100 Platform Controller Hub
Key TS2P low 10 high 70 Camera Proximity
Key TW0P low 10 high 70 Wireless Proximity
Key Ta0P low 10 high 65 Inlet
Key Th1H low 10 high 60 Fin Stack
Key Tm0P low 10 high 65 Logic Board Top Side
Key Ts0P low 10 high 52 Trackpad
Key VC1C low 0 high 1.15 1.05 S0
Key VCS0 low 0 high 1.9 CPU Core
Key VD0R low 13.5 high 17.2 DC In
Key VP0R low 7.2 high 8.9 PBus Rail
Key F0Ac low 1200 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookAir6,1 from MacBookAir6_1
Name: MacBook Air (11 inch, Mid 2013)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0 high 10 Chipset INA Highside
Key ID0R low 0 high 3.5 DC IN Rail AMON
Key IM3C low 0 high 6 DDR S3
Key IPB1 low 0 high 10 Discrete Battery
Key IPBR low 0 high 10 PBus
Key ISDC low 0 high 5 SSD
Key PB1R low 0 high 70 Discrete BMON
Key PC0R low 0 high 30 CPU Computing High Side
Key PDTR low 0 high 70 DC In Total
Key PM3C low 0 high 20 DDR S3
Key PPBR low 0 high 70 PBus
Key PSDC low 0 high 15 SSD
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0P low 15 high 105 CPU Proximity
Key TCHP low 10 high 75 Charger Proximity
Key TCXC low 15 high 120 CPU Core PECI
Key THSP low 10 high 65 T29 Proximity
Key TM0P low 15 high 75 Memory Proximity
Key TPCD low 15 high 100 Platform Controller Hub
Key TS2P low 10 high 70 Camera Proximity
Key TW0P low 10 high 70 Wireless Proximity
Key Ta0P low 10 high 65 Inlet
Key Th1H low 10 high 60 Fin Stack
Key Tm0P low 10 high 65 Logic Board Top Side
Key Ts0P low 10 high 52 Trackpad
Key VC1C low 0 high 1.15 1.05 S0
Key VCS0 low 0 high 1.9 CPU Core
Key VD0R low 13.5 high 17.2 DC In
Key VP0R low 7.2 high 8.9 PBus Rail
Key F0Ac low 1200 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping Xserve3,1 from Xserve3_1
Name: Xserve
Memory: soldered slots with 0 MB total
Defaults: TCAH TCBH, temperature:
Key TA0P low 0 high 0 Chunnel Ambient Left
Key TA0S low 0 high 0 PCIE Slot 1 Ambient
Key TA1P low 0 high 0 Chunnel Ambient Right
Key TA1S low 0 high 0 PCIE Slot 1 PCB
Key TA2S low 0 high 0 PCIE Slot 2 Ambient
Key TA3S low 0 high 0 PCIE Slot 2 PCB
Key TCAH low 0 high 0 CPU A HeatSink
Key TCBH low 0 high 0 CPU B HeatSink
Key TH1P low 0 high 0 Drive Bay 1
Key TH2P low 0 high 0 Drive Bay 2
Key TH3P low 0 high 0 Drive Bay 3
Key TN0C low 0 high 0 I/O Hub Die
Key TN0H low 0 high 0 I/O Hub HeatSink
Key TM0P low 0 high 0 CPU A DIMM Exit Ambient
Key TS0C low 0 high 0 CPU B DIMM Exit Ambient
Key Tp0P low 0 high 0 PSU1 Inlet Ambient
Key Tp1P low 0 high 0 PSU1 Primary Component
Key Tp2P low 0 high 0 PSU1 Secondary Component
Key Tp3P low 0 high 0 PSU2 Inlet Ambient
Key Tp4P low 0 high 0 PSU2 Primary Component
Key Tp5P low 0 high 0 PSU2 Secondary Component
Key VCAC low 0 high 0 CPU A Core
Key VCBC low 0 high 0 CPU B Core
Key VS2C low 0 high 0 Main P12V
Key VS8C low 0 high 0 Main P3V3
Key F0Ac low 6000 high 18000 CPU 1 Inlet
Key F2Ac low 6000 high 18000 CPU 2 Inlet
Key F4Ac low 6000 high 18000 CPU 3 Inlet
Key F6Ac low 6000 high 18000 CPU 4 Inlet
Key F8Ac low 6000 high 18000 FB-DIMM 1 Inlet
Key FAAc low 6000 high 18000 FB-DIMM 2 Inlet
Key FCAc low 6000 high 18000 FB-DIMM 3 Inlet
Key F1Ac low 5768 high 17308 CPU 1 Outlet
Key F3Ac low 5768 high 17308 CPU 2 Outlet
Key F5Ac low 5768 high 17308 CPU 3 Outlet
Key F7Ac low 5768 high 17308 CPU 4 Outlet
Key F9Ac low 5768 high 17308 FB-DIMM 1 Outlet
Key FBAc low 5768 high 17308 FB-DIMM 2 Outlet
Key FDAc low 5768 high 17308 FB-DIMM 3 Outlet
Key FEAc low 7284 high 13900 Power Supply 1 Inlet
Key FGAc low 7284 high 13900 Power Supply 2 Inlet
Key FFAc low 6800 high 12800 Power Supply 1 Outlet
Key FHAc low 6800 high 12800 Power Supply 2 Outlet
Dumping Xserve2,1 from Xserve2_1
Name: Xserve
Memory: soldered slots with 0 MB total
Defaults: TCAH TCBH, temperature:
Key TA0P low 0 high 0 Chunnel Ambient Left
Key TA0S low 0 high 0 PCI Super Slot Ambient
Key TA1P low 0 high 0 Chunnel Ambient Right
Key TA1S low 0 high 0 PCI Super Slot PCB
Key TA2S low 0 high 0 PCIe Half Length Ambient
Key TA3S low 0 high 0 PCIe Half Length PCB
Key TCAH low 0 high 0 CPU A HeatSink
Key TCBH low 0 high 0 CPU B HeatSink
Key TH1P low 0 high 0 Drive Bay 1
Key TH2P low 0 high 0 Drive Bay 2
Key TH3P low 0 high 0 Drive Bay 3
Key TN0C low 0 high 0 MCH Core
Key TN0H low 0 high 0 MCH HeatSink
Key TS0C low 0 high 0 CPU B PCB
Key Tp0P low 0 high 0 PSU1 Inlet Ambient
Key Tp1P low 0 high 0 PSU1 Primary Component
Key Tp2P low 0 high 0 PSU1 Secondary Component
Key Tp3P low 0 high 0 PSU2 Inlet Ambient
Key Tp4P low 0 high 0 PSU1 Primary Component
Key Tp5P low 0 high 0 PSU2 Secondary Component
Key VCAC low 0 high 0 CPU A Core
Key VCBC low 0 high 0 CPU B Core
Key VS2C low 0 high 0 Main P12V
Key VS4C low 0 high 0 AUX P1V5
Key VS8C low 0 high 0 Main P3V3
Key VSEC low 0 high 0 FireWire P1V95
Key VSFC low 0 high 0 AUX P3V3
Key F0Ac low 5000 high 16100 CPU 1 Inlet
Key F2Ac low 5000 high 16100 CPU 2 Inlet
Key F4Ac low 5000 high 16100 CPU 3 Inlet
Key F6Ac low 5000 high 16100 CPU 4 Inlet
Key F8Ac low 5000 high 16100 FB-DIMM 1 Inlet
Key FAAc low 5000 high 16100 FB-DIMM 2 Inlet
Key FCAc low 5000 high 16100 FB-DIMM 3 Inlet
Key F1Ac low 4020 high 12952 CPU 1 Outlet
Key F3Ac low 4020 high 12952 CPU 2 Outlet
Key F5Ac low 4020 high 12952 CPU 3 Outlet
Key F7Ac low 4020 high 12952 CPU 4 Outlet
Key F9Ac low 4020 high 12952 FB-DIMM 1 Outlet
Key FBAc low 4020 high 12952 FB-DIMM 2 Outlet
Key FDAc low 4020 high 12952 FB-DIMM 3 Outlet
Key FEAc low 7284 high 13900 Power Supply 1 Inlet
Key FGAc low 7284 high 13900 Power Supply 2 Inlet
Key FFAc low 6800 high 12800 Power Supply 1 Outlet
Key FHAc low 6800 high 12800 Power Supply 2 Outlet
Dumping Xserve1,1 from Xserve1_1
Name: Xserve (Late 2006)
Memory: soldered slots with 0 MB total
Defaults: TCAH TCBH, temperature:
Key TA0P low 0 high 0 Chunnel Ambient Left
Key TA0S low 0 high 0 PCI Super Slot Ambient
Key TA1P low 0 high 0 Chunnel Ambient Right
Key TA1S low 0 high 0 PCI Super Slot PCB
Key TA2S low 0 high 0 PCIe Half Length Ambient
Key TA3S low 0 high 0 PCIe Half Length PCB
Key TCAH low 0 high 0 CPU A HeatSink
Key TC0P low 0 high 0 CPU A Ambient 1
Key TC1P low 0 high 0 CPU A Ambient 2
Key TCBH low 0 high 0 CPU A HeatSink
Key TC2P low 0 high 0 CPU B Ambient 1
Key TC3P low 0 high 0 CPU B Ambient 2
Key TG0C low 0 high 0 Mezzanine GPU Core
Key TG0P low 0 high 0 Mezzanine GPU Exhaust
Key TH1P low 0 high 0 Drive Bay 1
Key TH2P low 0 high 0 Drive Bay 2
Key TH3P low 0 high 0 Drive Bay 3
Key TN0C low 0 high 0 MCH Core
Key TN0H low 0 high 0 MCH HeatSink
Key TS0C low 0 high 0 CPU B PCB
Key Tp0P low 0 high 0 PSU1 Inlet Ambient
Key Tp1P low 0 high 0 PSU1 Primary Component
Key Tp2P low 0 high 0 PSU1 Secondary Component
Key Tp3P low 0 high 0 PSU2 Inlet Ambient
Key Tp4P low 0 high 0 PSU1 Primary Component
Key Tp5P low 0 high 0 PSU2 Secondary Component
Key VCAC low 0 high 0 CPU A Core
Key VCBC low 0 high 0 CPU B Core
Key VS2C low 0 high 0 Main P12V
Key VS4C low 0 high 0 AUX P1V5
Key VS8C low 0 high 0 Main P3V3
Key VSEC low 0 high 0 FireWire P1V95
Key VSFC low 0 high 0 AUX P3V3
Key F0Ac low 5000 high 16700 CPU 1 Inlet
Key F2Ac low 5000 high 16700 CPU 2 Inlet
Key F4Ac low 5000 high 16700 CPU 3 Inlet
Key F6Ac low 5000 high 16700 CPU 4 Inlet
Key F8Ac low 5000 high 16700 FB-DIMM 1 Inlet
Key FAAc low 5000 high 16700 FB-DIMM 2 Inlet
Key FCAc low 5000 high 16700 FB-DIMM 3 Inlet
Key F1Ac low 2968 high 10000 CPU 1 Outlet
Key F3Ac low 2968 high 10000 CPU 2 Outlet
Key F5Ac low 2968 high 10000 CPU 3 Outlet
Key F7Ac low 2968 high 10000 CPU 4 Outlet
Key F9Ac low 2968 high 10000 FB-DIMM 1 Outlet
Key FBAc low 2968 high 10000 FB-DIMM 2 Outlet
Key FDAc low 2968 high 10000 FB-DIMM 3 Outlet
Key FEAc low 7284 high 13900 Power Supply 1 Inlet
Key FGAc low 7284 high 13900 Power Supply 2 Inlet
Key FFAc low 6800 high 12800 Power Supply 1 Outlet
Key FHAc low 6800 high 12800 Power Supply 2 Outlet
Dumping Macmini6,2 from Macmini6_2
Name: Mac Mini (Late 2012)
Memory: 2 slots with 16384 MB total
Defaults: TC0D, temperature: TC0D
Key VC0C low 0.54 high 1.63 CPU Core
Key VN0R low 0.3 high 1.43 GFX VCore
Key VD0R low 11.4 high 12.6 DC In
Key VC2C low 0.67 high 0.98 CPU System Agent
Key ID0R low 0 high 9 DC In Average
Key IC0R low 0 high 8 CPU High Side Average
Key IC0C low 0 high 94 CPU VCore Average
Key IN1R low 0 high 5.5 PCH 1.05V Average
Key IN0R low 0 high 33 GFX VCore Average
Key IM0C low 0 high 12 Memory Average
Key IC1C low 0 high 17.5 CPU I/O
Key ID1R low 0 high 5 CPU 1.5V Average
Key IC2C low 0 high 6 CPU System Agent
Key TA1P low 10 high 75 Ambient 2
Key TC0D low 10 high 110 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TW0P low 10 high 85 Airport Peninsula
Key TM0P low 10 high 80 Memory Proximity
Key TP0P low 10 high 100 Platform Controller Hub
Key TA0P low 10 high 80 Ambient 1
Key TI0P low 10 high 85 Thunderbolt Proximity 1
Key TI1P low 10 high 85 Thunderbolt Proximity 2
Key Tp0C low 10 high 100 ACDC
Key TC0C low 15 high 105 CPU Core 1 - DTS
Key TC1C low 15 high 105 CPU Core 2 - DTS
Key TC2C low 15 high 105 CPU Core 3 - DTS
Key TC3C low 15 high 105 CPU Core 4 - DTS
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key F0Ac low 1800 high 5500 Exhaust
Key PSTR low 0 high 0 Total
Dumping Macmini6,1 from Macmini6_1
Name: Mac Mini (Late 2012)
Memory: 2 slots with 16384 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 53 CPU VCore Average
Key IC0R low 0 high 8 CPU High Side Average
Key IC1C low 0 high 17.5 CPU I/O
Key IC2C low 0 high 6 CPU System Agent
Key ID0R low 0 high 9 DC In Average
Key ID1R low 0 high 5 CPU 1.5V Average
Key IM0C low 0 high 12 Memory Average
Key IN0R low 0 high 33 GFX VCore Average
Key IN1R low 0 high 5.5 PCH 1.05V Average
Key TA0P low 10 high 80 Ambient 1
Key TA1P low 10 high 75 Ambient 2
Key TC0D low 10 high 110 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TI0P low 10 high 85 Thunderbolt Proximity 1
Key TI1P low 10 high 85 Thunderbolt Proximity 2
Key TM0P low 10 high 80 Memory Proximity
Key TP0P low 10 high 100 Platform Controller Hub
Key TW0P low 10 high 85 Airport Peninsula
Key Tp0C low 10 high 100 ACDC
Key VC0C low 0.54 high 1.63 CPU Core
Key VC2C low 0.67 high 0.98 CPU System Agent
Key VD0R low 11.4 high 12.6 DC In
Key VN0R low 0.3 high 1.43 GFX VCore
Key TC0C low 15 high 105 CPU Core 1 - DTS
Key TC1C low 15 high 105 CPU Core 2 - DTS
Key TC2C low 15 high 105 CPU Core 3 - DTS
Key TC3C low 15 high 105 CPU Core 4 - DTS
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key F0Ac low 1800 high 5500 Exhaust
Key PSTR low 0 high 0 Total
Dumping Macmini5,3 from Macmini5_3
Name: Mac Mini (Mid 2011)
Memory: 2 slots with 16384 MB total
Defaults: TC0D, temperature: TC0D
Key ID0R low 0 high 9 DC In Average
Key IC0R low 0 high 8 CPU High Side Average
Key IC0C low 0 high 94 CPU VCore Average
Key IN0R low 0 high 33 GFX VCore Average
Key IN1R low 0 high 5.5 PCH 1.05V Average
Key IM0C low 0 high 12 Memory Average
Key IC1C low 0 high 17.5 CPU I/O
Key ID1R low 0 high 5 CPU 1.5V Average
Key IC2C low 0 high 6 CPU System Agent
Key TA0P low 10 high 80 Ambient 1
Key TA1P low 10 high 75 Ambient 2
Key TC0D low 10 high 105 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TW0P low 10 high 85 Airport Peninsula
Key TM0P low 10 high 80 Memory Proximity
Key TP0P low 10 high 100 Platform Controller Hub
Key TI0P low 10 high 85 Thunderbolt Proximity
Key Tp0C low 10 high 100 ACDC
Key VC0C low 0.54 high 1.63 CPU Core
Key VN0R low 0.03 high 1.43 GFX VCore
Key VD0R low 11.4 high 12.6 DC In
Key VC2C low 0.67 high 0.98 CPU Core
Key F0Ac low 2300 high 5500 Exhaust
Dumping Macmini5,2 from Macmini5_2
Name: Mac Mini (Mid 2011)
Memory: 2 slots with 16384 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key IC0C low 0 high 53 CPU VCore Average
Key IC1C low 0 high 17.5 CPU I/O
Key IC2C low 0 high 6 CPU System Agent
Key IC0R low 0 high 8 CPU High Side Average
Key ID0R low 0 high 9 DC In Average
Key ID1R low 0 high 5 CPU 1.5V Average
Key IN1R low 0 high 5.5 PCH 1.05V Average
Key IN0R low 0 high 33 GFX VCore Average
Key IM0C low 0 high 12 Memory Average
Key IG0C low 0 high 30 GPU VCore Average
Key IG0R low 0 high 5 GPU High Side Average
Key IN0R low 0 high 20 GFX VCore Average
Key TA0P low 10 high 80 Ambient 1
Key TA1P low 10 high 75 Ambient 2
Key TC0D low 10 high 105 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TW0P low 10 high 85 Airport Peninsula
Key TM0P low 10 high 80 Memory Proximity
Key TP0P low 10 high 100 Platform Controller Hub
Key TI0P low 10 high 85 Thunderbolt Proximity
Key Tp0C low 10 high 100 ACDC
Key TG1D low 10 high 100 GPU Die - Digital
Key TG0P low 10 high 100 GPU Proximity
Key TG0D low 10 high 100 GPU Die - Analog
Key TG0M low 10 high 75 GPU Memory
Key VC0C low 0.54 high 1.63 CPU Core
Key VN0R low 0 high 1.43 GFX VCore
Key VD0R low 11.4 high 12.6 DC In
Key VC2C low 0.67 high 0.98 CPU Core
Key F0Ac low 1800 high 5500 Exhaust
Dumping Macmini5,1 from Macmini5_1
Name: Mac Mini (Mid 2011)
Memory: 2 slots with 16384 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 53 CPU VCore Average
Key IC1C low 0 high 17.5 CPU I/O
Key IC2C low 0 high 6 CPU System Agent
Key IC0R low 0 high 8 CPU High Side Average
Key ID0R low 0 high 9 DC In Average
Key ID1R low 0 high 5 CPU 1.5V Average
Key IN1R low 0 high 5.5 PCH 1.05V Average
Key IN0R low 0 high 33 GFX VCore Average
Key IM0C low 0 high 12 Memory Average
Key TA0P low 10 high 80 Ambient 1
Key TA1P low 10 high 75 Ambient 2
Key TC0D low 10 high 105 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TW0P low 10 high 85 Airport Peninsula
Key TM0P low 10 high 80 Memory Proximity
Key TP0P low 10 high 100 Platform Controller Hub
Key TI0P low 10 high 85 Thunderbolt Proximity
Key Tp0C low 10 high 100 ACDC
Key VC0C low 0.54 high 1.63 CPU Core
Key VN0R low 0.3 high 1.43 GFX VCore
Key VD0R low 11.4 high 12.6 DC In
Key VC2C low 0.67 high 0.98 CPU Core
Key F0Ac low 1800 high 5500 Exhaust
Dumping Macmini7,1 from Macmini7_1
Name: Mac Mini (Late 2014)
Memory: soldered slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key VC0C low 0 high 0 CPU Core Low Side
Key VM0C low 0 high 0 CPU/Mem
Key IC1C low 0 high 0 CPU/Platform Controller Hub
Key I50R low 0 high 0 CPU/Platform Controller Hub
Key ID0R low 0 high 0 DC In
Key IM0R low 0 high 0 Memory
Key Tp0C low 0 high 0 PSU Analog
Key IC0C low 0 high 0 CPU Core Low Side
Key IM0C low 0 high 0 CPU/Mem
Key VC1C low 0 high 0 CPU/Platform Controller Hub
Key V50R low 0 high 0 5V Low Side
Key VD0R low 0 high 0 DC In
Key IC0R low 0 high 0 CPU High Side
Key II0R low 0 high 0 Platform Controller Hub
Key IAPC low 0 high 0 Wi-Fi
Key IH0R low 0 high 0 HDD
Key IH1R low 0 high 0 SSD
Key Tm0p low 0 high 0 Logic Board
Key Te0t low 0 high 0 Thunderbolt Diode
Key TC0p low 0 high 0 CPU Proximity
Key TA0p low 0 high 0 Ambient 2
Key TW0p low 0 high 0 Wi-Fi Proximity
Key TA1p low 0 high 0 Ambient 1
Key TM0p low 0 high 0 Memory Proximity
Key TA2p low 0 high 0 Ambient 3
Key TCXr low 0 high 0 CPU PECI DTS
Key TC0c low 0 high 0 CPU Core 1 PECI
Key TC1c low 0 high 0 CPU Core 2 PECI
Key TCGc low 0 high 0 Intel GPU
Key TCSc low 0 high 0 CPU System Agent Core PECI
Key TPCd low 0 high 0 PCH Die Digital
Key TCXC low 0 high 0 CPU Core
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PD0R low (null) high (null) DC In
Key F0Ac low 1800 high 4800 Exhaust
Key PSTR low 0 high 0 Total
Dumping Macmini4,1 from Macmini4_1
Name: Mac Mini (Mid 2010)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 44 CPU VCore Average
Key IC0R low 0 high 4.5 CPU 1.05V Rail Average
Key ID0R low 0 high 7.1 DC In Average
Key IN0C low 0 high 23.8 MCP VCore Average
Key IN1C low 0 high 4.8 MCP 1.5V Mem Average
Key IM0R low 0 high 5.84 SoDimm VDD Average
Key TA0P low 10 high 80 Ambient
Key TC0D low 10 high 105 CPU Die
Key TC0P low 10 high 100 CPU Proximity
Key TW0P low 10 high 85 Airport
Key TM0P low 10 high 80 Memory
Key TN0D low 15 high 110 MCP Die
Key TN1D low 15 high 110 MCP Internal Die
Key TC0H low 5 high 80 CPU Heatsink
Key TN0P low 10 high 100 MCP Proximity
Key TH0P low 10 high 65 HDD 1
Key TO0P low 10 high 65 Optical/HDD 2
Key Tm0P low 10 high 80 Logic Board Center
Key VC0C low 0.5 high 1.5 CPU Core
Key VD0R low 11.4 high 12.6 DC In
Key VN0C low 0.7875 high 0.975 MCP VCore
Key F0Ac low 1800 high 5500 Exhaust
Dumping Macmini3,1 from Macmini3_1
Name: Mac Mini
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU VCore Average
Key IC0R low 0 high 0 CPU 1.05V Rail Average
Key ID0R low 0 high 0 DC In Average
Key IN0C low 0 high 0 MCP VCore Average
Key IN1C low 0 high 0 MCP 1.5V Mem Average
Key IM0R low 0 high 0 SoDimm VDD Average
Key IP0R low 0 high 0 PBus
Key TC0D low 0 high 0 CPU Die
Key TC0H low 0 high 0 CPU Heatsink
Key TC0P low 0 high 0 CPU Proximity
Key TH0P low 0 high 0 HDD Case
Key TN0D low 0 high 0 MCP Die
Key TN0H low 0 high 0 MCP Heatsink
Key TN0P low 0 high 0 MCP Proximity
Key TW0P low 0 high 0 AUX
Key VC0C low 0 high 0 CPU Core
Key VD0R low 0 high 0 DC In
Key VN0C low 0 high 0 MCP VCore
Key F0Ac low 1500 high 5500 Fan
Dumping Macmini2,1 from Macmini2_1
Name: Mac Mini (Mid 2007)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key TA0P low 0 high 0 Ambient Air
Key TC0D low 0 high 0 CPU Die
Key TC0H low 0 high 0 CPU Heatsink
Key TC0P low 0 high 0 CPU VR Area
Key TN0P low 0 high 0 GPU Die
Key TN1P low 0 high 0 GPU Die
Key PC0C low 0 high 0 CPU Core
Key PN0R low 0 high 0 Northbridge Rail
Key F0Ac low 1500 high 5500 Exhaust
Dumping Macmini1,1 from Macmini1_1
Name: Mac Mini (Early 2006)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU I-Sense
Key IM0R low 0 high 0 Memory I-Sense
Key IN0R low 0 high 0 Northbridge I-Sense
Key TA0P low 0 high 0 Ambient Air
Key TC0D low 0 high 0 CPU Die
Key TC0H low 0 high 0 CPU Heatsink
Key TC0P low 0 high 0 CPU VR Area
Key TC1P low 0 high 0 CPU Proximity
Key TN0P low 0 high 0 GPU Die
Key TN1P low 0 high 0 GPU Die
Key VC0C low 0 high 0 CPU V-Sense
Key PC0C low 0 high 0 CPU Core
Key PM0R low 0 high 0 Memory Rail
Key PN0R low 0 high 0 Northbridge Rail
Key F0Ac low 1500 high 5500 Fan
Dumping MacBookPro9,2 from MacBookPro9_2
Name: MacBook Pro (13 inch, Mid 2012)
Memory: 2 slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0 high 17.4 CPU (Core/GPU/DDR3/IO/System Agent)
Key ID0R low 0 high 4.6 DC In
Key IM0C low 0 high 9 DD3 1.5V
Key IO0R low 0 high 8.80000 Other (5V, 3.3V)
Key IPBR low 0 high 8.80000 Charger BMON
Key TA0P low 10 high 65 Airflow
Key TB1T low 10 high 60 Battery Sensor 1
Key TB2T low 10 high 60 Battery Sensor 2
Key TC0P low 10 high 95 CPU Proximity
Key TCXC low 10 high 105 CPU Core - PECI
Key TM0P low 10 high 65 Memory Proximity
Key Th1H low 10 high 80 Fin Stack
Key Ts0P low 10 high 50 Palm Rest
Key VC0C low 0.5 high 1.7 CPU VCore
Key VD0R low 0 high 21 DC In
Key VN0C low 0 high 1.7 Intel GPU VCore
Key VP0R low 7 high 16 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC1C low 15 high 105 CPU Core 1 - DTS
Key TC2C low 15 high 105 CPU Core 2 - DTS
Key F0Ac low 2000 high 6200 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro9,1 from MacBookPro9_1
Name: MacBook Pro (17 inch, Mid 2012)
Memory: 2 slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0.5 high 22.8 CPU (Core, GFX, DDR3, 1.05V, System Agent)
Key ID0R low 0 high 4.6 DC In
Key IG0R low 0 high 4.16 GPU (Core, FB, 1.0V)
Key IHDC low 0 high 2.5 HDD
Key IM0C low 0 high 9 DDR3 1.5V
Key IO0R low 0 high 10.3 Other (5V, 3.3V)
Key IPBR low 0 high 6.6 Charger BMON
Key TA0P low 10 high 65 Airflow
Key TB1T low 10 high 60 Battery Sensor 1
Key TB2T low 10 high 60 Battery Sensor 2
Key TC0P low 10 high 85 CPU Proximity
Key TCXC low 10 high 105 CPU Core - PECI
Key TG0D low 10 high 100 GPU Die - Analog
Key TG0P low 10 high 85 GPU Proximity
Key TM0P low 10 high 65 Memory Proximity
Key TP0P low 10 high 80 Platform Controller Hub
Key Th1H low 10 high 80 Right Fin Stack Proximity
Key Th2H low 10 high 80 Left Heat Pipe & Fin Stack Proximity
Key Ts0P low 10 high 50 Palm Rest
Key VC0C low 0.4 high 1.7 CPU VCore
Key VC2C low 8 high 2 CPU System Agent
Key VD0R low 0 high 21 DC In
Key VG0C low 0.5 high 1.8 GPU VCore
Key VG3C low 0 high 2 GPU FB
Key VN0C low 0 high 1.7 Intel GPU VCore
Key VP0R low 7 high 16 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC1C low 15 high 105 CPU Core 1 - DTS
Key TC2C low 15 high 105 CPU Core 2 - DTS
Key TC3C low 15 high 105 CPU Core 3 - DTS
Key TC4C low 15 high 105 CPU Core 4 - DTS
Key F1Ac low 2000 high 6200 Rightside
Key F0Ac low 2000 high 6200 Leftside
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro8,3 from MacBookPro8_3
Name: MacBook Pro (17 inch)
Memory: 2 slots with 8192 MB total
Defaults: TC0C, temperature: TC0C
Key IB0R low 0.1 high 18.333 Battery - BMON
Key IC0R low 0.1 high 18.333 CPU (Core, GFX, DDR3, 1.05V, System Agent)
Key ID0R low 0.1 high 4.85 DC In
Key IG0R low 0 high 3.34 GPU (Core, FB, 1.0V)
Key IO0R low 0.1 high 12.546 Other (5V, 3.3V)
Key TB1T low 10 high 64 Battery Sensor 1
Key TB2T low 10 high 64 Battery Sensor 2
Key TC0C low 10 high 105 CPU Die - Digital
Key TC0D low 10 high 105 CPU Die - Analog
Key TC0P low 10 high 95 CPU Proximity
Key TG0D low 10 high 100 GPU Die - Analog
Key TG0P low 10 high 90 GPU Proximity
Key THSP low 10 high 85 Thunderbolt Proximity
Key TP0P low 10 high 85 Platform Controller Hub
Key TPCD low 10 high 110 PCH Die - Digital
Key Th1H low 10 high 75 Right Fin Stack Proximity
Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity
Key Tm0P low 10 high 65 DC In Proximity Air Flow
Key Ts0P low 10 high 56 Palm Rest
Key VC0C low 0.1 high 1.565 CPU VCore
Key VD0R low 0 high 18.5 DC In
Key VG0C low 0.5 high 1.1 GPU VCore
Key VN0C low 0.3 high 1.52 Intel GPU VCore
Key VP0R low 8 high 13 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PD0R low (null) high (null) DC In
Key TC1C low 15 high 105 CPU Core 1 - DTS
Key TC2C low 15 high 105 CPU Core 2 - DTS
Key TC3C low 15 high 105 CPU Core 3 - DTS
Key TC4C low 15 high 105 CPU Core 4 - DTS
Key F1Ac low 2000 high 5500 Rightside
Key F0Ac low 2000 high 5500 Leftside
Dumping MacBookPro8,2 from MacBookPro8_2
Name: MacBook Pro (15 inch)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key ID0R low 0.1 high 4.85 DC In
Key IB0R low 0.1 high 18.333 Battery - BMON
Key IC0R low 0.1 high 18.333 CPU (Core, GFX, DDR3, 1.05V, System Agent)
Key IG0R low 0 high 3.34 Core, FB, 1.0V
Key IO0R low 0.1 high 12.546 Other (5V, 3.3V)
Key IC0C low 0.15 high 94 CPU Core - Load Side
Key IN0C low 0.24 high 33 Intel GPU
Key IC1C low 0.1 high 21.329 CPU I/O PP1V05
Key IM0C low 0.1 high 18.1 DDR3
Key IG0C low 0 high 28 GPU Core
Key IC2C low 0.1 high 6 CPU System Agent S0
Key Ts0P low 10 high 56 Palm Rest
Key TC0D low 10 high 105 CPU Die - Analog
Key TC0P low 10 high 95 CPU Proximity
Key TP0P low 10 high 85 Platform Controller Hub
Key Tm0P low 10 high 60 Battery Charger Proximity
Key Th1H low 10 high 75 Right Fin Stack Proximity
Key TG0D low 10 high 100 GPU Die - Analog
Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity
Key TG1D low 10 high 100 GPU Die - Digital
Key TB1T low 10 high 64 Battery Sensor 1
Key TB2T low 10 high 64 Battery Sensor 2
Key TC0C low 10 high 105 CPU Die - Digital Core 0
Key TW0P low 10 high 75 Wireless Controller IC
Key THSP low 10 high 85 Thunderbolt Proximity
Key VC0C low 0.1 high 1.565 CPU VCore
Key VP0R low 8 high 13 P-Bus
Key VG0C low 0.5 high 1.16 GPU VCore
Key VN0C low 0.3 high 1.52 Intel GPU VCore
Key VD0C low 0 high 18.5 DC In
Key ALSL low 0 high 0 Ambient Light
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PD0R low (null) high (null) DC In
Key TC1C low 15 high 105 CPU Core 1 - DTS
Key TC2C low 15 high 105 CPU Core 2 - DTS
Key TC3C low 15 high 105 CPU Core 3 - DTS
Key TC4C low 15 high 105 CPU Core 4 - DTS
Key F1Ac low 2000 high 5500 Rightside
Key F0Ac low 2000 high 5500 Leftside
Dumping MacBookPro8,1 from MacBookPro8_1
Name: MacBook Pro (13 inch)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 2 high 7.14 Battery - BMON
Key IC0C low 8 high 53 CPU VCore
Key IC1C low 2 high 17.5 CPU I/O PP1V05
Key IC0R low 1.5 high 8 Computing (CPU VCore, DDR, I/O, System Agent)
Key ID0R low 1.5 high 3.75 DC In
Key IN0C low 2 high 36 Intel GPU
Key IO0R low 0.2 high 8 Other (5V, 3.3V)
Key TB1T low 15 high 60 Battery Sensor 1
Key TB2T low 15 high 60 Battery Sensor 2
Key TC0D low 15 high 105 CPU Die
Key TC0P low 15 high 95 CPU Proximity
Key Th1H low 15 high 75 Right Fin Stack Proximity
Key TM0P low 15 high 75 5V / 3.3V Proximity
Key Ts0P low 15 high 50 Palm Rest
Key TP0P low 15 high 75 PCH-Thunderbolt Proximity
Key TC0C low 15 high 105 CPU Die - Digital Core 0
Key TC1C low 0 high 0 CPU Die - Digital Core 1
Key TC2C low 0 high 0 CPU Die - Digital Core
Key TW0P low 15 high 90 Wireless Controller IC
Key VC0C low 0.3 high 1.565 CPU Core
Key VD0R low 15.5 high 17.5 DC In
Key VN0C low 0 high 0 Intel GPU VCore
Key VP0R low 8.4 high 12.75 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key PD0R low (null) high (null) DC In
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key F0Ac low 2000 high 6200 Exhaust
Dumping MacBookPro7,1 from MacBookPro7_1
Name: MacBook Pro (13 inch, Mid 2010)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0 Battery
Key IC0C low 0.153 high 48.4 CPU Core
Key IC0R low 0.02 high 3.63 CPU VCore VTT
Key ID0R low 0.02 high 5.5 DC In Rail
Key IN0C low 0 high 0 MCP VCore
Key IN1C low 0 high 0 MCP Memory
Key TB1T low 10.2 high 70.4000 Battery Thermal Diode 1
Key TB2T low 10.2 high 70.4000 Battery Thermal Diode 2
Key TC0D low 10.2 high 115.5 CPU Die
Key TC0P low 10.2 high 93.5 CPU Proximity
Key TH0P low 0 high 0 HDD Flex Area
Key Th1H low 0 high 0 Fin Stack
Key TN0P low 10.2 high 80.3 MCP Proximity Top Side
Key TN0D low 10.2 high 110 MCP Die
Key TN1D low 10.2 high 110 MCP Die
Key Ts0P low 10.2 high 61.6 Palm Rest
Key VC0C low 0.51 high 1.65 CPU Core
Key VN0C low 0 high 0 MCP Core
Key VP0R low 9.18 high 14.3 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2000 high 6200 Exhaust
Dumping MacBookPro6,2 from MacBookPro6_2
Name: MacBook Pro (15 inch, Mid 2010)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0.58 high 30.4 CPU Core
Key ID0R low 0.1 high 4.75 DC In
Key IC1C low 0.1 high 3.7915 CPU Core - High Side
Key IC2C low 0.5 high 26.6 CPU Front Side Bus 1.05V
Key IG0C low 0.35 high 17.1 GPU Core
Key IG1C low 0.1 high 5.7 GPU 1.8V
Key IN0R low 0.12 high 16.15 MCP Core
Key IN1R low 0 high 0 NorthBridge Rail
Key IP0R low 0.1 high 6.27 Battery - BMON
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TB3T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Digital
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Die - Analog
Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TN0P low 0 high 0 MCP Proximity
Key TN0D low 0 high 0 CPU VCore
Key Th2H low 0 high 0 Right Fin Stack Proximity
Key Tm0P low 0 high 0 Battery Charger Proximity
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU VCore
Key VN0R low 0 high 0 MCP VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro6,1 from MacBookPro6_1
Name: MacBook Pro (17 inch, Mid 2010)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0.64 high 30.4 CPU Core
Key ID0R low 0.1 high 18.0139 DC In
Key IC1C low 0.1 high 3.5126 CPU Core - High Side
Key IC2C low 0.4859 high 23.0812 CPU Front Side Bus 1.05V
Key IG1C low 0.1 high 4.9141 GPU 1.8V
Key IN0R low 0.24 high 11.4 MCP Core
Key IN1R low 0 high 0 NorthBridge Rail
Key IP0R low 0.1 high 18.0139 Battery - BMON
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TB3T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Digital
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Die - Analog
Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TN0P low 0 high 0 MCP Proximity
Key TN0D low 0 high 0 MCP Die
Key Th2H low 0 high 0 Right Fin Stack Proximity
Key Tm0P low 0 high 0 Battery Charger Proximity
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU VCore
Key VN0R low 0 high 0 MCP VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 5500 Rightside
Key F0Ac low 2000 high 5500 Leftside
Dumping MacBookPro5,5 from MacBookPro5_5
Name: MacBook Pro (13 inch, Mid 2009)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 DC In
Key IP0R low 0 high 0 PBus
Key IN1C low 0 high 0 Northbridge Rail
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TN0P low 0 high 0 Northbridge Proximity
Key TN0D low 0 high 0 Northbridge Proximity
Key Th1H low 0 high 0 Fin Stack
Key VC0C low 0 high 0 CPU Core
Key F0Ac low 2000 high 6200 Exhaust
Dumping MacBookPro5,4 from MacBookPro5_4
Name: MacBook Pro (15 inch, Mid 2009)
Memory: 2 slots with 8192 MB total
Defaults: TC0C, temperature: TC0C
Key IB0R low 0 high 0 Battery - BMON
Key IC0R low 0 high 0 CPU (Core, CPU, DDR3, 1.05V, System Agent)
Key ID0R low 0 high 0 DC In
Key IG0R low 0 high 0 GPU (Core, FB, 1.0V)
Key IO0R low 0 high 0 Other (5V, 3.3V)
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0C low 0 high 0 CPU Die - Digital
Key TC0D low 0 high 0 CPU Die - Analog
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Analog
Key TG0P low 0 high 0 GPU Proximity
Key THSP low 0 high 0 Thunderbolt Proximity
Key TP0P low 0 high 0 Platform Controller Hub
Key TPCD low 0 high 0 PCH Die - Digital
Key Th1H low 0 high 0 Right Fin Stack Proximity
Key Th2H low 0 high 0 Left Heat Pipe & Fin Stack Proximity
Key Tm0P low 0 high 0 DC In Proximity Air Flow
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU VCore
Key VD0R low 0 high 0 DC In
Key VG0C low 0 high 0 GPU VCore
Key VN0C low 0 high 0 Intel GPU VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key PD0R low (null) high (null) DC In
Key F1Ac low 2000 high 5700 Rightside
Key F0Ac low 2000 high 5700 Leftside
Dumping MacBookPro5,3 from MacBookPro5_3
Name: MacBook Pro (15 inch, Mid 2009)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 DC In
Key IC1C low 0 high 0 CPU Core High Side
Key IC2C low 0 high 0 CPU Front Side Bus 1.05V
Key IG0C low 0 high 0 GPU Core
Key IG1C low 0 high 0 GPU 1.8V
Key IN0R low 0 high 0 MCP Core
Key IN1R low 0 high 0 NorthBridge Rail
Key IP0R low 0 high 0 Battery - BMON
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TB3T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Digital
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Die - Analog
Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TN0P low 0 high 0 MCP Proximity
Key TN0D low 0 high 0 MCP Die
Key Th2H low 0 high 0 Right Fin Stack Proximity
Key Tm0P low 0 high 0 Battery Charger Proximity
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU VCore
Key VN0R low 0 high 0 MCP VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6200 Rightside
Key F0Ac low 2000 high 6200 Leftside
Dumping MacBookPro5,2 from MacBookPro5_2
Name: MacBook Pro (17 inch)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 DC In
Key IC1C low 0 high 0 CPU Core High Side
Key IC2C low 0 high 0 CPU Front Side Bus 1.05V
Key IG0C low 0 high 0 GPU Core
Key IG1C low 0 high 0 GPU 1.8V
Key IN0R low 0 high 0 MCP Core
Key IN1R low 0 high 0 NorthBridge Rail
Key IP0R low 0 high 0 Battery - BMON
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TB3T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Digital
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Die - Analog
Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TN0P low 0 high 0 MCP Proximity
Key TN0D low 0 high 0 MCP Die
Key Th2H low 0 high 0 Right Fin Stack Proximity
Key Tm0P low 0 high 0 Battery Charger Proximity
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU VCore
Key VN0R low 0 high 0 MCP VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro5,1 from MacBookPro5_1
Name: MacBook Pro (15 inch, Late 2008)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 DC In
Key IC1C low 0 high 0 CPU Core High Side
Key IC2C low 0 high 0 CPU Front Side Bus 1.05V
Key IG0C low 0 high 0 GPU Core
Key IG1C low 0 high 0 GPU 1.8V
Key IN0R low 0 high 0 MCP Core
Key IN1R low 0 high 0 NorthBridge Rail
Key IP0R low 0 high 0 Battery - BMON
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TB3T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die - Digital
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Die - Analog
Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity
Key TN0P low 0 high 0 MCP Proximity
Key TN0D low 0 high 0 MCP Die
Key Th2H low 0 high 0 Right Fin Stack Proximity
Key Tm0P low 0 high 0 Battery Charger Proximity
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU VCore
Key VN0R low 0 high 0 MCP VCore
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro4,1 from MacBookPro4_1
Name: MacBook Pro (15 inch, Early 2008)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 DC In Rail
Key IG0C low 0 high 0 GPU Core
Key IG1C low 0 high 0 GPU I-Sense
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key IN2R low 0 high 0 Northbridge Rail 2
Key IP0R low 0 high 0 PBus Rail
Key TALP low 0 high 0 Ambient Light Proximity
Key TB0T low 0 high 0 Battery Thermal Diode
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Heatsink
Key TG0H low 0 high 0 GPU Heatsink
Key TW0P low 0 high 0 Airport Card
Key Th0H low 0 high 0 Heat Pipe 0
Key Th1H low 0 high 0 Heat Pipe 1
Key Th2H low 0 high 0 Heat Pipe 2
Key Tm0P low 0 high 0 Palm Rest
Key Ts0P low 0 high 0 Skin Proximity
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU Core
Key VG1C low 0 high 0 GPU Core
Key VP0R low 0 high 0 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro3,1 from MacBookPro3_1
Name: MacBook Pro (15 inch, Late 2007)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In Rail
Key IF0R low 0 high 0 Firewire
Key IG0C low 0 high 0 GPU
Key IM0R low 0 high 0 Memory
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key TA1P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Discrete Thermal Diode
Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0
Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1
Key Ts0P low 0 high 0 Palm Rest Left
Key Ts1P low 0 high 0 Palm Rest Right
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU
Key VP0R low 0 high 0 P-Bus Rail
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro2,2 from MacBookPro2_2
Name: MacBook Pro (15 inch, Late 2006)
Memory: 2 slots with 3072 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In Rail
Key IF0R low 0 high 0 Firewire
Key IG0C low 0 high 0 GPU
Key IM0R low 0 high 0 Memory
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key TA1P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Discrete Thermal Diode
Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0
Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1
Key Ts0P low 0 high 0 Palm Rest Left
Key Ts1P low 0 high 0 Palm Rest Right
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU
Key VP0R low 0 high 0 P-Bus Rail
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro2,1 from MacBookPro2_1
Name: MacBook Pro (17 inch, Late 2006)
Memory: 2 slots with 3072 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In Rail
Key IF0R low 0 high 0 Firewire
Key IG0C low 0 high 0 GPU
Key IM0R low 0 high 0 Memory
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key TA1P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Discrete Thermal Diode
Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0
Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1
Key Ts0P low 0 high 0 Palm Rest Left
Key Ts1P low 0 high 0 Palm Rest Right
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU
Key VP0R low 0 high 0 P-Bus Rail
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 6000 Rightside
Key F0Ac low 2000 high 6000 Leftside
Dumping MacBookPro10,2 from MacBookPro10_2
Name: MacBook Pro (13 inch, Late 2012)
Memory: soldered slots with 8192 MB total
Defaults: TC0P, temperature: TCXC
Key ALSL low 0 high 0 Ambient Light
Key IC0R low 1.64 high 2.142 CPU
Key ID0R low 1.5 high 4.5 DC In
Key IM0C low 0.88 high 1.5 DDR3
Key IO0R low 0.2 high 1 Other (5V, 3.3V)
Key IPBR low 0 high 1 Battery - BMON
Key ISDC low 0 high 0.8 SSD
Key TA0P low 10 high 65 Airflow (Fans)
Key TA1P low 10 high 65 Airflow (DC-In)
Key TB1T low 10 high 64 Battery Sensor 1
Key TB2T low 10 high 64 Battery Sensor 2
Key TC0P low 10 high 90 CPU Proximity
Key TCXC low 10 high 105 CPU Die - Digital
Key TM0P low 10 high 110 DDR3 Proximity
Key TP0P low 10 high 75 Platform Controller Hub Proximity
Key TPCD low 10 high 110 Platform Controller Hub Die
Key TW0P low 10 high 110 X29 Proximity
Key Th1H low 10 high 75 Left Fin Stack Proximity
Key Th2H low 10 high 75 Right Fin Stack Proximity
Key Ts0P low 10 high 45 Trackpad
Key VC0C low 0.4 high 1.7 CPU VCore
Key VC2C low 0.6 high 1 CPU System Agent
Key VD0R low 15.5 high 17.3 DC In
Key VN0C low 0 high 1 GPU
Key VP0R low 8.75 high 14.528 P-Bus
Key F1Ac low 2000 high 8208 Rightside
Key F0Ac low 2160 high 7600 Leftside
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro10,1 from MacBookPro10_1
Name: MacBook Pro (15 inch, Retina, Mid 2012)
Memory: 2 slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0.329 high 2.891 CPU (Core, GFX, DDR3, 1.05V, System Agent)
Key IC2C low 0.224 high 2.284 CPU System Agent S0 CPU
Key ID0R low 1.08 high 4.671 DC In
Key IG0R low 0.155 high 1.397 GPU (Core, FB, 1.0V)
Key IHDC low 0.008 high 0.777 SSD
Key IM0C low 0.143 high 1.415 DDR3
Key IO0R low 0.24 high 0.958 Other (5V, 3.3V)
Key IPBR low 0.083 high 0.741 Battery - BMON
Key TB1T low 10 high 64 Battery Sensor 1
Key TB2T low 10 high 64 Battery Sensor 2
Key TC0P low 10 high 90 CPU Proximity
Key TCXC low 10 high 105 CPU Die - Digital
Key TG0D low 10 high 100 GPU Die - Analog
Key TG0P low 10 high 80 GeForce GPU Proximity
Key TM0P low 10 high 110 DDR3 Proximity
Key TP0P low 10 high 75 Platform Controller Hub
Key TPCD low 10 high 110 PCH Die - Digital
Key TW0P low 10 high 110 X29 Proximity
Key Ta0P low 10 high 65 DC In Proximity Air Flow
Key Th1H low 10 high 75 Right Fin Stack Proximity
Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity
Key Ts0P low 10 high 56 Palm Rest
Key VBLC low 40.5 high 55 Backlight
Key VC0C low 0.29 high 1.35 CPU VCore
Key VD0R low 15 high 21 DC In
Key VG0C low 0.45 high 1.5 GeForce GPU VCore
Key VP0R low 8.75 high 14.528 P-Bus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 5500 Rightside
Key F0Ac low 2160 high 5940 Leftside
Key TC1C low 15 high 105 CPU Core 1 - DTS
Key TC2C low 15 high 105 CPU Core 2 - DTS
Key TC3C low 15 high 105 CPU Core 3 - DTS
Key TC4C low 15 high 105 CPU Core 4 - DTS
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro1,2 from MacBookPro1_2
Name: MacBook Pro (17 inch)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key PC0C low 0 high 0 CPU Core
Key PD0R low 0 high 0 DC In Rail
Key PF0R low 0 high 0 Firewire Rail
Key PG0C low 0 high 0 GPU Core
Key PM0R low 0 high 0 Memory Rail
Key PN0R low 0 high 0 Northbridge Rail
Key PP0R low 0 high 0 PBus Rail
Key IC0C low 0 high 0 CPU I-Sense
Key ID0R low 0 high 0 DC I-Sense
Key IF0R low 0 high 0 Firewire I-Sense
Key IG0C low 0 high 0 GPU I-Sense
Key IM0R low 0 high 0 Memory I-Sense
Key IN0R low 0 high 0 Northbridge I-Sense
Key IP0R low 0 high 0 PBus I-Sense
Key TA0P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU VR Area
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Discrete Thermal Diode
Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0
Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1
Key Ts0P low 0 high 0 Palm Rest Left
Key Ts1P low 0 high 0 Palm Rest Right
Key VC0C low 0 high 0 CPU V-Sense
Key VG0C low 0 high 0 GPU V-Sense
Key VP0R low 0 high 0 P-Bus V-Sense
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 1000 high 6000 Rightside
Key F0Ac low 1000 high 6000 Leftside
Dumping MacBookPro11,1 from MacBookPro11_1
Name: MacBook Pro (13 inch, Retina, Late 2013)
Memory: soldered slots with 8192 MB total
Defaults: TC0P, temperature: CUS1
Key ALSL low 0 high 0 Ambient Light
Key IC0R low 0.01 high 2 CPU (CPU, I/O)
Key IC2C low 0.25 high 10 CPU Core
Key ID0R low 0 high 4 DC In
Key IPBR low 0 high 1.5 Charger (BMON)
Key ISDC low 0.0005 high 1 SSD 3.3V
Key TA0P low 10 high 60 Air Flow Proximity
Key TB1T low 10 high 60 Battery Sensor 1
Key TB2T low 10 high 60 Battery Sensor 2
Key TC0C low 10 high 100 CPU Core 1
Key TC0P low 10 high 85 CPU Proximity
Key TC1C low 10 high 100 CPU Core 2
Key TCGC low 10 high 105 Intel GPU
Key TCSA low 10 high 100 CPU System Agent Core
Key TCXC low 10 high 105 CPU PECI Die
Key TH0a low 10 high 100 SSD 1
Key TH0b low 10 high 100 SSD 2
Key TM0P low 10 high 70 DDR3 Proximity
Key TPCD low 10 high 100 Platform Controller Hub PECI
Key Th1H low 10 high 63 Right Fin Stack
Key Ts0P low 10 high 42 Palm Rest
Key VC0C low 1.6 high 1.9 CPU Vcore
Key VD0R low 15.5 high 17.5 DC In
Key VP0R low 9 high 13.5 PBus
Key F0Ac low 1300 high 6208 Fan
Key CUS1 low (null) high (null) CPU Cores
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro1,1 from MacBookPro1_1
Name: MacBook Pro (15 inch)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key PC0C low 0 high 0 CPU Core
Key PD0R low 0 high 0 DC In Rail
Key PF0R low 0 high 0 Firewire Rail
Key PG0C low 0 high 0 GPU Core
Key PM0R low 0 high 0 Memory Rail
Key PN0R low 0 high 0 Northbridge Rail
Key PP0R low 0 high 0 PBus Rail
Key IC0C low 0 high 0 CPU I-Sense
Key ID0R low 0 high 0 DC I-Sense
Key IF0R low 0 high 0 Firewire I-Sense
Key IG0C low 0 high 0 GPU I-Sense
Key IM0R low 0 high 0 Memory I-Sense
Key IN0R low 0 high 0 Northbridge I-Sense
Key IP0R low 0 high 0 PBus I-Sense
Key TA0P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU VR Area
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TG0T low 0 high 0 GPU Discrete Thermal Diode
Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0
Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1
Key Ts0P low 0 high 0 Palm Rest Left
Key Ts1P low 0 high 0 Palm Rest Right
Key VC0C low 0 high 0 CPU V-Sense
Key VG0C low 0 high 0 GPU V-Sense
Key VP0R low 0 high 0 P-Bus V-Sense
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 1000 high 6000 Rightside
Key F0Ac low 1000 high 6000 Leftside
Dumping MacBookAir5,2 from MacBookAir5_2
Name: MacBook Air (13 inch, Mid 2012)
Memory: soldered slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 25 CPU VCore
Key IC0R low 0 high 12 Chipset INA Highside
Key ID0R low 0 high 3.5 DC IN Rail AMON
Key IM0R low 0 high 10 Memory
Key IN0C low 0 high 10 IG GFX VCore
Key PC0C low 0 high 30.75 CPU Core
Key PC0R low 0 high 106.8 CPU Computing High Side
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PDTR low 0 high 55.3 DC-in Total
Key PM0R low 0 high 15 DDR Memory
Key PN0C low 0 high 12.3 Intel GPU Core
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0C low 15 high 105 CPU Die - Digital Core 0
Key TC0D low 10 high 110 CPU Die
Key TC0P low 20 high 87 CPU Proximity
Key TC1C low 15 high 105 CPU Die - Digital Core 1
Key THSP low 10 high 65 Platform Controller Hub
Key TM0P low 20 high 75 Inlet
Key TPCD low 15 high 100 Platform Controller Hub
Key Ta0P low 20 high 80 Inlet
Key Th1H low 10 high 65 Fin Stack
Key Tm0P low 10 high 65 Inlet
Key Tm1P low 10 high 70 Inlet
Key Ts0P low 10 high 50 Logic Board
Key VC0C low 0 high 1.23 CPU VCore
Key VC2C low 0.6075 high 0.99 CPU System Agent
Key VD0R low 13.5 high 17.2 DCIN
Key VN0C low 0 high 1.23 Intel GPU VCore
Key VP0R low 6.4 high 8.9 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookAir5,1 from MacBookAir5_1
Name: MacBook Air (11 inch, Mid 2012)
Memory: soldered slots with 8192 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 25 CPU VCore
Key IC0R low 0 high 12 Chipset INA Highside
Key ID0R low 0 high 3.5 DC IN Rail AMON
Key IM0R low 0 high 10 Memory
Key IN0C low 0 high 10 IG GFX VCore
Key PC0C low 0 high 30.75 CPU Core
Key PC0R low 0 high 106.8 CPU Computing High Side
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PDTR low 0 high 55.3 DC-in Total
Key PM0R low 0 high 15 DDR Memory
Key PN0C low 0 high 12.3 Intel GPU Core
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0C low 15 high 105 CPU Die - Digital Core 0
Key TC0D low 10 high 110 CPU Die
Key TC0P low 20 high 87 CPU Proximity
Key TC1C low 15 high 105 CPU Die - Digital Core 1
Key THSP low 10 high 65 Platform Controller Hub
Key TM0P low 20 high 75 Inlet
Key TPCD low 15 high 100 Platform Controller Hub
Key Ta0P low 20 high 80 Inlet
Key Th1H low 10 high 65 Fin Stack
Key Tm0P low 10 high 65 Inlet
Key Tm1P low 10 high 70 Inlet
Key Ts0P low 10 high 50 Logic Board
Key VC0C low 0 high 1.23 CPU VCore
Key VC2C low 0.6075 high 0.99 CPU System Agent
Key VD0R low 13.5 high 17.2 DCIN
Key VN0C low 0 high 1.23 Intel GPU VCore
Key VP0R low 6.4 high 8.9 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookAir4,2 from MacBookAir4_2
Name: MacBook Air (13 inch, Mid 2011)
Memory: soldered slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0r low 0 high 0 Charger Rail
Key IC0C low 0 high 25 CPU VCore
Key IC1C low 0 high 6 CPU I/O PP1V05
Key IC0R low 0 high 12 Chipset INA Highside
Key IC1R low 0 high 12 Chipset SMBUS Highside
Key ID0R low 0 high 3.5 DC In Rail
Key IN0C low 0 high 10 IG GFX VCore
Key IM0R low 0 high 10 Memory Power
Key Ta0P low 20 high 80 Inlet
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0C low 15 high 105 CPU Die - Digital Core 0
Key TC1C low 15 high 105 CPU Die - Digital Core 1
Key TC0D low 10 high 110 CPU Die
Key TC0P low 20 high 87 CPU Proximity
Key Th1H low 10 high 65 Fin Stack
Key THSP low 10 high 65 Platform Controller Hub
Key TM0P low 20 high 75 Inlet
Key Tm0P low 10 high 65 Inlet
Key Tm1P low 10 high 65 Inlet
Key Ts0P low 10 high 50 Logic Board
Key TPCD low 15 high 100 Platform Controller Hub
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key VC0C low 0.3 high 1.23 CPU Core
Key VC1R low 0 high 0 CPU Highside
Key VN0C low 0 high 1.23 Intel GPU VCore
Key VP0R low 7.2 high 8.9 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Dumping MacBookAir4,1 from MacBookAir4_1
Name: MacBook Air (11 inch, Mid 2011)
Memory: soldered slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0r low 0 high 0 Charger Rail
Key IC0C low 0 high 25 CPU VCore
Key IC1C low 0 high 6 CPU I/O PP1V05
Key IC0R low 0 high 12 Chipset INA Highside
Key IC1R low 0 high 12 Chipset SMBUS Highside
Key ID0R low 0 high 3.5 DC In Rail
Key IN0C low 0 high 10 IG GFX VCore
Key IM0R low 0 high 10 Memory Power
Key Ta0P low 20 high 80 Inlet
Key TB0T low 10 high 50 Battery
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0C low 15 high 105 CPU Die - Digital Core 0
Key TC1C low 15 high 105 CPU Die - Digital Core 1
Key TC0D low 10 high 110 CPU Die
Key TC0P low 20 high 87 CPU Proximity
Key Th1H low 10 high 65 Fin Stack
Key THSP low 10 high 65 Platform Controller Hub
Key TM0P low 20 high 75 Inlet
Key Tm0P low 10 high 65 Inlet
Key Tm1P low 10 high 65 Inlet
Key Ts0P low 10 high 50 Logic Board
Key TPCD low 15 high 100 Platform Controller Hub
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key VC0C low 0.3 high 1.23 CPU Core
Key VC1R low 7.2 high 8.9 CPU Highside
Key VN0C low 0 high 1.23 Intel GPU VCore
Key VP0R low 7.2 high 8.9 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Dumping MacBookAir3,2 from MacBookAir3_2
Name: MacBook Air (13 inch, Late 2010)
Memory: soldered slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0.3 PBus Rail
Key ID0R low 0.5 high 3.29 DC In Rail
Key IN0C low 1 high 15 MCP Core 0
Key IN1C low 0.3 high 1.2 MCP Core 1
Key IC0r low 0 high 0 CPU Core VTT
Key TB1T low 15 high 50 BMU 1
Key TB2T low 15 high 50 BMU 2
Key TC0D low 33 high 110 CPU Die
Key TC0P low 20 high 85 CPU Proximity
Key Th1H low 15 high 49 Fin Stack
Key TN0D low 32 high 100 MCP Die Top Side
Key TN1D low 40 high 110 MCP Die Top Side
Key TN0P low 25 high 82 MCP Proximity
Key TM0P low 15 high 57 MCP Proximity
Key Tp0P low 15 high 55 Logic Board
Key Ts0P low 15 high 41 Logic Board
Key VC0C low 0.725 high 1.1625 CPU VCore
Key VN0C low 0.89 high 1 MPU VCore
Key VP0R low 7.2 high 8.6 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Dumping MacBookAir3,1 from MacBookAir3_1
Name: MacBook Air (11 inch, Late 2010)
Memory: soldered slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0.3 PBus Rail
Key ID0R low 0.576 high 3.2 DC In Rail
Key IN0C low 1.3 high 15 MCP Core 0
Key IN1C low 0.472 high 3.5 MCP Core 1
Key IC0r low 0 high 0 CPU Core VTT
Key TB1T low 10 high 50 BMU 1
Key TB2T low 10 high 50 BMU 2
Key TC0D low 20 high 110 CPU Die
Key TC0P low 20 high 80 CPU Proximity
Key Th1H low 10 high 55 Fin Stack
Key TN0D low 20 high 100 MCP Die Top Side
Key TN1D low 20 high 100 MCP Die Top Side
Key TN0P low 25 high 80 MCP Proximity
Key TM0P low 20 high 68 MCP Proximity
Key Tp0P low 10 high 65 Logic Board
Key Ts0P low 10 high 50 Logic Board
Key VC0C low 0.725 high 1.1625 CPU VCore
Key VP0R low 7.2 high 8.9 PBus Rail
Key F0Ac low 2000 high 6500 Exhaust
Dumping MacBookAir2,1 from MacBookAir2_1
Name: MacBook Air (13 inch)
Memory: soldered slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0 Battery Rail
Key ID0R low 0 high 0 DC In Rail
Key IN0C low 0 high 0 MCP Core
Key Ic0R low 0 high 0 Sensor Rail
Key TB0T low 0 high 0 Battery Thermal Diode 0
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key Th0P low 0 high 0 CPU Proximity
Key Th0H low 0 high 0 Heat Pipe Heatsink
Key TN0D low 0 high 0 MCD Die
Key Tp0P low 0 high 0 Power Supply Proximity
Key Tp1P low 0 high 0 Logic Board Front Edge
Key Ts0P low 0 high 0 Skin
Key TV0P low 0 high 0 Air Vent Exit
Key TW0P low 0 high 0 Airport
Key VD0R low 0 high 0 DC In Rail
Key VN0C low 0 high 0 MPU Core
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBookAir1,1 from MacBookAir1_1
Name: MacBook Air (13 inch, Early 2008)
Memory: soldered slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0 Battery Rail
Key ID0R low 0 high 0 DC In Rail
Key IG0C low 0 high 0 CPU Core
Key Ic0R low 0 high 0 Sensor Rail
Key TB0T low 0 high 0 Battery Thermal Diode 0
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key Th0H low 0 high 0 Heat Pipe Heatsink
Key Tp0P low 0 high 0 Power Supply
Key Ts0P low 0 high 0 Skin
Key TW0P low 0 high 0 Airport
Key VC0C low 0 high 0 CPU Core
Key VD0R low 0 high 0 DC In Rail
Key VG0C low 0 high 0 GPU Core
Key VP0R low 0 high 0 PBus Rail
Key ALSL low 0 high 100 Ambient Light Sensor
Key F0Ac low 2500 high 6200 Exhaust
Dumping MacBook7,1 from MacBook7_1
Name: MacBook (13 inch, Mid 2010)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0.153 high 8.778 Battery
Key IC0C low 0.5916 high 30.305 CPU
Key IC0R low 0.0673 high 3.6636 CPU VCore VTT
Key ID0R low 0.102 high 5.175 DC In
Key IN0C low 0.3528 high 18.074 MCP VCore
Key IN1C low 0.073 high 3.739 MCP Memory
Key TB1T low 15.3 high 70.4000 Battery Thermal Diode 1
Key TB2T low 15.3 high 70.4000 Battery Thermal Diode 2
Key TC0D low 15.3 high 115.5 CPU Die
Key TC0P low 15.3 high 93.5 CPU Proximity
Key TH0P low 0 high 0 HDD Flex Area
Key Th1H low 15.5 high 82.5 Fin Stack
Key TN0P low 15.3 high 80.3 MCP Proximity Top Side
Key TN0D low 15.3 high 110 MCP Die
Key TN1D low 15.3 high 110 MCP Die
Key Ts0P low 15.3 high 61.6 Palm Rest
Key VC0C low 0.0306 high 1.65 CPU Core
Key VN0C low 0.0306 high 1.65 MCP Core
Key VP0R low 9.18 high 14.3 PBus Rail
Key F0Ac low 2000 high 6200 Exhaust
Dumping MacBook6,1 from MacBook6_1
Name: MacBook (13 inch, Late 2009)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IB0R low 0 high 0 Battery
Key IC0C low 0 high 0 CPU
Key IC0R low 0 high 0 CPU VCore VTT
Key ID0R low 0 high 0 DC In
Key IN0C low 0 high 0 MCP VCore
Key IN1C low 0 high 0 MCP Memory
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TH0P low 0 high 0 HDD Flex Area
Key Th1H low 0 high 0 Fin Stack
Key TN0P low 0 high 0 MCP Proximity Top Side
Key TN0D low 0 high 0 MCP Die
Key TN1D low 0 high 0 MCP Die
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU Core
Key VN0C low 0 high 0 MCP Core
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 2000 high 6200 Exhaust
Dumping MacBook5,2 from MacBook5_2
Name: MacBook (13 inch)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key IC0R low 0 high 0 CPU Core High Side
Key ID0R low 0 high 0 DC In
Key IP0R low 0 high 0 PBus Rail
Key IN1C low 0 high 0 Northbridge Rail
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TN0P low 0 high 0 NB Proximity Top Side
Key TN0D low 0 high 0 MCP Die
Key Th0H low 0 high 0 HeatPipe Heatsink
Key Th1H low 0 high 0 Fin Stack
Key VC0C low 0 high 0 CPU Core
Key VP0R low 0 high 0 PBus Rail
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBook5,1 from MacBook5_1
Name: MacBook (13 inch, Late 2008)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key IC0R low 0 high 0 CPU Core High Side
Key ID0R low 0 high 0 DC In
Key IP0R low 0 high 0 PBus Rail
Key IN1C low 0 high 0 Northbridge Rail
Key TB1T low 0 high 0 Battery Thermal Diode 1
Key TB2T low 0 high 0 Battery Thermal Diode 2
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TN0P low 0 high 0 NB Proximity Top Side
Key TN0D low 0 high 0 MCP Die
Key Th0H low 0 high 0 HeatPipe Heatsink
Key Th1H low 0 high 0 Fin Stack
Key VC0C low 0 high 0 CPU Core
Key VP0R low 0 high 0 PBus Rail
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBook4,1 from MacBook4_1
Name: MacBook (13 inch, Early 2008)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IG0C low 0 high 0 GPU Core
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key IP0R low 0 high 0 PBus Rail
Key TB0T low 0 high 0 Battery Thermal Diode
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TM0P low 0 high 0 Underneath SODIMM
Key TN0P low 0 high 0 NB Proximity Top Side
Key TW0P low 0 high 0 Airport Proximity
Key Th0H low 0 high 0 HeatPipe Heatsink 0
Key Th1H low 0 high 0 HeatPipe Heatsink 1
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU Core
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBook3,1 from MacBook3_1
Name: MacBook (13 inch, Late 2007)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IG0C low 0 high 0 GPU Core
Key IN0R low 0 high 0 Northbridge Rail 1
Key IN1R low 0 high 0 Northbridge Rail 2
Key IP0R low 0 high 0 PBus Rail
Key TB0T low 0 high 0 Battery Thermal Diode
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TM0P low 0 high 0 Underneath SODIMM
Key TN0P low 0 high 0 NB Proximity Top Side
Key TW0P low 0 high 0 Airport Proximity
Key Th0H low 0 high 0 HeatPipe Heatsink 0
Key Th1H low 0 high 0 HeatPipe Heatsink 1
Key VC0C low 0 high 0 CPU Core
Key VG0C low 0 high 0 GPU Core
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBook2,1 from MacBook2_1
Name: MacBook (13 inch)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IN0R low 0 high 0 Northbridge Rail 0
Key IN1R low 0 high 0 Northbridge Rail 1
Key IP0R low 0 high 0 PBus Rail
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU VR Area
Key TM0P low 0 high 0 FBDIMM Riser Incoming Air
Key TN0P low 0 high 0 NB Proximity
Key TN1P low 0 high 0 NB Proximity
Key Th0H low 0 high 0 NB/CPU/GPU HeatPipe 0
Key Th1H low 0 high 0 NB/CPU/GPU HeatPipe 1
Key VC0C low 0 high 0 CPU Core
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1800 high 6200 Exhaust
Dumping MacBook1,1 from MacBook1_1
Name: MacBook (13 inch)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D
Key IC0C low 0 high 0 CPU I-Sense
Key ID0R low 0 high 0 DC I-Sense
Key IN0R low 0 high 0 Northbridge I-Sense
Key IN1R low 0 high 0 Northbridge I-Sense
Key IP0R low 0 high 0 PBus I-Sense
Key PC0C low 0 high 0 CPU Core
Key PD0R low 0 high 0 DC In Rail
Key PN0R low 0 high 0 Northbridge Rail
Key PP0R low 0 high 0 PBus Rail
Key TB0T low 0 high 0 Battery
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU VR Area
Key TM0P low 0 high 0 FBDIMM Riser Incoming Air
Key TN0P low 0 high 0 NB Proximity
Key TN1P low 0 high 0 NB Proximity
Key Th0H low 0 high 0 NB/CPU/GPU HeatPipe 0
Key Th1H low 0 high 0 NB/CPU/GPU HeatPipe 1
Key Ts0P low 0 high 0 Palm Rest
Key VC0C low 0 high 0 CPU V-Sense
Key VP0R low 0 high 0 PBus V-Sense
Key F0Ac low 1500 high 6200 Exhaust
Dumping MacBook8,1 from MacBook8_1
Name: MacBook (12 inch, Retina, Mid 2015)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: CUS1
Key IBAC low 0 high 0 Battery
Key IC0R low 0 high 0 CPU Computing High Side
Key ID0R low 0 high 0 DC In
Key IPBF low 0 high 0 Battery Discharge
Key IPBR low 0 high 0 Battery PBus
Key PC0R low 0 high 0 CPU Computing High Side
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PDTR low 0 high 0 DC In
Key PPBR low 0 high 0 Battery PBus
Key PSTR low 0 high 0 Total Power
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCHP low 0 high 0 Charger Proximity
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub
Key TW0P low 0 high 0 Wireless Proximity
Key Th0N low 0 high 0 SSD
Key Ts0P low 0 high 0 Trackpad
Key VACC low 0 high 0 ACC voltage
Key VCFR low 0 high 0 FIVR CPU Supply
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus Rail
Key CUS1 low (null) high (null) CPU Cores
Dumping MacBookPro15,1 from MacBookPro15_1
Name: MacBook Pro (15 inch, Retina & Touch Bar, Mid 2018)
Memory: soldered slots with 32768 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0 high 0 CPU Computing Highside
Key IPBR low 0 high 0 PBus
Key ID0R low 0 high 0 DC In
Key ICTC low 0 high 0 Intel GPU
Key PC0R low 0 high 0 CPU Computing Highside
Key PPBR low 0 high 0 Battery Current
Key PG0R low 0 high 0 Radeon High Side
Key Ts0P low 0 high 0 Palm Rest 1
Key Ts1P low 0 high 0 Palm Rest 2
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TC3C low 0 high 0 CPU Core 3
Key TC4C low 0 high 0 CPU Core 4
Key TC5C low 0 high 0 CPU Core 5
Key TC6C low 0 high 0 CPU Core 6
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU PECI
Key TaLC low 0 high 0 Airflow Left
Key TTLD low 0 high 0 Thunderbolt Left Proximity
Key Th1H low 0 high 0 Right Fin Stack
Key Th2H low 0 high 0 Left Fin Stack
Key TM0P low 0 high 0 Memory Proximity
Key TC0P low 0 high 0 CPU Proximity
Key TG0P low 0 high 0 Radeon GPU Proximity
Key TW0P low 0 high 0 Airport
Key TaRC low 0 high 0 Airflow Right
Key TTRD low 0 high 0 Thunderbolt Right Proximity
Key TGVP low 0 high 0 Radeon Memory Proximity
Key VG2C low 0 high 0 Radeon VDDCI
Key VP0R low 0 high 0 PBus
Key VD0R low 0 high 0 DC In
Key VCSC low 0 high 0 CPU System Agent
Key VCAC low 0 high 0 CPU IA
Key VCTC low 0 high 0 Intel GPU
Key VG0C low 0 high 0 Radeon Core
Key F0Ac low 2160 high 5297 Leftside
Key F1Ac low 2000 high 5489 Rightside
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro13,2 from MacBookPro13_2
Name: MacBook Pro (13 inch, Retina & Touch Bar, Late 2016)
Memory: soldered slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key I18C low 0 high 0 1.8V
Key IAPC low 0 high 0 Wireless
Key IB0L low 0 high 0 Battery
Key IBLR low 0 high 0 Display Backlight
Key IBTC low 0 high 0 Bluetooth
Key ISCC low 0 high 0 Platform Controller Hub PC
Key IC0R low 0 high 0 CPU GPU/VCCIO/MEM
Key ICAC low 0 high 0 CPU IA Core
Key ICAM low 0 high 0 CPU IA Core (IMON)
Key ICEC low 0 high 0 CPU VccEDRAM
Key ICGC low 0 high 0 Intel GPU
Key ICGM low 0 high 0 Intel GPU (IMON)
Key ICMC low 0 high 0 Camera
Key ICSC low 0 high 0 CPU VCCSA
Key ID0R low 0 high 0 DC In (AMON)
Key IHCC low 0 high 0 SSD 3.3V
Key IHNC low 0 high 0 SSD NAND
Key IKBC low 0 high 0 Keyboard Backlight
Key ILDC low 0 high 0 Display
Key IM0C low 0 high 0 1.2V (CPU & Memory)
Key IM1C low 0 high 0 1.8V Memory
Key IMCC low 0 high 0 1.2V CPU
Key IO3R low 0 high 0 3.3V Other
Key IO5R low 0 high 0 5V Other
Key IPBR low 0 high 0 Battery (BMON)
Key IS1C low 0 high 0 1.0V Southbridge IO
Key IT3C low 0 high 0 Keyboard/Trackpad
Key ITAR low 0 high 0 Trackpad Actuator
Key IULC low 0 high 0 Left Thunderbolt
Key IURC low 0 high 0 Right Thunderbolt
Key PC0R low 0 high 0 CPU Highside (PBUS)
Key PCAC low 0 high 0 CPU Core
Key PCAM low 0 high 0 CPU Core (IMON)
Key PCEC low 0 high 0 CPU VccEDRAM
Key PCGC low 0 high 0 Intel GPU
Key PCGM low 0 high 0 Intel GPU (IMON)
Key PCSC low 0 high 0 CPU VCCSA
Key PD0R low 0 high 0 USBC/MPM Input
Key PHCC low 0 high 0 SSD 3.3V S5
Key PHNC low 0 high 0 NAND 2.7V S4
Key PM0C low 0 high 0 Memory 1.2V S3
Key PM1C low 0 high 0 Memory 1.8V
Key PMCC low 0 high 0 CPU/Memory 1.2V
Key PO3R low 0 high 0 3.3V S4
Key PO5R low 0 high 0 5V S4
Key PPBR low 0 high 0 Battery (BMON)
Key PS1C low 0 high 0 Southbridge IO 1.0V
Key PTAR low 0 high 0 Trackpad Actuator
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TTLD low 0 high 0 Left Thunderbolt Die
Key TTRD low 0 high 0 Right Thunderbolt Die
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Digital Core 1
Key TC2C low 0 high 0 CPU Digital Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core (PECI)
Key TH0A low 0 high 0 SSD Proximity
Key TH0B low 0 high 0 NAND Proximity 1
Key TH0C low 0 high 0 NAND Proximity 2
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TW0P low 0 high 0 Airport Proximity
Key TaLC low 0 high 0 Airflow Left Side
Key TaRC low 0 high 0 Airflow Right Side
Key Th1H low 0 high 0 Fin Stack Proximity Right
Key Th2H low 0 high 0 Fin Stack Proximity Left
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Trackpad Actuator
Key VCAC low 0 high 0 CPU IA Core
Key VCGC low 0 high 0 Intel GPU
Key VCSC low 0 high 0 CPU VCCSA
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus
Key VSCC low 0 high 0 Southbridge VCC
Key F0Ac low 1250 high 6336 Left Fan
Key F1Ac low 1350 high 6864 Right Fan
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping FauxMac from FauxMac
Name: FauxMac
Memory: soldered slots with 0 MB total
Defaults:, temperature:
Dumping MacBookAir7,2 from MacBookAir7_2
Name: MacBook Air (13 inch, Mid 2015)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IBAC low 0 high 0 Battery
Key IC0R low 0 high 0 CPU Computing High Side
Key ICS0 low 0 high 0 CPU Core
Key ICS1 low 0 high 0 CPU Load Current Monitor
Key ID0R low 0 high 0 DC In Rail
Key IM3C low 0 high 0 DDR S3
Key IPB1 low 0 high 0 BMON Discrete
Key IPBR low 0 high 0 Battery PBus
Key ISDC low 0 high 0 SSD
Key PC0R low 0 high 0 CPU Computing High Side
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PDTR low 0 high 0 DC In Total
Key PPBR low 0 high 0 Battery PBus
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCHP low 0 high 0 Charger Proximity
Key TCSA low 0 high 0 CPU System Agent Core
Key THSP low 0 high 0 T29 Proximity
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub
Key TS2P low 0 high 0 S2 Camera Proximity
Key TW0P low 0 high 0 Wireless Proximity
Key Ta0P low 0 high 0 Air Flow
Key Th1H low 0 high 0 Fin Stack
Key Tm0P low 0 high 0 Logic Board Top Side
Key Ts0P low 0 high 0 Trackpad
Key VC1C low 0 high 0 1.05V S0
Key VCS0 low 0 high 0 CPU Core
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1200 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro11,4 from MacBookPro11_4
Name: MacBook Pro (15 inch, Retina, Mid 2015)
Memory: 2 slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0C low 0 high 0 CPU High (CPU, I/O)
Key ID0R low 0 high 0 DC In
Key IHDC low 0 high 0 SSD
Key IPBR low 0 high 0 Charger (BMON)
Key IC0R low 0 high 0 CPU
Key IO3R low 0 high 0 Other 3.3V
Key IO5R low 0 high 0 Other 5V
Key IG0R low 0 high 0 GPU
Key IM0C low 0 high 0 Memory
Key IC1C low 0 high 0 Platform Controller Hub Core
Key IC2C low 0 high 0 CPU Load Current Monitor
Key IC3C low 0 high 0 CPU DDR
Key ILDC low 0 high 0 LCD Panel
Key IBLC low 0 high 0 LCD Backlight
Key IAPC low 0 high 0 Airport
Key IHSC low 0 high 0 Thunderbolt
Key ICMC low 0 high 0 S2
Key TC0P low 0 high 0 CPU Proximity
Key TP0P low 0 high 0 Platform Controller Hub
Key TM0P low 0 high 0 Memory Proximity
Key Ta0P low 0 high 0 Air Flow Proximity
Key Th2H low 0 high 0 Left Fin Stack
Key Th1H low 0 high 0 Right Fin Stack
Key TW0P low 0 high 0 Airport Proximity
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Palm Rest Actuator
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TH0A low 0 high 0 SSD A
Key TH0B low 0 high 0 SSD B
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TC3C low 0 high 0 CPU Core 3
Key TC4C low 0 high 0 CPU Core 4
Key TCXC low 0 high 0 CPU PECI Die
Key TCGC low 0 high 0 Intel GPU
Key TPCD low 0 high 0 Platform Controller Hub PECI
Key TCSA low 0 high 0 CPU System Agent Core
Key VC0C low 0 high 0 CPU VCore
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 Pbus
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2160 high 6156 Leftside
Key F1Ac low 2000 high 5700 Rightside
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookAir7,1 from MacBookAir7_1
Name: MacBook Air (11 inch, Mid 2015)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: TCXC
Key IBAC low 0 high 0 Battery
Key IC0R low 0 high 0 CPU Computing High Side
Key ICS0 low 0 high 0 CPU Core
Key ICS1 low 0 high 0 CPU Load Current Monitor
Key ID0R low 0 high 0 DC In Rail
Key IM3C low 0 high 0 DDR S3
Key IPB1 low 0 high 0 BMON Discrete
Key IPBR low 0 high 0 Battery PBus
Key ISDC low 0 high 0 SSD
Key PC0R low 0 high 0 CPU Computing High Side
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PDTR low 0 high 0 DC In Total
Key PPBR low 0 high 0 Battery PBus
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCHP low 0 high 0 Charger Proximity
Key TCSA low 0 high 0 CPU System Agent Core
Key THSP low 0 high 0 T29 Proximity
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub
Key TS2P low 0 high 0 S2 Camera Proximity
Key TW0P low 0 high 0 Wireless Proximity
Key Ta0P low 0 high 0 Air Flow
Key Th1H low 0 high 0 Fin Stack
Key Tm0P low 0 high 0 Logic Board Top Side
Key Ts0P low 0 high 0 Trackpad
Key VC1C low 0 high 0 1.05V S0
Key VCS0 low 0 high 0 CPU Core
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus Rail
Key F0Ac low 1200 high 6500 Exhaust
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBook9,1 from MacBook9_1
Name: MacBook (12 inch, Retina, Early 2016)
Memory: soldered slots with 8192 MB total
Defaults: TCXC, temperature: CUS1
Key IC0R low 0 high 0 CPU Computing High Side
Key ID0R low 0 high 0 DC In
Key IPBR low 0 high 0 Battery PBus
Key PC0R low 0 high 0 CPU Computing High Side
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PD0R low 0 high 0 DC In
Key PPBR low 0 high 0 Battery PBus
Key PSTR low 0 high 0 Total Power
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCHP low 0 high 0 Charger Proximity
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub
Key TW0P low 0 high 0 Wireless Proximity
Key Th0N low 0 high 0 SSD
Key Ts0P low 0 high 0 Trackpad
Key Ts1P low 0 high 0 Trackpad Actuator
Key VC0C low 0 high 0 CPU Core
Key VCGC low 0 high 0 CPU Vcc Gfx
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus Rail
Key CUS1 low (null) high (null) CPU Cores
Dumping MacBookPro12,1 from MacBookPro12_1
Name: MacBook Pro (13 inch, Retina, Early 2015)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: CUS1
Key ALSL low 0 high 0 Ambient Light
Key IC0R low 0 high 0 CPU (CPU, I/O)
Key IPBR low 0 high 0 Charger (BMON)
Key ID0R low 0 high 0 DC In
Key ISDC low 0 high 0 SSD 3.3V
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Palm Rest 2
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TPCD low 0 high 0 Platform Controller Hub PECI
Key TC0C low 0 high 0 CPU Core 1
Key TC1C low 0 high 0 CPU Core 2
Key Th1H low 0 high 0 Right Fin Stack
Key TA0P low 0 high 0 Air Flow Proximity
Key TM0P low 0 high 0 DDR3 Proximity
Key TC0P low 0 high 0 CPU Proximity
Key TH0a low 0 high 0 SSD
Key VP0R low 0 high 0 PBus
Key VD0R low 0 high 0 DC In
Key VC0C low 0 high 0 CPU Vcore
Key F0Ac low 1299 high 6199 Fan
Key CUS1 low (null) high (null) CPU Cores
Key TCSA low 0 high 0 CPU System Agent Core
Key TCGC low 0 high 0 Intel GPU
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro14,1 from MacBookPro14_1
Name: MacBook Pro (13 inch, Retina, Mid 2017)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: TCXC
Key IPBR low 0 high 0 Battery
Key PC0R low 0 high 0 CPU Computing Highside
Key PCPC low 0 high 0 CPU Core
Key PCPG low 0 high 0 Intel GPU
Key PCPT low 0 high 0 CPU Package
Key PD0R low 0 high 0 DC In
Key PHCC low 0 high 0 SSD 3.3V
Key PHNC low 0 high 0 SSD Memory
Key PPBR low 0 high 0 Battery
Key PSTR low 0 high 0 Total Power
Key Ta0P low 0 high 0 Ambient Air
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0F low 0 high 0 CPU Die PECI
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key Th1H low 0 high 0 Fin stack Proximity
Key TI0P low 0 high 0 IO Proximity
Key TM0P low 0 high 0 DRAM Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key Ts0P low 0 high 0 Trackpad
Key Ts0S low 0 high 0 Skin
Key TaLC low 0 high 0 Air Flow
Key Ts1P low 0 high 0 Trackpad Actuator
Key VP0R low 0 high 0 PBUS
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 7200 Fan
Dumping MacPro5,1 from MacPro5_1
Name: Mac Pro
Memory: 8 slots with 16384 MB total
Defaults: TCAD TCBD, temperature: TCAD TCBD
Key ICAB low 0.1 high 40 CPU A - VTT
Key ICVB low 0.1 high 40 CPU B - VTT
Key ICAC low 0.1 high 140 CPU A - Core Low Side (Vcore)
Key ICBC low 0.1 high 140 CPU B - Core Low Side (Vcore)
Key IH1Z low 0 high 2 HDD1, 12V
Key IH2Z low 0 high 2 HDD2, 12V
Key IH3Z low 0 high 2 HDD3, 12V
Key IH4Z low 0 high 2 HDD4, 12V
Key IH5Z low 0 high 12 HDD+ODD, 5V
Key IMAS low 0.1 high 50 DIMM, PP1V5 S3 MEM A
Key IN0C low 1 high 40 I/O Hub Core, 1V1 S0 I/O Hub Northbridge
Key IO0Z low 0 high 3 ODD 12V
Key IS1C low 0.25 high 5 1V05 S0 SB
Key IS2C low 0.25 high 2.3 1V5 S0 SB
Key Ie1S low 0 high 18 PCIe Slot 1 12V
Key Ie2S low 0 high 18 PCIe Slot 2 12V
Key Ie3S low 0 high 18 PCIe Slot 3 12V
Key Ie4S low 0 high 18 PCIe Slot 4 12V
Key IeAS low 0 high 18 PCIe Boost A 12V
Key IeBS low 0 high 18 PCIe Boost B 12V
Key Ip0C low 1 high 80 PSU 12V (PSMI)
Key TA0P low 5 high 45 System Ambient
Key TCAC low 1 high 85 CPU A - Relative to ProcHot
Key TCAD low 5 high 95 CPU A - Tdiode
Key TCAH low 5 high 85 CPU A - HeatSink
Key TCBC low 1 high 85 CPU B - Relative to ProcHot
Key TCBD low 5 high 95 CPU B - Tdiode
Key TCBH low 5 high 85 CPU B - HeatSink
Key TH1P low 5 high 50 Drive Bay 1 (On Carrier)
Key TH2P low 5 high 50 Drive Bay 2 (On Carrier)
Key TH3P low 5 high 50 Drive Bay 3 (On Carrier)
Key TH4P low 5 high 50 Drive Bay 4 (On Carrier)
Key TM1P low 5 high 80 DIMM Proximity 1 (On Riser)
Key TM2P low 5 high 80 DIMM Proximity 2 (On Riser)
Key TM3P low 5 high 80 DIMM Proximity 3 (On Riser)
Key TM4P low 5 high 80 DIMM Proximity 4 (On Riser)
Key TM5P low 5 high 80 DIMM Proximity 5 (On Riser)
Key TM6P low 5 high 80 DIMM Proximity 6 (On Riser)
Key TM7P low 5 high 80 DIMM Proximity 7 (On Riser)
Key TM8P low 5 high 80 DIMM Proximity 8 (On Riser)
Key TMA1 low 5 high 80 DIMM, CPUA, SLOT1, CHA - SPD
Key TMA2 low 5 high 80 DIMM, CPUA, SLOT2
Key TMA3 low 5 high 80 DIMM, CPUA, SLOT3
Key TMA4 low 5 high 80 DIMM, CPUA, SLOT4
Key TMB1 low 5 high 80 DIMM, CPUB, SLOT5
Key TMB2 low 5 high 80 DIMM, CPUB, SLOT6
Key TMB3 low 5 high 80 DIMM, CPUB, SLOT7
Key TMB4 low 5 high 80 DIMM, CPUB, SLOT8
Key TN0D low 5 high 95 Northbridge Tdiode
Key TN0H low 5 high 75 Northbridge HeatSink
Key Te1S low 5 high 95 PCIE slot 1
Key Te2S low 5 high 95 PCIE slot 2
Key Te3S low 5 high 95 PCIE slot 3
Key Te4S low 5 high 95 PCIE slot 4
Key Te5S low 5 high 95 PCIE slot 5
Key Tp0C low 5 high 100 PSU - AC/DC Supply 1
Key Tp1C low 5 high 100 PSU - AC/DC Supply 2
Key VCAB low 1 high 1.3 CPU A - VTT S0
Key VCAC low 0.6 high 1.3 CPU A - Core
Key VCBC low 0.6 high 1.3 CPU B - Core
Key VH1Z low 11.4 high 12.6 HDD1 12V
Key VH2Z low 11.4 high 12.6 HDD2 12V
Key VH3Z low 11.4 high 12.6 HDD3 12V
Key VH4Z low 11.4 high 12.6 HDD4 12V
Key VH5Z low 4.5 high 5.5 HDD+ODD 5V
Key VN0C low 1.07 high 1.13 1V1 S0 I/O Hub Northbridge
Key VO0Z low 11.4 high 12.6 ODD 12V
Key VS1C low 1 high 1.1 1V05 S0 SB
Key VS2C low 1.43 high 1.58 1V5 S0 SB
Key VS8C low 3.14 high 3.47 3V3 S5
Key Ve1S low 11.4 high 12.6 PCIe Slot 1, 12V
Key Ve2S low 11.4 high 12.6 PCIe Slot 2, 12V
Key Ve3S low 11.4 high 12.6 PCIe Slot 3, 12V
Key Ve4S low 11.4 high 12.6 PCIe Slot 4, 12V
Key VeAS low 11.4 high 12.6 PCIe BoostA, 12V
Key VeBS low 11.4 high 12.6 PCIe BoostB, 12V
Key Vp0C low 11.4 high 12.6 PSU 12V
Key F0Ac low 800 high 4500 Expansion Slots
Key F1Ac low 400 high 2800 Power Supply
Key F2Ac low 500 high 2800 Exhaust
Key F3Ac low 600 high 2800 Intake
Key F4Ac low 600 high 4000 Booster 1
Key F5Ac low 600 high 5199 Booster 2
Dumping MacPro4,1 from MacPro4_1
Name: Mac Pro (Early 2009)
Memory: 8 slots with 16384 MB total
Defaults: TCAD TCBD, temperature: TCAD TCBD
Key ICAC low 0 high 0 CPU A - Core Low Side
Key ICBC low 0 high 0 CPU B - Core Low Side
Key Ie1S low 0 high 0 PCIe Slot 1 12V
Key Ie2S low 0 high 0 PCIe Slot 2 12V
Key Ie3S low 0 high 0 PCIe Slot 3 12V
Key Ie4S low 0 high 0 PCIe Slot 4 12V
Key IeAS low 0 high 0 PCIe BoostA 12V
Key IeBS low 0 high 0 PCIe BoostB 12V
Key IH1Z low 0 high 0 HDD1 12V
Key IH2Z low 0 high 0 HDD2 12V
Key IH3Z low 0 high 0 HDD3 12V
Key IH4Z low 0 high 0 HDD4 12V
Key IO0Z low 0 high 0 ODD 12V
Key IH5Z low 0 high 0 HDD+ODD 5V
Key IMAS low 0 high 0 DIMM, PP1V5_S3_MEMA
Key IMBS low 0 high 0 DIMM, PP1V5_S3_MEMB
Key IN0C low 0 high 0 I/O Hub Core, 1V1 S0 I/O Hub Northbridge
Key Ip0C low 0 high 0 PSU, 12V
Key ICAB low 0 high 0 CPU A - VTT
Key ICBB low 0 high 0 CPU B - VTT
Key IS1C low 0 high 0 1V05 S0 SB
Key IS2C low 0 high 0 1V5 S0 SB
Key Ip1M low 0 high 0 12V S0 CPUA 240V
Key Ip2M low 0 high 0 12V S0 CPUB 240V
Key Ip3M low 0 high 0 12V S0 MEMA 240V
Key Ip4M low 0 high 0 12V S0 MEMB 240V
Key Ip5M low 0 high 0 12V S0 MLB1 240V A
Key Ip6M low 0 high 0 12V S0 MLB2 240V A
Key Ip7M low 0 high 0 12V S0 PCIE1 240V A
Key Ip8M low 0 high 0 12V S0 PCIE2 240V A
Key TA0P low 0 high 0 System Ambient
Key TCAC low 1 high 85 CPU A - Relative to ProcHot
Key TCAD low 0 high 0 CPU A - Tdiode
Key TCBC low 0 high 0 CPU B - Relative to ProcHot
Key TCBD low 0 high 0 CPU B - Tdiode
Key TCAH low 0 high 0 CPU A - HeatSink
Key TCBH low 0 high 0 CPU B - HeatSink
Key Te1S low 0 high 0 PCIE Slot 1
Key Te2S low 0 high 0 PCIE Slot 2
Key Te3S low 0 high 0 PCIE Slot 3
Key Te4S low 0 high 0 PCIE Slot 4
Key Te5S low 0 high 0 PCIE RAID card
Key TH1P low 5 high 50 Drive Bay 1 (On Carrier)
Key TH2P low 5 high 50 Drive Bay 2 (On Carrier)
Key TH3P low 5 high 50 Drive Bay 3 (On Carrier)
Key TH4P low 5 high 50 Drive Bay 4 (On Carrier)
Key TM1P low 5 high 80 DIMM Proximity 1 (On Riser)
Key TM2P low 5 high 80 DIMM Proximity 2 (On Riser)
Key TM3P low 5 high 80 DIMM Proximity 3 (On Riser)
Key TM4P low 5 high 80 DIMM Proximity 4 (On Riser)
Key TM5P low 5 high 80 DIMM Proximity 5 (On Riser)
Key TM6P low 5 high 80 DIMM Proximity 6 (On Riser)
Key TM7P low 5 high 80 DIMM Proximity 7 (On Riser)
Key TM8P low 5 high 80 DIMM Proximity 8 (On Riser)
Key TMA1 low 0 high 0 DIMM, CPUA, SLOT1, CHA SPD
Key TMA2 low 0 high 0 DIMM, CPUA, SLOT2, CHB SPD
Key TMA3 low 0 high 0 DIMM, CPUA, SLOT3, CHC SPD
Key TMA4 low 0 high 0 DIMM, CPUA, SLOT4, CHC SPD
Key TMB1 low 0 high 0 DIMM, CPUB, SLOT5, CHA SPD
Key TMB2 low 0 high 0 DIMM, CPUB, SLOT6, CHB SPD
Key TMB3 low 0 high 0 DIMM, CPUB, SLOT7, CHC SPD
Key TMB4 low 0 high 0 DIMM, CPUB, SLOT8, CHC SPD
Key TN0D low 0 high 0 I/O Hub Tdiode
Key TN0H low 0 high 0 I/O Hub HeatSink
Key Tp0C low 0 high 0 PSU - AC/DC Supply 1
Key Tp1C low 0 high 0 PSU - AC/DC Supply 2
Key VCAC low 0 high 0 CPU A - Core
Key VCBC low 0 high 0 CPU B - Core
Key Ve1S low 0 high 0 PCIe Slot 1, 12V
Key Ve2S low 0 high 0 PCIe Slot 2, 12V
Key Ve3S low 0 high 0 PCIe Slot 3, 12V
Key Ve4S low 0 high 0 PCIe Slot 4, 12V
Key VeAS low 0 high 0 PCIe BoostA, 12V
Key VeBS low 0 high 0 PCIe BoostB, 12V
Key VH1Z low 0 high 0 HDD1, 12V
Key VH2Z low 0 high 0 HDD2, 12V
Key VH3Z low 0 high 0 HDD3, 12V
Key VH4Z low 0 high 0 HDD4, 12V
Key VO0Z low 0 high 0 ODD, 12V
Key VH5Z low 0 high 0 HDD+ODD, 5V
Key VM1S low 0 high 0 1V5 S3 MEMA
Key VM2S low 0 high 0 1V5 S3 MEMB
Key VN0C low 0 high 0 1V1 S0 I/O Hub Northbridge
Key Vp0C low 0 high 0 PSU, 12V
Key VCAB low 0 high 0 CPU A - VTT S0
Key VCBB low 0 high 0 CPU B - VTT S0
Key VS1C low 0 high 0 1V05 S0 SB
Key VS2C low 0 high 0 1V5 S0_SB
Key VS8C low 0 high 0 3V3 S5
Key F0Ac low 800 high 4500 Expansion Slots
Key F1Ac low 400 high 2800 Power Supply
Key F2Ac low 500 high 2800 Exhaust
Key F3Ac low 500 high 2800 Intake
Key F4Ac low 800 high 4000 Booster 1
Key F5Ac low 800 high 5199 Booster 2
Dumping MacPro3,1 from MacPro3_1
Name: Mac Pro (Early 2008)
Memory: 8 slots with 16384 MB total
Defaults: TCAH TCBH, temperature:
Key ICAC low 0 high 0 CPU-A Core
Key ICBC low 0 high 0 CPU-B Core
Key IMAS low 0 high 0 FBDIMM Riser A 12V
Key IMBS low 0 high 0 FBDIMM Riser B 12V
Key IN0C low 0 high 0 MCH Core 0 - Supply Input
Key IN1C low 0 high 0 MCH Core 1
Key Ie1S low 0 high 0 PCIe Slot 1 +12V
Key Ie2S low 0 high 0 PCIe Slot 2 +12V
Key Ie3S low 0 high 0 PCIe Slot 3 +12V
Key Ie4S low 0 high 0 PCIe Slot 4 +12V
Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V
Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V
Key Ip0C low 0 high 0 PSMI Supply AC/DC Output, +12V Rail
Key TA0P low 0 high 0 Ambient
Key TC0C low 0 high 0 CPU-A Die 1 Offset
Key TC1C low 0 high 0 CPU-A Die 2 Offset
Key TC0P low 0 high 0 CPU VR Area
Key TC2C low 0 high 0 CPU-B Die 1 Offset
Key TC3C low 0 high 0 CPU-B Die 2 Offset
Key TCAH low 0 high 0 CPU-A Heatsink
Key TCBH low 0 high 0 CPU-B Heatsink
Key TH0P low 0 high 0 Hard Drive 1 Body
Key TH1P low 0 high 0 Hard Drive 2 Body
Key TH2P low 0 high 0 Hard Drive 3 Body
Key TH3P low 0 high 0 Hard Drive 4 Body
Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air
Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1
Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air
Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2
Key TM2P low 0 high 0 FBDIMM Riser A Voltage Regulator Area
Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air
Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air
Key TMAP low 0 high 0 FBDIMM Riser B Voltage Regulator Area
Key TN0C low 0 high 0 MCH Die Diode
Key TN0D low 0 high 0 MCH Die Offset
Key TN0H low 0 high 0 MCH Heatsink
Key TS0C low 0 high 0 LM94, Between CPU-A and CPU-A's VR
Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1
Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2
Key VCAC low 0 high 0 CPU-A Core
Key VCBC low 0 high 0 CPU-B Core
Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail
Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail
Key VN0C low 0 high 0 MCH Core 0
Key VN1C low 0 high 0 MCH Core 1
Key VeES low 0 high 0 PCIe Slots +12V Rail
Key Vp0C low 0 high 0 PSMI Supply AC/DC Output +12V rail
Key F1Ac low 500 high 2900 Expansion Slots
Key F0Ac low 500 high 2900 CPU
Key F2Ac low 500 high 2900 Exhaust
Key F3Ac low 600 high 2800 Power Supply
Dumping MacPro2,1 from MacPro2_1
Name: Mac Pro (Early 2007)
Memory: 8 slots with 16384 MB total
Defaults: TCAH TCBH, temperature:
Key ICAC low 0 high 0 CPU-A Core
Key ICBC low 0 high 0 CPU-B Core
Key IMAS low 0 high 0 FBDIMM Riser A 12V Supply
Key IMBS low 0 high 0 FBDIMM Riser B 12V Supply
Key IN0C low 0 high 0 MCH Core - Supply
Key Ie1S low 0 high 0 PCIe Slot 1 +12V
Key Ie2S low 0 high 0 PCIe Slot 2 +12V
Key Ie3S low 0 high 0 PCIe Slot 3 +12V
Key Ie4S low 0 high 0 PCIe Slot 4 +12V
Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V
Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V
Key Ip0C low 0 high 0 PSMI Supply AC/DC Total Output, +12V rail
Key TA0P low 0 high 0 Ambient Air
Key TC0C low 0 high 0 CPU-A Die 1 Offset
Key TC0P low 0 high 0 CPU VR Area
Key TC2C low 0 high 0 CPU-B Die 1 Offset
Key TCAH low 0 high 0 CPU-A Heatsink
Key TCBH low 0 high 0 CPU-B Heatsink
Key TH0P low 0 high 0 Hard Drive 1 Body
Key TH1P low 0 high 0 Hard Drive 2 Body
Key TH2P low 0 high 0 Hard Drive 3 Body
Key TH3P low 0 high 0 Hard Drive 4 Body
Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air
Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air
Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1
Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2
Key TM8S low 0 high 0 AMB IC on FBDIMM in Riser B Slot 1
Key TM9S low 0 high 0 AMB IC on FBDIMM in Riser B Slot 2
Key TM2P low 0 high 0 FBDIMM Riser A VR area
Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air
Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air
Key TMAP low 0 high 0 FBDIMM Riser B VR Area
Key TN0H low 0 high 0 MCH Heatsink
Key TS0C low 0 high 0 LM94, Between CPU-A and CPU-A's VR
Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1
Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2
Key VCAC low 0 high 0 CPU-A Core
Key VCBC low 0 high 0 CPU-B Core
Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail
Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail
Key VN0C low 0 high 0 MCH Core
Key VeES low 0 high 0 PCIe Slots +12V Rail
Key Vp0C low 0 high 0 PSMI Supply AC/DC output +12V Rail
Key F1Ac low 500 high 2900 Expansion Slots
Key F0Ac low 500 high 2900 CPU
Key F2Ac low 500 high 2900 Exhaust
Key F3Ac low 600 high 2800 Power Supply
Dumping MacPro1,1 from MacPro1_1
Name: Mac Pro (Early 2007)
Memory: 8 slots with 16384 MB total
Defaults: TCAH TCBH, temperature:
Key ICAC low 0 high 0 CPU-A Core
Key ICBC low 0 high 0 CPU-B Core
Key IMAS low 0 high 0 FBDIMM Riser A 12V Supply
Key IMBS low 0 high 0 FBDIMM Riser B 12V Supply
Key IN0C low 0 high 0 MCH Core - Supply Input
Key Ie1S low 0 high 0 PCIe Slot 1 +12V
Key Ie2S low 0 high 0 PCIe Slot 2 +12V
Key Ie3S low 0 high 0 PCIe Slot 3 +12V
Key Ie4S low 0 high 0 PCIe Slot 4 +12V
Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V
Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V
Key Ip0C low 0 high 0 PSMI Supply AC/DC Output, +12V Rail
Key TA0P low 0 high 0 Ambient Air
Key TC0C low 0 high 0 CPU-A Die 1 Offset
Key TC0P low 0 high 0 CPU VR Area
Key TC2C low 0 high 0 CPU-B Die 1 Offset
Key TCAH low 0 high 0 CPU-A Heatsink
Key TCBH low 0 high 0 CPU-B Heatsink
Key TH0P low 0 high 0 Hard Drive 1 Body
Key TH1P low 0 high 0 Hard Drive 2 Body
Key TH2P low 0 high 0 Hard Drive 3 Body
Key TH3P low 0 high 0 Hard Drive 4 Body
Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air
Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1
Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air
Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2
Key TM2P low 0 high 0 FBDIMM Riser A VR Area
Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air
Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air
Key TMAP low 0 high 0 FBDIMM Riser B VR Area
Key TN0H low 0 high 0 MCH Heatsink
Key TS0C low 0 high 0 LM94, between CPU-A and CPU-A's VR
Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1
Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2
Key VCAC low 0 high 0 CPU-A Core
Key VCBC low 0 high 0 CPU-B Core
Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail
Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail
Key VN0C low 0 high 0 MCH Core
Key VeES low 0 high 0 PCIe Slots +12V Rail
Key Vp0C low 0 high 0 PSMI Supply AC/DC Output, +12V rail
Key F1Ac low 500 high 2900 Expansion Slots
Key F0Ac low 500 high 2900 CPU
Key F2Ac low 500 high 2900 Exhaust
Key F3Ac low 600 high 2800 Power Supply
Dumping MacPro6,1 from MacPro6_1
Name: Mac Pro (Late 2013)
Memory: 4 slots with 65536 MB total
Defaults: TCXc, temperature: TCXc
Key IC0C low 0.1 high 90 CPU Core Lowside
Key IC0S low 0.01 high 25 CPU VSA Lowside
Key ICTR low 0.01 high 15 CPU Riser 12V Highside
Key IG0C low 0 high 90 GPU 1 - Core Lowside
Key IG0R low 0 high 15 GPU Riser 1 - 12V Highside
Key IG0S low 0 high 25 GPU 1 - VDDCI Lowside
Key IG1C low 0 high 90 GPU 2 - Core Lowside
Key IG1R low 0 high 15 GPU Riser 2 - 12V Highside
Key IG1S low 0 high 25 GPU 2 - VDDCI Lowside
Key IH0R low 0 high 2 SSD Lowside
Key II0R low 0.01 high 15 IO Board 12V Highside
Key IMTR low 0.01 high 5 Memory 12V Highside
Key TA0p low 5 high 50 Ambient 1
Key TA1p low 5 high 50 Ambient 2
Key TA2p low 5 high 50 Ambient 3
Key TC0p low 5 high 100 CPU Proximity
Key TC1p low 5 high 100 CPU VCC VR Proximity
Key TG0d low 5 high 95 GPU 1 - Die
Key TG0p low 5 high 100 GPU 1 - Local
Key TG0r low 5 high 100 GPU 1 - VR Proximity
Key TG1d low 5 high 95 GPU 2 - Die
Key TG1p low 5 high 100 GPU 2 - Local
Key TG1r low 5 high 100 GPU 2 - VR Proximity
Key TI0p low 5 high 100 I/O Board Proximity
Key TI1p low 5 high 100 5V/3.3V VR Proximity
Key TM0p low 5 high 100 DIMM 1 - Proximity
Key TM0r low 5 high 100 DIMM 1 - VR Proximity
Key TM1p low 5 high 100 DIMM 2 - Proximity
Key TM1r low 5 high 100 DIMM 2 - VR Proximity
Key TPCD low 5 high 90 Platform Controller Hub
Key Te0t low 5 high 100 PCIe Switch Diode
Key Tm0p low 5 high 100 Logic Board Proximity Local Board
Key Tp0t low 5 high 80 PSU Secondary Heatsink
Key VC0C low 0.65 high 1.35 CPU Core Lowside
Key VC0S low 0.6 high 1.2 CPU VSA Lowside
Key VCTR low 11.4 high 13.2 CPU Riser 12V Highside
Key VD2R low 11.4 high 13.2 ACDC 12V Lowside
Key VG0C low 0 high 1.15 GPU 1 - Core Lowside
Key VG0R low 11.4 high 13.2 GPU Riser 1 - 12V Highside
Key VG0S low 0 high 1.05 GPU 1 - VDDCI Lowside
Key VG1C low 0 high 1.15 GPU 2 - Core Lowside
Key VG1R low 11.4 high 13.2 GPU Riser 2 - 12V Highside
Key VG1S low 0 high 1.05 GPU 2 - VDDCI Lowside
Key VH0R low 3.15 high 3.45 SSD 3.3V Lowside
Key VI1R low 10.4 high 11.6 IO Board 11V Highside
Key F0Ac low 770 high 1900 Fan
Key PSTR low 0 high 0 Total
Key PCPC low 0 high 0 CPU Package Core
Key PCPT low 0 high 0 CPU Package Total
Key PGTR low 0 high 0 GPU Total
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TC3C low 0 high 0 CPU Core 3
Key TC4C low 0 high 0 CPU Core 4
Key TCXc low 0 high 0 CPU
Dumping MacBookPro14,2 from MacBookPro14_2
Name: MacBook Pro (13 inch, Retina & Touch Bar, Mid 2017)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: TCXC
Key I18C low 0 high 0 1.8V
Key IAPC low 0 high 0 Wireless
Key IB0L low 0 high 0 Battery Discrete
Key IBLR low 0 high 0 LCD Backlight
Key IBTC low 0 high 0 Bluetooth
Key ISCC low 0 high 0 Platform Controller Hub
Key ICAC low 0 high 0 CPU IA Core
Key ICMC low 0 high 0 Camera
Key ID0R low 0 high 0 DC In (AMON)
Key IHCC low 0 high 0 SSD 3.3V
Key IHNC low 0 high 0 SSD Memory
Key IKBC low 0 high 0 Keyboard Backlight
Key ILDC low 0 high 0 LCD
Key IM0C low 0 high 0 1.2V CPU/Memory
Key IM1C low 0 high 0 LPDDR 1.8V
Key IO3R low 0 high 0 Other 3.3V (High)
Key IO5R low 0 high 0 Other 5V (High)
Key IPBR low 0 high 0 Battery
Key IS1C low 0 high 0 Southbridge IO 1.0V
Key IT3C low 0 high 0 Trackpad and Keyboard 3.3V
Key ITAR low 0 high 0 Trackpad Actuator
Key IULC low 0 high 0 Thunderbolt Left
Key IURC low 0 high 0 Thunderbolt Right
Key PC0R low 0 high 0 PBUS CPU Highside
Key PCAC low 0 high 0 CPU Core
Key PCGC low 0 high 0 Intel GPU
Key PCSC low 0 high 0 CPU VCCSA Power
Key PPBR low 0 high 0 Battery Current
Key PS1C low 0 high 0 Southbridge IO 1.0V
Key PTAR low 0 high 0 Trackpad Actuator
Key TB1T low 0 high 0 Battery TS1
Key TB2T low 0 high 0 Battery TS2
Key TTLD low 0 high 0 Thunderbolt Die Left
Key TTRD low 0 high 0 Thunderbolt Die Right
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Digital Core 1
Key TC2C low 0 high 0 CPU Digital Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key TH0B low 0 high 0 SSD 1 Proximity
Key TH0C low 0 high 0 SSD 2 Proximity
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TW0P low 0 high 0 Airport Proximity
Key TaLC low 0 high 0 Airflow Left
Key TaRC low 0 high 0 Airflow Right
Key Th1H low 0 high 0 Fin Stack Proximity Right
Key Th2H low 0 high 0 Fin Stack Proximity Left
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Actuator
Key VCAC low 0 high 0 CPU IA Core
Key VCGC low 0 high 0 Intel GPU
Key VCSC low 0 high 0 CPU System Agent Core
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 P-Bus
Key VSCC low 0 high 0 Southbridge VCC
Key F0Ac low 1250 high 6336 Leftside
Key F1Ac low 1350 high 6864 Rightside
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro11,3 from MacBookPro11_3
Name: MacBook Pro (15 inch, Retina, Late 2013)
Memory: 2 slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0C low 0.1 high 20 CPU Core
Key IC0R low 0.1 high 3.5 CPU Highside
Key ID0R low 0.3 high 5 DC In
Key IG0R low 0 high 2 GeForce GPU (Core, FB, 1.0V)
Key IG1C low 0 high 5 GeForce GPU FB
Key IHDC low 0 high 1 SSD
Key IHSC low 0 high 0.3 Thunderbolt
Key IM0C low 0.01 high 1 Memory
Key IO3R low 0.01 high 0.5 Other 3.3V
Key IO5R low 0.1 high 1.1 Other 5V
Key IPBR low 0.1 high 3 Charger - BMON
Key Ta0P low 10 high 60 Air Flow Proximity
Key TB1T low 10 high 60 Battery Sensor 1
Key TB2T low 10 high 60 Battery Sensor 2
Key TC0P low 10 high 70 CPU Proximity
Key TC1C low 10 high 95 CPU Core 1
Key TC2C low 10 high 95 CPU Core 2
Key TC3C low 10 high 95 CPU Core 3
Key TC4C low 10 high 95 CPU Core 4
Key TCGC low 10 high 100 Intel GPU
Key TCSA low 10 high 100 CPU System Agent Core
Key TCXC low 10 high 95 CPU PECI Die
Key TM0P low 10 high 70 DDR3 Proximity
Key TG0D low 10 high 100 GeForce GPU Die - Analog
Key TG1D low 10 high 100 GeForce GPU Die - Digital
Key TG0P low 10 high 80 GeForce GPU Proximity
Key TH0A low 10 high 70 SSD A
Key TH0B low 10 high 70 SSD B
Key Th2H low 10 high 60 Left Fin Stack
Key Ts0P low 10 high 45 Palm Rest
Key TP0P low 10 high 75 Platform Controller Hub
Key TPCD low 10 high 80 Platform Controller Hub PECI
Key Th1H low 10 high 60 Right Fin Stack
Key TW0P low 10 high 70 X29 Proximity
Key VC0C low 1.6 high 1.95 CPU Vcore
Key VD0R low 18 high 21 DC In
Key VG0C low 0.7 high 1.15 GeForce GPU Vcore
Key VG1C low 0.7 high 1.8 GeForce GPU FB
Key VP0R low 10 high 13.5 PBus
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2160 high 6156 Leftside
Key F1Ac low 2000 high 5700 Rightside
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro11,5 from MacBookPro11_5
Name: MacBook Pro (15 inch, Retina, Mid 2015)
Memory: 2 slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0C low 0 high 0 CPU High (CPU, I/O)
Key ID0R low 0 high 0 DC In
Key IHDC low 0 high 0 SSD
Key IPBR low 0 high 0 Charger (BMON)
Key IC0R low 0 high 0 CPU
Key IO3R low 0 high 0 Other 3.3V
Key IO5R low 0 high 0 Other 5V
Key IG0R low 0 high 0 Intel GPU
Key IG0C low 0 high 0 Radeon GPU Core
Key IG2C low 0 high 0 Radeon GPU VDDCI
Key IM0C low 0 high 0 Memory
Key IC1C low 0 high 0 Platform Controller Hub Core
Key IBLC low 0 high 0 LCD Backlight
Key IHSC low 0 high 0 Thunderbolt
Key ITPC low 0 high 0 Trackpad Actuator
Key TC0P low 0 high 0 CPU Proximity
Key TP0P low 0 high 0 Platform Controller Hub
Key TM0P low 0 high 0 Memory Proximity
Key Ta0P low 0 high 0 Air Flow Proximity
Key Th2H low 0 high 0 Left Fin Stack
Key Th1H low 0 high 0 Right Fin Stack
Key TG0P low 0 high 0 Radeon GPU Proximity
Key TG0D low 0 high 0 Radeon GPU
Key TW0P low 0 high 0 Airport Proximity
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Palm Rest Actuator
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TH0A low 0 high 0 SSD A
Key TH0B low 0 high 0 SSD B
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TC3C low 0 high 0 CPU Core 3
Key TC4C low 0 high 0 CPU Core 4
Key TCXC low 0 high 0 CPU PECI Die
Key TCGC low 0 high 0 Intel GPU
Key TPCD low 0 high 0 Platform Controller Hub PECI
Key TCSA low 0 high 0 CPU System Agent Core
Key VC0C low 0 high 0 CPU VCore
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 Pbus
Key VG0C low 0 high 0 Radeon GPU Core
Key VG1C low 0 high 0 Radeon GPU FB
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2160 high 6156 Leftside
Key F1Ac low 2000 high 5700 Rightside
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro15,2 from MacBookPro15_2
Name: MacBook Pro (13 inch, Retina & Touch Bar, Mid 2018)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: TCXC
Key IAPC low 0 high 0 Wireless
Key ICAC low 0 high 0 CPU IA Core
Key ID0R low 0 high 0 DC In (AMON)
Key IPBR low 0 high 0 Battery
Key PC0R low 0 high 0 PBUS CPU Highside
Key PCAC low 0 high 0 CPU Core
Key PCGC low 0 high 0 Intel GPU
Key PCSC low 0 high 0 CPU VCCSA Power
Key PPBR low 0 high 0 Battery Current
Key PS1C low 0 high 0 Southbridge IO 1.0V
Key TB1T low 0 high 0 Battery TS1
Key TB2T low 0 high 0 Battery TS2
Key TTLD low 0 high 0 Thunderbolt Die Left
Key TTRD low 0 high 0 Thunderbolt Die Right
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Digital Core 1
Key TC2C low 0 high 0 CPU Digital Core 2
Key TC3C low 0 high 0 CPU Digital Core 3
Key TC4C low 0 high 0 CPU Digital Core 4
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key TH0B low 0 high 0 SSD Proximity
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TW0P low 0 high 0 Airport Proximity
Key TaLC low 0 high 0 Airflow Left
Key TaRC low 0 high 0 Airflow Right
Key Th1H low 0 high 0 Fin Stack Proximity Right
Key Th2H low 0 high 0 Fin Stack Proximity Left
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Actuator
Key VCAC low 0 high 0 CPU IA Core
Key VCGC low 0 high 0 Intel GPU
Key VCSC low 0 high 0 CPU System Agent Core
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 P-Bus
Key F0Ac low 1250 high 6336 Leftside
Key F1Ac low 1350 high 6864 Rightside
Key PCPC low 0 high 0 CPU Package Core
Key PCPG low 0 high 0 CPU Package GPU
Key PCPT low 0 high 0 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBookPro13,3 from MacBookPro13_3
Name: MacBook Pro (15 inch, Retina & Touch Bar, Late 2016)
Memory: soldered slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0R low 0 high 0 CPU Computing Highside
Key IPBR low 0 high 0 Battery PBus
Key ID0R low 0 high 0 DC In
Key ICTC low 0 high 0 Intel GPU
Key IHDC low 0 high 0 SSD
Key ICTM low 0 high 0 Intel GPU (IMON)
Key IULC low 0 high 0 Left Thunderbolt
Key IURC low 0 high 0 Right Thunderbolt
Key IAPC low 0 high 0 Wireless
Key IAPC low 0 high 0 Radeon GPU Core
Key IG1C low 0 high 0 Radeon GPU Frame Buffer
Key IG2C low 0 high 0 Radeon GPU VDDCI
Key IG3C low 0 high 0 Radeon GPU 1.8V
Key IG4C low 0 high 0 Radeon GPU Frame Buffer IC
Key IG0R low 0 high 0 Radeon GPU High Side
Key ICMC low 0 high 0 Camera
Key IBTC low 0 high 0 Bluetooth
Key PC0R low 0 high 0 CPU Computing Highside
Key PCGC low 0 high 0 Intel GPU
Key PCGM low 0 high 0 Intel GPU (IMON)
Key PPBR low 0 high 0 Battery (BMON)
Key PG0R low 0 high 0 Radeon GPU Highside
Key Ts0P low 0 high 0 Palm Rest
Key Ts1P low 0 high 0 Palm Rest 2
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TC1C low 0 high 0 CPU Digital Core 1
Key TC2C low 0 high 0 CPU Digital Core 2
Key TC3C low 0 high 0 CPU Digital Core 3
Key TC4C low 0 high 0 CPU Digital Core 4
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Die (PECI)
Key TG0D low 0 high 0 Radeon GPU
Key TaLC low 0 high 0 Airflow Left Side
Key TTLD low 0 high 0 Left Thunderbolt Proximity
Key Th1H low 0 high 0 Fin Stack Right
Key Th2H low 0 high 0 Fin Stack Left
Key TM0P low 0 high 0 Memory Proximity
Key TC0P low 0 high 0 CPU Proximity
Key TG0P low 0 high 0 Radeon GPU Proximity
Key TW0P low 0 high 0 Airport
Key TaRC low 0 high 0 Airflow Right Side
Key TTRD low 0 high 0 Right Thunderbolt Proximity
Key TH0A low 0 high 0 SSD Proximity
Key TH0B low 0 high 0 NAND Proximity 1
Key TH0C low 0 high 0 NAND Proximity 2
Key TGVP low 0 high 0 Radeon GPU VRAM
Key VG2C low 0 high 0 Radeon GPU VDDCI
Key VP0R low 0 high 0 PBus
Key VD0R low 0 high 0 DC In
Key VCSC low 0 high 0 CPU SA
Key VCAC low 0 high 0 CPU IA Core
Key VCTC low 0 high 0 Intel GPU
Key VCTC low 0 high 0 Radeon GPU Core
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 2160 high 5297 Leftside
Key F1Ac low 2000 high 5489 Rightside
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
Dumping MacBook10,1 from MacBook10_1
Name: MacBook (12 inch, Mid 2017)
Memory: soldered slots with 16384 MB total
Defaults: TCXC, temperature: CUS1
Key IC0R low 0 high 0 CPU Computing High Side
Key ID0R low 0 high 0 DC In
Key IPBR low 0 high 0 PBus
Key PC0R low 0 high 0 CPU Computing High Side
Key PCPC low 0 high 0 CPU Core
Key PCPG low 0 high 0 Intel GPU
Key PCPT low 0 high 0 CPU Package
Key PD0R low 0 high 0 DC In
Key PPBR low 0 high 0 PBus
Key PSTR low 0 high 0 Total Power
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery TS1
Key TB2T low 0 high 0 Battery TS2
Key TC0F low 0 high 0 CPU PECI Die
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCHP low 0 high 0 Charger Proximity
Key TCSA low 0 high 0 CPU System Agent Core
Key TCXC low 0 high 0 CPU Core PECI
Key TM0P low 0 high 0 Memory Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TW0P low 0 high 0 Wireless Proximity
Key Th0N low 0 high 0 SSD
Key Ts0P low 0 high 0 Trackpad
Key Ts1P low 0 high 0 Trackpad Actuator
Key VC0C low 0 high 0 CPU Core
Key VCGC low 0 high 0 Intel GPU
Key VD0R low 0 high 0 DC In
Key VP0R low 0 high 0 PBus
Key CUS1 low (null) high (null) CPU Cores
Dumping MacBookPro13,1 from MacBookPro13_1
Name: MacBook Pro (13 inch, Retina, Late 2016)
Memory: soldered slots with 16384 MB total
Defaults: TC0P, temperature: CUS1
Key ALSL low 0 high 0 Ambient Light
Key IC0R low 0 high 0 PBUS CPU,GPU,DRAM,V1.0,VccPC
Key ID0R low 0 high 0 USBC/MPM Input (AMON)
Key IHCC low 0 high 0 3.3V S5 SSD
Key IHNC low 0 high 0 PBUS NAND
Key IPBR low 0 high 0 Battery
Key PC0R low 0 high 0 CPU Computing Highside
Key PCPC low 0 high 33 CPU Package Core (PECI)
Key PCPG low 0 high 22 CPU Package GPU (PECI)
Key PCPT low 0 high 55 CPU Package Total (PECI)
Key PD0R low 0 high 0 DC In
Key PHCC low 0 high 0 SSD 3.3V
Key PHNC low 0 high 0 SSD NAND
Key PPBR low 0 high 0 Battery (BMON)
Key PSTR low 0 high 0 System Total
Key Ta0P low 0 high 0 Ambient Air
Key TB0T low 0 high 0 Battery
Key TB1T low 0 high 0 Battery Sensor 1
Key TB2T low 0 high 0 Battery Sensor 2
Key TC0F low 0 high 0 CPU Die (PECI)
Key TC0P low 0 high 0 CPU Proximity
Key TC1C low 0 high 0 CPU Core 1
Key TC2C low 0 high 0 CPU Core 2
Key TCGC low 0 high 0 Intel GPU
Key TCSA low 0 high 0 CPU System Agent Core (PECI)
Key TCXC low 0 high 0 CPU Core (PECI)
Key Th1H low 0 high 0 Right Fin Stack
Key TI0P low 0 high 0 IO Proximity
Key TM0P low 0 high 0 DDR3 Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key Ts0P low 0 high 0 Trackpad
Key Ts0S low 0 high 0 Bottom Skin
Key TaLC low 0 high 0 Air Flow
Key Ts1P low 0 high 0 Trackpad Actuator
Key VCAC low 0 high 0 CPU IA
Key VCGC low 0 high 0 CPU GT
Key VD0R low 0 high 0 USB/MPM Input
Key VP0R low 0 high 0 PBus
Key F0Ac low 1200 high 7200 Fan
Key CUS1 low (null) high (null) CPU Cores
Dumping iMac17,1 from iMac17_1
Name: iMac with Retina 5K Display (27 inch, Late 2015)
Memory: 4 slots with 65536 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU Package
Key PSTR low 0 high 0 Total Power
Key PCPR low 0 high 0 CPU Package
Key TC0p low 0 high 0 CPU Proximity Board
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key TI0p low 0 high 0 Thunderbolt Die
Key Tb0p low 0 high 0 BLC Proximity Board
Key Tm0p low 0 high 0 Logic Board PSU Local Board
Key Tm2p low 0 high 0 CPU Backside
Key TG0d low 0 high 0 GPU Die
Key TG0p low 0 high 0 GPU Proximity
Key TM0p low 0 high 0 SO-DIMM 1 Proximity Board
Key TM1p low 0 high 0 SO-DIMM 2 Proximity Board
Key TM2p low 0 high 0 SO-DIMM 3 Proximity Board
Key TM3p low 0 high 0 SO-DIMM 4 Proximity Board
Key Tm1p low 0 high 0 Logic Board GPU Local Board
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key TCGc low 0 high 0 Intel GPU
Key TS0V low 0 high 0 Skin
Key VG0F low 0 high 0 GPU FB
Key VG1C low 0 high 0 GPU Core High Side
Key VG0C low 0 high 0 GPU Core
Key VC0M low 0 high 0 CPU MEM 1.5V
Key VD2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM 1.5 S3
Key VC0C low 0 high 0 CPU Core
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key VH05 low 0 high 0 HDD 5V
Key VR1R low 0 high 0 1.05V S0
Key VH1R low 0 high 0 SSD Load Side
Key ID2R low 0 high 0 AC/DC 12V G3H
Key IM0R low 0 high 0 DIMM 1.5 S3
Key IC0C low 0 high 0 CPU Core
Key IH1R low 0 high 0 SSD 3.3V
Key IG0C low 0 high 0 GPU Core Low Side
Key IG1C low 0 high 0 GPU Core High Side
Key IG1F low 0 high 0 GPU Frame Buffer
Key IH05 low 0 high 0 HDD 5V
Key IH02 low 0 high 0 HDD 12V
Key IC20 low 0 high 0 CPU Core, GT, SA, IO
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 2850 Fan
Key PSTR low 0 high 0 Total
Dumping iMac14,4 from iMac14_4
Name: iMac (21 inch, Mid 2014)
Memory: soldered slots with 8192 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PC0C low 0 high 0 CPU Core
Key PCPR low 0 high 0 CPU Package Total
Key TG0d low 0 high 0 GPU Die
Key TG0p low 0 high 0 GPU Proximity
Key TC0p low 0 high 0 CPU Proximity
Key TI0p low 0 high 0 Thunderbolt Die
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key Tb0p low 0 high 0 BLC Proximity
Key TM0p low 0 high 0 SO-DIMM 1
Key TM1p low 0 high 0 SO-DIMM 2
Key TM2p low 0 high 0 SO-DIMM 3
Key TM3p low 0 high 0 SO-DIMM 4
Key Tm0p low 0 high 0 Logic Board PSU
Key Tm1p low 0 high 0 Logic Board GPU
Key Tm2p low 0 high 0 CPU Backside
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key TH1R low 0 high 0 SSD
Key VC0C low 0 high 0 CPU Core
Key VC0M low 0 high 0 CPU MEM 1.5V
Key VG0C low 0 high 0 GPU Core
Key VG1C low 0 high 0 GPU Core High Side
Key VG0F low 0 high 0 GPU FB
Key VM0R low 0 high 0 DIMM 1.5V S3
Key VH05 low 0 high 0 HDD 5V
Key VR1R low 0 high 0 1.05V S0
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key VD2R low 0 high 0 AC/DC 12V G3H
Key IC0C low 0 high 0 CPU Core
Key IC0M low 0 high 0 CPU MEM 1.5V
Key IG0C low 0 high 0 GPU Core Low Side
Key IG1C low 0 high 0 GPU Core High Side
Key IG0F low 0 high 0 GPU FB 1.5V High Side
Key IM0R low 0 high 0 DIMM 1.5V S3
Key IH05 low 0 high 0 HDD 5V
Key IH02 low 0 high 0 HDD 12V
Key IH1R low 0 high 0 SSD 3.3V
Key ID2R low 0 high 0 AC/DC 12V G3H
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1400 high 2800 Fan
Key PSTR low 0 high 0 Total
Dumping iMac14,3 from iMac14_3
Name: iMac (21 inch, Late 2013)
Memory: soldered slots with 8192 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key IC0C low 0.001 high 95 CPU Core
Key IC0M low 0 high 2.2 CPU 1.35 S0
Key ID2R low 0 high 17.1 AC/DC
Key IM0R low 0 high 12 DIMM 1.5 S3
Key TA0p low 5 high 100 Ambient Logic Board
Key TC0p low 5 high 100 CPU Proximity
Key TL0p low 5 high 100 LCD
Key TL1p low 5 high 100 Timing Controller
Key TM0p low 5 high 100 SO-DIMM Proximity
Key TPCD low 15 high 105 Platform Controller Hub
Key Tb0p low 5 high 100 BLC Proximity
Key Tm0p low 5 high 100 Logic Board DIMM Local Board
Key Tm1p low 5 high 100 Logic Board Proximity (CPU)
Key Tm2p low 5 high 100 Logic Board Proximity
Key Tp2h low 5 high 120 AC/DC T2 (Secondary Heatsink)
Key VC0C low 1.425 high 1.953 CPU Core
Key VC0M low 1.2825 high 1.4175 CPU 1.35V S0
Key VD2R low 10.8 high 13.2 AC/DC
Key VM0R low 1.2825 high 1.4175 DIMM 1.5V S3
Key VR1R low 1 high 1.1 1.05V S0
Key VR3R low 3.135 high 3.465 Logic Board 3.3V S5
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1400 high 2800 Fan
Key PSTR low 0 high 0 Total
Dumping iMac9,1 from iMac9_1
Name: iMac (20 inch, Early 2009)
Memory: 2 slots with 8192 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key IC0C low 0 high 0 CPU VCore
Key TA0P low 0 high 0 Incoming Air
Key TN0H low 0 high 0 Northbridge Heatsink
Key TN0D low 0 high 0 Northbridge Die
Key TN0P low 0 high 0 Northbridge Proximity
Key TH0P low 0 high 0 Hard Drive Proximity
Key TO0P low 0 high 0 Optical Drive Proximity
Key TC0H low 0 high 0 CPU Heatsink
Key TC0D low 0 high 0 CPU T-Diode
Key TC0P low 0 high 0 CPU Proximity
Key Tm0P low 0 high 0 Logic Board Proximity
Key TL0P low 0 high 0 LCD Proximity
Key Tp0P low 0 high 0 AC/DC Proximity
Key VC0C low 0 high 0 CPU Core
Key PC0C low 0 high 0 CPU Core
Key F2Ac low 1200 high 3600 CPU
Key F1Ac low 1600 high 5900 Hard Drive
Key F0Ac low 800 high 4800 Optical Drive
Dumping iMac8,1 from iMac8_1
Name: iMac (20 inch, Early 2008)
Memory: 2 slots with 4096 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key IC0C low 0 high 0 CPU Core
Key ID0R low 0 high 0 12V S0
Key ID5R low 0 high 0 12V S5
Key IG0R low 0 high 0 MXM
Key PC0C low 0 high 0 CPU Core
Key TA0P low 0 high 0 Ambient Air
Key TC0D low 0 high 0 CPU Die
Key TC0H low 0 high 0 CPU Heatsink
Key TC0P low 0 high 0 CPU Proximity
Key TG0D low 0 high 0 GPU Die
Key TG0H low 0 high 0 GPU Heatsink
Key TG0P low 0 high 0 GPU Proximity
Key TH0P low 0 high 0 Hard Drive Body
Key TL0P low 0 high 0 LCD Proximity
Key TO0P low 0 high 0 Optical Drive
Key Tm0P low 0 high 0 Misc
Key Tp0P low 0 high 0 AC/DC Supply
Key VC0C low 0 high 0 CPU V-Sense
Key VD0R low 0 high 0 12V S0
Key VD5R low 0 high 0 12V S5
Key F2Ac low 1200 high 3600 CPU
Key F1Ac low 1200 high 5900 Hard Drive
Key F0Ac low 700 high 4800 Optical Drive
Dumping iMac14,2 from iMac14_2
Name: iMac (27 inch, Late 2013)
Memory: 4 slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key IC0C low 0.001 high 95 CPU Core
Key IC0M low 0.01 high 4.75 CPU MEM 1.5V
Key ID2R low 0.01 high 25 AC/DC 12V
Key IG0C low 0.01 high 105 GPU Core Low Side
Key IG0F low 0.01 high 3.1 GPU Frame buffer 1.5V High Side
Key IG1C low 0.01 high 12.5 GPU Core High Side
Key IH02 low 0 high 2 HDD 12V
Key IH05 low 0 high 1.2 HDD 5V
Key IM0R low 0.01 high 12 DIMM 1.5 S3
Key TA0p low 5 high 100 Logic Board Ambient
Key TC0p low 5 high 100 CPU Proximity
Key TG0d low 15 high 105 GPU Die
Key TG0p low 5 high 100 GPU Proximity
Key TL0p low 5 high 80 LCD Flying Lead
Key TL1p low 5 high 100 Timing Controller
Key TM0p low 5 high 100 SO-DIMM 1 Proximity Board
Key TM1p low 5 high 100 SO-DIMM 2 Proximity Board
Key TM2p low 5 high 100 SO-DIMM 3 Proximity Board
Key TM3p low 5 high 100 SO-DIMM 4 Proximity Board
Key TPCD low 15 high 105 Platform Controller Hub
Key Tb0p low 5 high 100 BLC Proximity Board
Key Tm0p low 5 high 100 Logic Board PSU Local Board
Key Tm1p low 5 high 100 Logic Board GPU Local Board
Key Tm2p low 5 high 100 CPU backside
Key Tp2h low 5 high 120 AC/DC T2 Sec heatsink
Key VC0C low 0.25 high 2.05 CPU Core
Key VC0M low 1.425 high 1.575 CPU MEM 1.5V
Key VD2R low 10.8 high 13.2 AC/DC 12V
Key VG0C low 0.65 high 1.2 GPU Core
Key VG0F low 11.4 high 12.6 GPU FB
Key VG1C low 11.4 high 12.6 GPU Core High Side
Key VH05 low 4.75 high 5.25 3.5 HDD 5V
Key VM0R low 1.425 high 1.575 DIMM 1.5V S3
Key VR1R low 1 high 1.1 1.05V S0
Key VR3R low 3.15 high 3.45 Voltage Regulator 3.3V
Key ALSL low 0 high 0 Ambient Light
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1199 high 2639 Fan
Key PSTR low 0 high 0 Total
Dumping iMac7,1 from iMac7_1
Name: iMac (20 inch, Mid 2007)
Memory: 2 slots with 4096 MB total
Defaults: TC0H, temperature:, hidden IGPU
Key TA0P low 0 high 0 Ambient Air
Key Tm0P low 0 high 0 Misc
Key TG0D low 0 high 0 GPU Die
Key Tp0P low 0 high 0 AC/DC Supply
Key TG0P low 0 high 0 GPU Proximity
Key TG0H low 0 high 0 GPU Heatsink
Key TW0P low 0 high 0 Airport Card
Key TC0H low 0 high 0 CPU Heatsink
Key TL0P low 0 high 0 LCD Proximity
Key TO0P low 0 high 0 Optical Drive
Key TH0P low 0 high 0 Hard Drive Body
Key IC0C low 0 high 0 CPU
Key IG0C low 0 high 0 GPU
Key VG0C low 0 high 0 GPU
Key VC0C low 0 high 0 CPU
Key PC0C low 0 high 0 CPU
Key F2Ac low 1200 high 3500 CPU
Key F1Ac low 1200 high 5500 Hard Drive
Key F0Ac low 700 high 4400 Optical Drive
Dumping iMac6,1 from iMac6_1
Name: iMac (24 inch, Late 2006)
Memory: 2 slots with 4096 MB total
Defaults: TC0H, temperature: TC0D, hidden IGPU
Key TA0P low 0 high 0 Ambient Air
Key Tm0P low 0 high 0 Misc
Key TG0D low 0 high 0 GPU Die
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TO0P low 0 high 0 Optical Drive
Key TH0P low 0 high 0 Hard Drive Body
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IG0C low 0 high 0 GPU
Key VD0R low 0 high 0 DC In
Key VG0C low 0 high 0 GPU
Key VC0C low 0 high 0 CPU
Key PC0C low 0 high 0 CPU
Key PD0R low 0 high 0 DC In
Key PG0C low 0 high 0 CPU
Key Tp0P low 0 high 0 AC/DC Supply
Key TG0P low 0 high 0 GPU Proximity
Key TG0H low 0 high 0 GPU Heatsink
Key TC0H low 0 high 0 CPU Heatsink
Key CPU_MEM low 0 high 0 CPU_MEM
Key HDD low 0 high 0 HDD
Key ODD low 0 high 0 ODD
Dumping iMac5,2 from iMac5_2
Name: iMac (17 inch, Late 2006)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key TA0P low 0 high 0 Ambient Air
Key Tm0P low 0 high 0 Misc
Key TG0D low 0 high 0 GPU Die
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TO0P low 0 high 0 Optical Drive
Key TH0P low 0 high 0 Hard Drive Body
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IG0C low 0 high 0 GPU
Key VD0R low 0 high 0 DC In
Key VG0C low 0 high 0 GPU
Key VC0C low 0 high 0 CPU
Key PC0C low 0 high 0 CPU
Key PD0R low 0 high 0 DC In
Key PG0C low 0 high 0 CPU
Key CPU_MEM low 0 high 0 CPU_MEM
Key HDD low 0 high 0 HDD
Key ODD low 0 high 0 ODD
Dumping iMac5,1 from iMac5_1
Name: iMac (17 inch, Late 2006)
Memory: 2 slots with 3072 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key TA0P low 0 high 0 Ambient Air
Key Tm0P low 0 high 0 Misc
Key TG0D low 0 high 0 GPU Die
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU Proximity
Key TO0P low 0 high 0 Optical Drive
Key TH0P low 0 high 0 Hard Drive Body
Key IC0C low 0 high 0 CPU
Key ID0R low 0 high 0 DC In
Key IG0C low 0 high 0 GPU
Key VD0R low 0 high 0 DC In
Key VG0C low 0 high 0 GPU
Key VC0C low 0 high 0 CPU
Key PC0C low 0 high 0 CPU
Key PD0R low 0 high 0 DC In
Key PG0C low 0 high 0 CPU
Key CPU_MEM low 0 high 0 CPU_MEM
Key HDD low 0 high 0 HDD
Key ODD low 0 high 0 ODD
Dumping iMac4,1 from iMac4_1
Name: iMac (17 inch)
Memory: 2 slots with 2048 MB total
Defaults: TC0D, temperature: TC0D, hidden IGPU
Key IC0C low 0 high 0 CPU I-Sense
Key ID0R low 0 high 0 DC I-Sense
Key IG0C low 0 high 0 GPU I-Sense
Key PC0C low 0 high 0 CPU Core
Key PD0R low 0 high 0 DC In Rail
Key PG0C low 0 high 0 GPU Core
Key TA0P low 0 high 0 Ambient Air
Key TC0D low 0 high 0 CPU Die
Key TC0P low 0 high 0 CPU VR Area
Key TG0D low 0 high 0 GPU Die
Key TH0P low 0 high 0 Hard Drive Body
Key TO0P low 0 high 0 Optical Drive
Key Tm0P low 0 high 0 Misc
Key VC0C low 0 high 0 CPU V-Sense
Key VD0R low 0 high 0 DC V-Sense
Key VG0C low 0 high 0 GPU V-Sense
Key CPU_MEM low 0 high 0 CPU/MEM
Key HDD low 0 high 0 Hard Drive
Key ODD low 0 high 0 Optical Drive
Dumping iMac13,2 from iMac13_2
Name: iMac (27 inch, Late 2012)
Memory: 4 slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key ALSL low 0 high 0 Ambient Light
Key IC0C low 0.001 high 112 CPU Core
Key IC0G low 0 high 35 Intel GPU
Key IC0I low 0.001 high 0.9 CPU I/O High Side
Key IC0M low 0.01 high 4.75 CPU Memory 1.5V
Key IC0S low 0.01 high 0.9 CPU System Agent High Side
Key ID2R low 0.01 high 25 AC/DC 12V
Key IG0C low 0.01 high 90 GPU Core Low Side
Key IG0F low 0.01 high 3.1 GPU Frame Buffer 1.5V High Side
Key IH02 low 0 high 0.8 HDD 12V
Key IH05 low 0 high 1.2 HDD 5V
Key IH1R low 0 high 3 SSD 3.3V
Key IM0R low 0.01 high 12 DIMM 1.5V S3
Key IN1R low 0.1 high 4.4 Platform Controller Hub 1.05V
Key IR1R low 0.01 high 0.8 PCH/GPU/TBT 1.05V High Side
Key TA0p low 5 high 100 Logic Board Ambient
Key TC0p low 5 high 100 CPU Proximity
Key TG0d low 15 high 105 GPU Die
Key TG0p low 5 high 100 GPU Proximity
Key TL0p low 5 high 80 LCD Flying Lead
Key TL1p low 5 high 100 Timing Controller
Key TM0p low 5 high 100 SO-DIMM 1 Proximity
Key TM1p low 5 high 100 SO-DIMM 2 Proximity
Key TM2p low 5 high 100 SO-DIMM 3 Proximity
Key TM3p low 5 high 100 SO-DIMM 4 Proximity
Key TPCD low 15 high 105 Platform Controller Hub
Key Tb0p low 5 high 100 BLC Proximity
Key Tm0p low 5 high 100 Logic Board PSU Local Board
Key Tm1p low 5 high 100 Logic Board GPU Local Board
Key Tp2h low 5 high 120 AC/DC T2 Sec Heatsink
Key VC0C low 0.25 high 1.52 CPU Core
Key VC0G low 0.25 high 1.52 Intel GPU
Key VC0M low 1.425 high 1.575 CPU Memory 1.5V
Key VD2R low 10.8 high 13.2 AC/DC 12V
Key VG0C low 0.65 high 1.2 CPU Core
Key VH05 low 4.75 high 5.25 HDD 5V
Key VM0R low 1.425 high 1.575 DIMM 1.5V S3
Key VN1R low 1 high 1.1 PCH 1.05V
Key VR3R low 3.15 high 3.45 Voltage Regulator 3.3V
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1200 high 2640 Fan
Key PSTR low 0 high 0 Total
Dumping iMac13,1 from iMac13_1
Name: iMac (21 inch, Late 2012)
Memory: 4 slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key TA0p low 5 high 100 Ambient Logic Board
Key TC0p low 5 high 100 CPU Proximity
Key TG0d low 10 high 105 GPU Die
Key TG0p low 5 high 100 GPU Proximity
Key TL0p low 5 high 100 LCD
Key TL1p low 5 high 100 Timing Controller
Key TM0p low 5 high 100 SO-DIMM Proximity
Key TPCD low 35 high 105 Platform Controller Hub
Key Tb0p low 5 high 100 BLC Proximity
Key Tm0p low 5 high 100 Logic Board proximity
Key Tp2h low 5 high 120 Power Supply Heatsink
Key VC0C low 0.2 high 1.35 CPU Core
Key VC0G low 0 high 1.35 Intel GPU
Key VD2R low 10.8 high 13.2 AC/DC
Key VG0C low 10.8 high 13.2 GPU Core
Key VM0R low 1.425 high 1.575 DIMM 1.5V S3
Key IC0C low 0.001 high 75 CPU Core
Key IC0G low 0 high 35 Intel GPU
Key ID2R low 0 high 17.1 AC/DC
Key IG0C low 0 high 2.5 GPU Core
Key IM0R low 0 high 12 DIMM 1.5V S3
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1399 high 2799 Fan
Key PSTR low 0 high 0 Total
Dumping iMac12,2 from iMac12_2
Name: iMac (27 inch, Mid 2011)
Memory: 4 slots with 16384 MB total
Defaults: TC0H, temperature: CUS1, hidden IGPU
Key IC0C low 0.05 high 90 CPU Core
Key IC0G low 0 high 10 GPU Core
Key IC5R low 0.01 high 5 CPU 1.5V S0
Key ICSR low 0.05 high 10 CPU System Agent
Key ICVR low 0.1 high 25 CPU System Agent
Key IDS2 low 0 high 0 AC/DC
Key IG0R low 0.1 high 6.4 MXM
Key IN1R low 0.1 high 5 PCH 1.05V S0
Key IV1R low 0.01 high 10 1.05V S0
Key PDS2 low 0 high 0 AC/DC
Key TA0P low 4.5 high 40.3 Incoming Air
Key TC0H low 5 high 80 CPU Heatsink
Key TC0p low 4 high 80 CPU Proximity
Key TG0D low 10 high 100 GPU Die
Key TG0H low 10 high 100 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 5 high 80 LCD Proximity
Key Tm0P low 5 high 100 Logic Board Proximity
Key TO0P low 5 high 56 Optical Drive Proximity
Key Tp1P low 5 high 96 Power Board Proximity
Key Tp2H low 5 high 114 Power Secondary Heatsink
Key Tp3H low 5 high 89 Power Primary Heatsink
Key TPCD low 5 high 110 Platform Controller Hub
Key TS0p low 5 high 60 Skin Upper Right
Key TS2p low 5 high 60 Skin Upper Left
Key VC0C low 0.65 high 1.4 CPU Core
Key VC0G low 0.025 high 1.2 GPU Core
Key VC5R low 1.42 high 1.58 CPU 1.5V S0
Key VCVR low 1.02 high 1.16 CPU System Agent
Key VD2R low 10.8 high 13.2 PS 12V S0
Key VDSR low 0 high 0 AC/DC Shunt
Key VG0R low 11.2 high 12.6 MXM
Key VN1R low 1.02 high 1.16 PCH 1.05V S0
Key VV1R low 1.02 high 1.16 1.05V S0
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F2Ac low 940 high 2600 CPU
Key F1Ac low 1100 high 5500 Hard Drive
Key F0Ac low 1150 high 2700 Optical Drive
Dumping iMac12,1 from iMac12_1
Name: iMac (21.5 inch, Mid 2011)
Memory: 4 slots with 16384 MB total
Defaults: TC0H, temperature: CUS1, hidden IGPU
Key IC0C low 0.05 high 60 CPU Core
Key IC0G low 0 high 10 GPU Core
Key IC5R low 0.01 high 5 CPU 1.5V S0
Key ICSR low 0.05 high 10 CPU System Agent
Key ICVR low 0.1 high 25 CPU System Agent
Key IDS2 low 0 high 0 AC/DC
Key IG0R low 0.1 high 6.4 MXM
Key IN1R low 0.1 high 5 PCH 1.05V S0
Key IV1R low 0.01 high 10 1.05V S0
Key PDS2 low 0 high 0 AC/DC
Key TA0P low 4.5 high 45.3 Incoming Air
Key TC0H low 5 high 80 CPU Heatsink
Key TC0p low 4 high 80 CPU Proximity
Key TG0D low 10 high 100 GPU Die
Key TG0H low 10 high 100 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 5 high 80 LCD Proximity
Key Tm0P low 5 high 100 Logic Board Proximity
Key TO0P low 5 high 56 Optical Drive Proximity
Key Tp1P low 5 high 96 Power Board Proximity
Key Tp2H low 5 high 114 Power Secondary Heatsink
Key Tp3H low 5 high 89 Power Primary Heatsink
Key TPCD low 5 high 110 Platform Controller Hub
Key TS0p low 5 high 60 Skin Upper Right
Key TS2p low 5 high 60 Skin Upper Left
Key VC0C low 0.65 high 1.4 CPU Core
Key VC0G low 0.025 high 1.2 GPU Core
Key VC5R low 1.42 high 1.58 CPU 1.5V S0
Key VCVR low 1.02 high 1.16 CPU System Agent
Key VD2R low 10.8 high 13.2 PS 12V S0
Key VDSR low 0 high 0 AC/DC Shunt
Key VG0R low 11.2 high 12.6 MXM
Key VN1R low 1.02 high 1.16 PCH 1.05V S0
Key VV1R low 1.02 high 1.16 1.05V S0
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F2Ac low 1200 high 4000 CPU
Key F1Ac low 1100 high 6300 Hard Drive
Key F0Ac low 1000 high 4350 Optical Drive
Dumping iMac11,3 from iMac11_3
Name: iMac (27 inch, Mid 2010)
Memory: 4 slots with 16384 MB total
Defaults: TC0H, temperature: TC0C, hidden IGPU
Key IC0C low 0 high 0 CPU Core
Key ICVR low 0 high 0 CPU VTT
Key IDSR low 0 high 0 AC/DC
Key IG0R low 0 high 0 MXM
Key PDSR low 0 high 0 AC/DC
Key TA0P low 0 high 0 Incoming Air
Key TC0C low 0 high 0 PECI
Key TC0H low 0 high 0 CPU Heatsink
Key TG0D low 0 high 0 GPU Die
Key TG0H low 0 high 0 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 0 high 0 LCD Proximity
Key Tm0P low 0 high 0 Logic Board Proximity
Key Tm1P low 0 high 0 Logic Board Proximity
Key TN0H low 0 high 0 MCP Heatsink
Key TO0P low 0 high 0 Optical Drive Proximity
Key Tp1P low 0 high 0 Power Board Proximity
Key Tp2H low 0 high 0 Power Secondary Heatsink
Key Tp3H low 0 high 0 Power Primary Heatsink
Key TS2p low 0 high 0 Skin
Key VC0C low 0 high 0 CPU Core
Key VCVR low 0 high 0 CPU VTT
Key VC8R low 0 high 0 CPU 1.8V S0
Key VDPr low 0 high 0 AC/DC
Key VDSR low 0 high 0 AC/DC Shunt
Key VG0R low 0 high 0 MXM
Key F2Ac low 940 high 2100 CPU
Key F1Ac low 1100 high 5500 Hard Drive
Key F0Ac low 1000 high 3800 Optical Drive
Dumping iMac11,2 from iMac11_2
Name: iMac (21.5 inch, Mid 2010)
Memory: 4 slots with 16384 MB total
Defaults: TC0H, temperature:, hidden IGPU
Key IC0C low 0 high 0 CPU Core
Key ICVR low 0 high 0 CPU VTT
Key IDSR low 0 high 0 AC/DC
Key IG0R low 0 high 0 MXM
Key PDSR low 0 high 0 AC/DC
Key TA0P low 0 high 0 Incoming Air
Key TC0C low 0 high 0 PECI
Key TC0H low 0 high 0 CPU Heatsink
Key TG0D low 0 high 0 GPU Die
Key TG0H low 0 high 0 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 0 high 0 LCD Proximity
Key Tm0P low 0 high 0 Logic Board Proximity
Key Tm1P low 0 high 0 Logic Board Proximity
Key TN0H low 0 high 0 MCP Heatsink
Key TO0P low 0 high 0 Optical Drive Proximity
Key Tp1P low 0 high 0 Power Board Proximity
Key Tp2H low 0 high 0 Power Secondary Heatsink
Key Tp3H low 0 high 0 Power Primary Heatsink
Key TS2p low 0 high 0 Skin
Key VC0C low 0 high 0 CPU Core
Key VCVR low 0 high 0 CPU VTT
Key VC8R low 0 high 0 CPU 1.8V S0
Key VDPr low 0 high 0 AC/DC
Key VDSR low 0 high 0 AC/DC Shunt
Key VG0R low 0 high 0 MXM
Key F2Ac low 1200 high 2600 CPU
Key F1Ac low 1100 high 6300 Hard Drive
Key F0Ac low 1000 high 4350 Optical Drive
Dumping iMac11,1 from iMac11_1
Name: iMac (27 inch, Late 2009)
Memory: 4 slots with 16384 MB total
Defaults: TC0H, temperature:, hidden IGPU
Key IC0C low 0 high 0 CPU Core
Key IG0R low 0 high 0 MXM
Key PDSR low 0 high 0 AC/DC
Key TA0P low 0 high 0 Incoming Air
Key TC0H low 0 high 0 CPU Heatsink
Key TG0D low 0 high 0 GPU Die
Key TG0H low 0 high 0 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 0 high 0 LCD Proximity
Key Tm0P low 0 high 0 Logic Board Proximity
Key TN0H low 0 high 0 MCP Heatsink
Key TO0P low 0 high 0 Optical Drive Proximity
Key Tp1P low 0 high 0 Power Board Proximity
Key Tp2H low 0 high 0 Power Secondary Heatsink
Key Tp3H low 0 high 0 Power Primary Heatsink
Key VC0C low 0 high 0 CPU Core
Key VDPR low 0 high 0 AC/DC Voltage
Key VG0R low 0 high 0 MXM
Key F2Ac low 940 high 2100 CPU
Key F1Ac low 1100 high 5500 Hard Drive
Key F0Ac low 1000 high 3800 Optical Drive
Dumping iMac10,1 from iMac10_1
Name: iMac (21.5 inch, Late 2009)
Memory: 4 slots with 8192 MB total
Defaults: TC0H, temperature:, hidden IGPU
Key IC0C low 0 high 0 CPU Core
Key IG0R low 0 high 0 MXM
Key PDSR low 0 high 0 AC/DC
Key TA0P low 0 high 0 Incoming Air
Key TC0H low 0 high 0 CPU Heatsink
Key TG0D low 0 high 0 GPU Die
Key TG0H low 0 high 0 GPU Heatsink
Key TH0O low 0 high 0 Hard Drive Proximity
Key TL0p low 0 high 0 LCD Proximity
Key Tm0P low 0 high 0 Logic Board Proximity
Key TN0H low 0 high 0 MCP Heatsink
Key TO0P low 0 high 0 Optical Drive Proximity
Key Tp1P low 0 high 0 Power Board Proximity
Key Tp2H low 0 high 0 Power Secondary Heatsink
Key Tp3H low 0 high 0 Power Primary Heatsink
Key VC0C low 0 high 0 CPU Core
Key VDPR low 0 high 0 AC/DC Voltage
Key VG0R low 0 high 0 MXM
Key F2Ac low 1200 high 4000 CPU
Key F1Ac low 1100 high 6300 Hard Drive
Key F0Ac low 1000 high 4350 Optical Drive
Dumping iMac15,1 from iMac15_1
Name: iMac with Retina 5K Display (27 inch, Late 2014)
Memory: 4 slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU Package
Key PC0C low 0 high 0 CPU Core
Key PCPR low 0 high 0 CPU Package Total
Key TG0D low 0 high 0 GPU Die
Key TG0p low 0 high 0 GPU Proximity
Key TC0E low 0 high 0 CPU Die PECI
Key TC0p low 0 high 0 CPU Proximity
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key Tb0p low 0 high 0 BLC Proximity
Key TM0p low 0 high 0 SO-DIMM 1
Key TM1p low 0 high 0 SO-DIMM 2
Key TM2p low 0 high 0 SO-DIMM 3
Key TM3p low 0 high 0 SO-DIMM 4
Key Tm0p low 0 high 0 Logic Board PSU
Key Tm1p low 0 high 0 Logic Board GPU
Key Tm2p low 0 high 0 CPU Backside
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key TI0p low 0 high 0 Thunderbolt Die
Key VC0C low 0 high 0 CPU Core
Key VC0M low 0 high 0 CPU MEM 1.5V
Key VG0C low 0 high 0 GPU Core
Key VG1C low 0 high 0 GPU Core High Side
Key VG0F low 0 high 0 GPU FB
Key VM0R low 0 high 0 DIMM 1.5V S3
Key VH05 low 0 high 0 HDD 5V
Key VR1R low 0 high 0 1.05V S0
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key VD2R low 0 high 0 AC/DC 12V G3H
Key IC0C low 0 high 0 CPU Core
Key IC0M low 0 high 0 CPU MEM 1.5V
Key IG0C low 0 high 0 GPU Core Low Side
Key IG1C low 0 high 0 GPU Core High Side
Key IG0F low 0 high 0 GPU FB 1.5V
Key IM0R low 0 high 0 DIMM 1.V5 S3
Key IH05 low 0 high 0 HDD 5V
Key IH02 low 0 high 0 HDD 12V
Key IH1R low 0 high 0 SSD 3.3V
Key ID2R low 0 high 0 AC/DC 12V G3H
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 2700 Fan
Key PSTR low 0 high 0 Total
Dumping iMac16,1 from iMac16_1
Name: iMac (21 inch, Late 2015)
Memory: soldered slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU package
Key PCPR low 0 high 0 CPU Package
Key PC0C low 0 high 0 CPU Package
Key TC0p low 0 high 0 CPU Proximity Board
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key TM0p low 0 high 0 SO-DIMM Proximity Board
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key TI0p low 0 high 0 TBT Die
Key Tb0p low 0 high 0 BLC Proximity Board
Key Tm0p low 0 high 0 Logic Board PSU Local Board
Key Tm2p low 0 high 0 CPU Backside
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM 1.5 S3
Key IM0R low 0 high 0 DIMM 1.5 S3
Key VC0C low 0 high 0 CPU Core
Key IC0C low 0 high 0 CPU Core
Key IH1R low 0 high 0 SSD 3.3V
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key PSTR low 0 high 0 Total Power
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 2500 Fan
Key PSTR low 0 high 0 Total
Dumping iMac18,1 from iMac18_1
Name: iMac (21 inch, Mid 2017)
Memory: 4 slots with 65536 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PCPT low 0 high 0 CPU Input
Key PCPR low 0 high 0 CPU Package
Key PC0C low 0 high 0 CPU Load Side
Key TI0p low 0 high 0 Thunderbolt Proximity
Key TC0p low 0 high 0 CPU Proximity Board
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller BOard
Key TM0p low 0 high 0 SO-DIMM Proximity
Key TH1R low 0 high 0 SSD
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key Tb0p low 0 high 0 BLC Proximity
Key Tm0p low 0 high 0 Logic Board PSU
Key Tm2p low 0 high 0 CPU Backside
Key TC0c low 0 high 0 CPU Core 1
Key TC1c low 0 high 0 CPU Core 2
Key TCGc low 0 high 0 GPU
Key TCSc low 0 high 0 CPU System Agent
Key TS0V low 0 high 0 Skin
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM
Key IR13 low 0 high 0 DIMM
Key IM0R low 0 high 0 DIMM
Key VC0C low 0 high 0 CPU Core
Key VC0G low 0 high 0 Intel GPU
Key IC0C low 0 high 0 CPU Core
Key IC0G low 0 high 0 CPU Graphics
Key IC0S low 0 high 0 CPU System Agent
Key IC0E low 0 high 0 CPU EDRAM
Key IC0P low 0 high 0 CPU Platform Controller Hub
Key IR54 low 0 high 0 5V S4
Key IR35 low 0 high 0 3.3V S5
Key IH1R low 0 high 0 SSD 3.3V
Key VR35 low 0 high 0 Voltage Regulator 3.3V
Key IC0M low 0 high 0 CPU Memory 1.5V
Key IC20 low 0 high 0 CPU Core, GPU, SA, IO
Key CUS1 low (null) high (null) CPU Cores
Key ALSL low 0 high 0 Ambient Light
Key PSTR low 0 high 0 Total
Key F0Ac low 1200 high 2850 Fan
Dumping iMac18,2 from iMac18_2
Name: iMac with 4K Display (21 inch, Mid 2017)
Memory: 4 slots with 65536 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key TC0p low 0 high 0 CPU Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key TM0p low 0 high 0 Memory
Key TH1R low 0 high 0 SSD
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key Tb0p low 0 high 0 BLC Proximity
Key Tm0p low 0 high 0 Logic Board PSU
Key Tm2p low 0 high 0 CPU Backside
Key TG0d low 0 high 0 GPU
Key TG0p low 0 high 0 GPU Proximity
Key Tm1p low 0 high 0 Logic Board GPU
Key TCSc low 0 high 0 CPU System Agent Core
Key TS0V low 0 high 0 Skin
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM 1.2 S3
Key IM0R low 0 high 0 DIMM 1.2 S3
Key VC0C low 0 high 0 CPU Core
Key IC0C low 0 high 0 CPU Core
Key IH1R low 0 high 0 SSD 3.3V
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key VC0M low 0 high 0 CPU Memory 1.2V
Key IC0M low 0 high 0 CPU Memory 1.2V
Key VG0C low 0 high 0 GPU Core
Key IG0C low 0 high 0 GPU Core Low Side
Key VG1C low 0 high 0 GPU Core High Side
Key IG1C low 0 high 0 GPU Core High Side
Key VG0F low 0 high 0 GPU Frame Buffer
Key IG1F low 0 high 0 GPU Frame Input Average
Key VH05 low 0 high 0 3.5 HDD 5V
Key IH05 low 0 high 0 3.5 HDD 5V
Key VR1R low 0 high 0 1.05V S0
Key VH1R low 0 high 0 SSD
Key IH02 low 0 high 0 3.5 HDD 12V
Key IC20 low 0 high 0 CPU Core, GPU, SA, IO
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key ALSL low 0 high 0 Ambient Light
Key PSTR low 0 high 0 Total
Key F0Ac low 1200 high 2850 Fan
Dumping iMac16,2 from iMac16_2
Name: iMac (21 inch, Late 2015)
Memory: soldered slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU Package
Key PCPR low 0 high 0 CPU Package
Key PC0C low 0 high 0 CPU Package
Key TC0p low 0 high 0 CPU Proximity Board
Key TPCD low 0 high 0 Platform Controller Hub
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key TM0p low 0 high 0 SO-DIMM Proximity Board
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key TI0p low 0 high 0 Thunderbolt Die
Key Tb0p low 0 high 0 BLC Proximity Board
Key Tm0p low 0 high 0 Logic Board PSU Local Board
Key Tm2p low 0 high 0 CPU backside
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM 1.5 S3
Key IM0R low 0 high 0 DIMM 1.5 S3
Key VC0C low 0 high 0 CPU Core
Key IC0C low 0 high 0 CPU Core
Key VH1R low 0 high 0 SSD 3.3V
Key IH1R low 0 high 0 SSD 3.3V
Key VR35 low 0 high 0 3.3v S5 Load Side
Key IR35 low 0 high 0 3.3v S5 Load Side
Key VR54 low 0 high 0 5V S4 load-side
Key IR54 low 0 high 0 SSD 3.3V
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key PSTR low 0 high 0 Total Power
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 2850 Fan
Key PSTR low 0 high 0 Total
Dumping iMac18,3 from iMac18_3
Name: iMac with Retina 5K Display (27 inch, Mid 2017)
Memory: 4 slots with 65536 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU
Key TC0p low 0 high 0 CPU Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key TM0p low 0 high 0 Memory Proximity
Key TH1R low 0 high 0 SSD
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key Tb0p low 0 high 0 BLC Proximity
Key Tm0p low 0 high 0 Logic Board PSU
Key Tm2p low 0 high 0 CPU backside
Key TG0d low 0 high 0 GPU Die
Key TG0p low 0 high 0 GPU Proximity
Key Tm1p low 0 high 0 Logic Board GPU
Key TM1p low 0 high 0 Memory Proximity 2
Key TM2p low 0 high 0 Memory Proximity 3
Key TM3p low 0 high 0 Memory Proximity 4
Key TCGc low 0 high 0 GPU
Key TCSc low 0 high 0 CPU System Agent
Key TS0V low 0 high 0 Skin
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VM0R low 0 high 0 DIMM 1.2 S3
Key IM0R low 0 high 0 DIMM 1.2 S3
Key VC0C low 0 high 0 CPU Core
Key IC0C low 0 high 0 CPU Core
Key IH1R low 0 high 0 SSD 3.3V
Key VR3R low 0 high 0 Voltage Regulator 3.3V
Key VC0M low 0 high 0 CPU Memory 1.2V
Key IC0M low 0 high 0 CPU Memory 1.2V
Key VG0C low 0 high 0 GPU Core
Key IG0C low 0 high 0 GPU Core Low Side
Key VG1C low 0 high 0 GPU Core High Side
Key IG1C low 0 high 0 GPU Core High Side
Key VG0F low 0 high 0 GPU Frame Buffer
Key IG1F low 0 high 0 GPU Frame Input Average
Key VH05 low 0 high 0 3.5 HDD 5V
Key IH05 low 0 high 0 3.5 HDD 5V
Key VR1R low 0 high 0 1.05V S0
Key VH1R low 0 high 0 SSD
Key IH02 low 0 high 0 3.5 HDD 12V
Key IC20 low 0 high 0 CPU Core, GPU, SA, IO
Key PGTR low 0 high 0 GPU Package
Key PSTR low 0 high 0 Total Power
Key PCPR low 0 high 0 CPU Package
Key ALSL low 0 high 0 Ambient Light
Key F0Ac low 1200 high 2700 Fan
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key PSTR low 0 high 0 Total
Dumping iMac14,1 from iMac14_1
Name: iMac (21 inch, Late 2013)
Memory: 4 slots with 32768 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key IC0C low 0.001 high 95 CPU Core
Key IC0M low 0 high 2.2 CPU 1.35 S0
Key ID2R low 0 high 17.1 AC/DC
Key IM0R low 0 high 12 DIMM 1.5 S3
Key TA0p low 5 high 100 Ambient Logic Board
Key TC0p low 5 high 100 CPU Proximity
Key TL0p low 5 high 100 LCD
Key TL1p low 5 high 100 Timing Controller
Key TM0p low 5 high 100 SO-DIMM Proximity
Key TPCD low 15 high 105 Platform Controller Hub
Key Tb0p low 5 high 100 BLC Proximity
Key Tm0p low 5 high 100 Logic Board DIMM Local Board
Key Tm1p low 5 high 100 Logic Board Proximity (CPU)
Key Tm2p low 5 high 100 Logic Board Proximity
Key Tp2h low 5 high 120 AC/DC T2 (Secondary Heatsink)
Key VC0C low 1.425 high 1.953 CPU Core
Key VC0M low 1.2825 high 1.4175 CPU 1.35V S0
Key VD2R low 10.8 high 13.2 AC/DC
Key VM0R low 1.2825 high 1.4175 DIMM 1.5 S3
Key VR1R low 1 high 1.1 1.05V S0
Key VR3R low 3.135 high 3.465 Logic Board 3.3V S5
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key TC0c low 15 high 105 CPU Core 1 - DTS
Key TC1c low 15 high 105 CPU Core 2 - DTS
Key TC2c low 15 high 105 CPU Core 3 - DTS
Key TC3c low 15 high 105 CPU Core 4 - DTS
Key CUS1 low (null) high (null) CPU Cores
Key F0Ac low 1400 high 2800 Fan
Key PSTR low 0 high 0 Total
Dumping iMacPro1,1 from iMacPro1_1
Name: iMac Pro (27 inch, Late 2017)
Memory: 4 slots with 131072 MB total
Defaults: TC0p, temperature: CUS1, hidden IGPU
Key PGTR low 0 high 0 GPU
Key PCPR low 0 high 0 CPU
Key PSTR low 0 high 0 Total Power
Key TC0p low 0 high 0 CPU Proximity
Key TPCD low 0 high 0 Platform Controller Hub Die
Key TA0p low 0 high 0 Logic Board Ambient
Key TL0p low 0 high 0 LCD Flying Lead
Key TL1p low 0 high 0 Timing Controller
Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink
Key Tb0p low 0 high 0 BLC Proximity
Key Tm0p low 0 high 0 PSU
Key Tm2p low 0 high 0 CPU Backside
Key TG0d low 0 high 0 GPU Die
Key Tm1p low 0 high 0 GPU Local Board
Key TM0p low 0 high 0 SO-DIMM 1 Proximity
Key TM1p low 0 high 0 SO-DIMM 2 Proximity
Key TM2p low 0 high 0 SO-DIMM 3 Proximity
Key TM3p low 0 high 0 SO-DIMM 4 Proximity
Key TS0V low 0 high 0 Skin
Key VD2R low 0 high 0 AC/DC 12V G3H
Key ID2R low 0 high 0 AC/DC 12V G3H
Key VC0C low 0 high 0 CPU Core
Key IC0C low 0 high 0 CPU Core
Key IH1R low 0 high 0 SSD 3.3V
Key VG0C low 0 high 0 GPU Core
Key IG0C low 0 high 0 GPU Core Low Side
Key TC0c low 15 high 105 CPU Core 1
Key TC1c low 15 high 105 CPU Core 2
Key TC2c low 15 high 105 CPU Core 3
Key TC3c low 15 high 105 CPU Core 4
Key TC4c low 15 high 105 CPU Core 5
Key TC5c low 15 high 105 CPU Core 6
Key TC6c low 15 high 105 CPU Core 7
Key TC7c low 15 high 105 CPU Core 8
Key F0Ac low 1100 high 2500 Fan 1
Key F1Ac low 1100 high 2500 Fan 2
Dumping MacBookPro11,2 from MacBookPro11_2
Name: MacBook Pro (15 inch, Retina, Late 2013)
Memory: 2 slots with 16384 MB total
Defaults: TCXC, temperature: TCXC
Key IC0C low 0.1 high 20 CPU Core
Key IC0R low 0.1 high 3.5 CPU Highside
Key ID0R low 0.3 high 5 DC In
Key IG0R low 0 high 2 GPU (Core, FB, 1.0V)
Key IG1C low 0 high 5 GPU FB
Key IHDC low 0 high 1 SSD
Key IHSC low 0 high 0.3 Thunderbolt
Key IM0C low 0.01 high 1 Memory
Key IO3R low 0.01 high 0.5 Other 3.3V
Key IO5R low 0.1 high 1.1 Other 5V
Key IPBR low 0.1 high 3 Charger - BMON
Key Ta0P low 10 high 60 Air Flow Proximity
Key TB1T low 10 high 60 Battery Sensor 1
Key TB2T low 10 high 60 Battery Sensor 2
Key TC0P low 10 high 70 CPU Proximity
Key TC1C low 10 high 95 CPU Core 1
Key TC2C low 10 high 95 CPU Core 2
Key TC3C low 10 high 95 CPU Core 3
Key TC4C low 10 high 95 CPU Core 4
Key TCGC low 10 high 100 Intel GPU
Key TCSA low 10 high 100 CPU System Agent Core
Key TCXC low 10 high 95 CPU PECI Die
Key TM0P low 10 high 70 DDR3 Proximity
Key TG0D low 10 high 100 GPU Die - Analog
Key TG1D low 10 high 100 GPU Die - Digital
Key TG0P low 10 high 80 GPU Proximity
Key TH0A low 10 high 70 SSD A
Key TH0B low 10 high 70 SSD B
Key Th2H low 10 high 60 Left Fin Stack
Key Ts0P low 10 high 45 Palm Rest
Key TP0P low 10 high 75 Platform Controller Hub
Key TPCD low 10 high 80 Platform Controller Hub PECI
Key Th1H low 10 high 60 Right Fin Stack
Key TW0P low 10 high 70 X29 Proximity
Key VC0C low 1.6 high 1.95 CPU Vcore
Key VD0R low 18 high 21 DC In
Key VG0C low 0.7 high 1.15 GPU Vcore
Key VG1C low 0.7 high 1.8 GPU FB
Key VP0R low 10 high 13.5 PBus
Key ALSL low 0 high 0 Ambient Light
Key F1Ac low 2000 high 5700 Rightside
Key F0Ac low 2160 high 6156 Leftside
Key PCPC low 0 high 33 CPU Package Core
Key PCPG low 0 high 22 CPU Package GPU
Key PCPT low 0 high 55 CPU Package Total
Key PSTR low 0 high 0 System Total
Key PDTR low 0 high 0 DC In
</pre>
[[Category:Mac]]
95y0n1d9q3wrwcuwekl1ir5gjpwp4lt
SMC flashing
0
1944
6942
6803
2023-09-29T06:14:55Z
CBax
996
made efi shells shelfhosted
6942
wikitext
text/x-wiki
==Disclaimer==
This page will show you how to force flash an [[SMC]] using the EFI. The Mac you want to flash needs to be able to boot into EFI (Boot selection page) in order to flash it. We have not tested to further extent if you can solder any SMC on any board to flash it. So far, this method has been successfully applied to flash a SMC from a 820-3437 donor soldered on a [[820-00165 Boot Up Diagram|820-00165]] and a 820-00165 SMC soldered on a 820-3437. SMC update and MacOS update have not been tested. '''Any further compatibility information is welcome and [[SMC Compatibility|can be contributed here]]'''. Any further test, information, compatibilities or incompatibilities are welcome.
<br />
==Update: Flashing SMC, the easy way==
Muerto (thanks to him) went further and developed a tool more suitable and easier to use.
==='''The easy way to flash an SMC is [https://github.com/MuertoGB/SMCFT here.]'''===
For the hardworking ones, follow the tutorial below.
==Requirements==
List of required tools to flash your SMC:
===Hardware===
*A working laptop, to find or prepare some software tools
*A Mac with an SMC to flash... of course. No soldering is involved here. We will boot the Mac and force flash in EFI
*A USB key. It will contain reFIt, to boot on EFI, a shell and tools to flash
===Software===
*A MacOS installer application. In order to extract the SMC update files. We recommend a not too recent installer, which has SMC firmware in a 3 files format (Base, App and Update file).
*SMCutil.efi. One that works. A link will be provided, or a way to find it. [https://repo.doslabelectronics.com/system_images/efi/smcutil.efi Download link.]
*shell.efi. You need to add an EFI shell to rEFIt. Same, you need the right version that will work on a Mac. [https://repo.doslabelectronics.com/system_images/efi/shell.efi Download link.]
*Pacifist: An app to extract .pkg. Other tools exist and terminal command can be used to do this as well. Available on https://www.charlessoft.com/.
==Gathering the stuff we need==
===Installing rEFIt on a bootable drive===
rEFIt will help you boot an EFI on an external drive to launch the shell, SMCutils and other stuffs... if you want to.
Download Link: http://refit.sourceforge.net/#download
We recommend to install it on a separate volume or external disk is explained on the website: http://refit.sourceforge.net/doc/c1s1_install.html
Installation procedure is basically the same as explained above:
*Copy the “efi” folder to the root of the volume
*Run “enable.sh” inside the “efi/refit” directory. The path in Terminal will be different, for example “/Volumes/MyUSB/efi/refit” if the volume is named “MyUSB”.
*If you want, you can use the provided “rEFIt.icns” icon as a volume icon.
*You should also install an EFI Shell. A link to a shell.efi file will be provided. You just need to add it to a "tools" folder on the USB key.
===Finding your Board id===
Example here: Mac-7DF32CB3ED6977E5
The BoardID is different from the board number, the A number, the part number... It's an ID as ''Mac-boarIDinHexadecimal''. Here is the list of BoardID for almost all Macs. : https://mrmacintosh.com/list-of-mac-boardid-deviceid-model-identifiers-machine-models/
Note the board ID from the SMC firmware you need, it will be used to extract the right SMC firmware files.<br />
===Extracting SMC Firmware===
To find SMC rom files, you need to have a bootable dmg file for OSX. Mojave Installation DMG File is used in this example.
*Right click and show package contents as in picture.
*Get InstallESD.dmg file and copy it to desktop.
[[File:content-installer.jpg|frameless]]
<br />
*Open the dmg, open packages folder and find FirmwareUpdate.pkg.
*Extract pkg file using PACIFIST app. (Link: https://www.charlessoft.com/)
[[File:firmwarepkg.jpg|frameless]]
<br />
*Open FirmwareUpdate.pkg from pacifist app.
*You will find a list of Mac-BoardID folders in scripts/tools/SMCPayloads. Select the 4 SMC related files according to your mac BoardID and extract to desktop
[[File:paficist.jpg|frameless]]
<br />
==Prepare USB drive==
*Copy the files to USB drive that you have made bootable before and arrange like this:
**efi
***refit (where refit installed)
***SMCFlasher (where smcutils and your smc firmware is)
****smcutil.efi
****flasher base file
****flasher update file
****Mac-BoardID.smc
****Mac-BoardID.epm
***tools
****shell.efi
<br />
[[File:Efi-flasher-USB-content.jpg|none|thumb|600x600px|Example of the content of the USB key used to force flash the SMC.]]
<br />
==Flashing the SMC==
*Boot from USB Drive
*Select boot from Shell (or efishell) on the rEFIt boot page
[[File:Boot-on-rEFIt.jpg|frameless]]
[[File:rEFIt-example.jpg|frameless]]
*Look for removable drives the list of drives displayed by efi ("Removable HardDisk"), and identify the Alias: fs2 in this example.
*Type “fs2:” to enter the drive. Now the shell act as a regular terminal: "ls", "cd" and autofill with tab will work.
[[File:EFI shell.jpg|frameless]]
[[File:shell efi.jpg|frameless]]
*Confirm its your USB drive and go to SMCFlasher folder
*Type smcutil.efi. You now have the liste of commands allowed by smcutil
[[File:smcutilefi-shellcommand.jpg|frameless]]
*You can now flash each file one by one using the -force argument to force flash without checking the version, -norestart to not reboot (it still reboots sometimes but we don't know why) and using the right argument each time: -LoadApp, -LoadUpdate or -LoadBase :
**smcutil.efi -force -norestart -LoadUpdate flasher_update.smc
**smcutil.efi -force -norestart -LoadBase flasher_base.smc
**smcutil.efi -force -norestart -LoadApp Mac-BoardID.smc
[[File:smcutil-flash-example.jpg|frameless]]
[[File:SMC Flashing done.jpg|frameless]]
*Type exit, reboot your Mac
*Enjoy your new SMC file
<br />
==Final remarks==
*It could be useful to reset the SMC using a smcutil command, but we don't know how it can affect the flashing.
*epm file is not flashed in this tutorial. We don't know what it's used for and if it succeed to flash or if it's useful to be flashed.
*We have not tested MacOS update or SMC update after this forced flashing. Feedbacks are welcome.
*Some tools are specific and we need to find a place to store and provide them. The article will be updated with download links.
*We don't know if we can flash any SMC solder on the wrong board to a compatible SMC. We believe a shell script can be built to do so.
*SMCutil.efi is a modified version of SMCflasher.efi that can be found in MacOSinstaller packages. SMCflasher.efi includes both 32bit and 64bit and adds a header in front of it. SMCutil.efi has only 64bit and the header removed, so it can be used in EFI shell. SMCFlasher.efi should be usable with a EFI script right away, but this hasn't been tested here.
This is very preliminary. It's a draft with many missing parts, unexplained and no understood stuff. Please, if you know more, feel free to modify, comment, add to make this thing look better.
Specials thanks to:
*Sajan Gurung for the pictures, the draft of this tutorial and the kick to get the tutorial done at last.
*Alexandre "Padawan" Tissot for the initial searches, smcutil findings and the kick to get the flashing s***t done.
==Other resources==
*Forum where SMCutil, SMCflasher and SCM disassembly is discussed: https://www.insanelymac.com/forum/topic/299811-readsmc-for-efi-a-tool-to-enter-read-smc-keys-from-efi-shell-on-real-macs/
*Discussion on SMCFlasher.efi in Ghostlyhaks: https://www.ghostlyhaks.com/forum/macbook-pro-retina-2015-2016/2231-smc-flashing-with-smcflasher-efi-or-within-os?start=0
*SMC downgrade tutorial on Apple forum (yes... Apple): https://discussions.apple.com/thread/6838010
*Youtube video of REcon2014 hacking conference of Alex Ionescu "SMC, the place to be, definitely" about hacking into SMC to make it run modified code: https://youtu.be/nSqpinjjgmg
<br />
g0p3ecxes1z90jd4g2f0lx9txab9zys
Samsung Diode Measurements
0
1414
3062
2020-10-06T15:52:20Z
Chrisb
1
Chrisb moved page [[Samsung Diode Measurements]] to [[Samsung Diode Mode Measurements]]
3062
wikitext
text/x-wiki
#REDIRECT [[Samsung Diode Mode Measurements]]
4wfj7rap52jqe0dx4yd54ywvf3lpsid
Samsung Diode Mode Measurements
0
292
6113
6100
2021-09-22T18:27:41Z
Alpha Bravo Tech.
538
Uploaded Diode Mode Readings for the Samsung Galaxy S7 Edge SM-G935A
6113
wikitext
text/x-wiki
== Samsung Galaxy S7 Edge SM-G935A ==
=== PDF of All Pictures: ===
[[File:Samsung S7 Edge SM-G935A.pdf|none|thumb]]
<br />
==== High Quality Pictures: ====
[[File:SM-G935A FRONT.png|none|thumb]]
[[File:SM-G935A BACK.png|none|thumb]]
[[File:SM-G935A PIC 1.png|none|thumb]]
[[File:SM-G935A PIC 2.png|none|thumb]]
[[File:SM-G935A PIC 3.png|none|thumb]]
[[File:SM-G935A PIC 4.png|none|thumb]]
[[File:SM-G935A PIC 5.png|none|thumb]]
[[File:SM-G935A PIC 6.png|none|thumb]]
[[File:SM-G935A PIC 7.png|none|thumb]]
[[File:SM-G935A PIC 8.png|none|thumb]]
[[File:SM-G935A PIC 9.png|none|thumb]]
[[File:SM-G935A PIC 10.png|none|thumb]]
==Galaxy S8 SM-[[Galaxy S8 SM-G950U|G950U]]==
=== '''PDF of All Pictures:''' ===
[[File:Samsung S8 SM-G950U diode mode readingsV2.pdf|thumb|alt=|none]]
==== '''All Pics in High Quality:''' ====
[[File:SAMSUNG S8 BACK.jpg|thumb|alt=|none]]
[[File:SAMSUNG S8 FRONT.jpg|thumb|alt=|none]]
[[File:(2)S8 1 PNG.png|alt=|thumb|none]]
[[File:S8 2.png|thumb|alt=|none]]
[[File:S8 3 PNG.png|thumb|alt=|none]]
[[File:S8 4 PNG.png|thumb|alt=|none]]
[[File:S8 5 PNG.png|thumb|alt=|none]]
[[File:S8 6 PNG.png|thumb|alt=|none]]
<br />
[[File:S8 7 PNG.png|thumb|alt=|none]]
<br />
==Galaxy Note 9==
Overall View:
[[File:Overall View 1 Note 9.jpg|alt=Overall View 1 Note 9|1067x1067px]]
Connector 1:
[[File:Note 9 FPC 1.png|alt=Note 9 FPC 1|800x800px]]
Connector 2:
[[File:Note 9 FPC 2.png|alt=Note 9 FPC 2|800x800px]]
Connector 3:
[[File:Note 9 FPC 3.png|alt=Note 9 FPC 3|800x800px]]
Connector 5:
[[File:Note 9 FPC 5.png|alt=Note 9 FPC 5|800x800px]]
Connector 6:
[[File:Note 9 FPC 6.png|alt=Note 9 FPC 6|1102x1102px]]
Connector 7:
[[File:Note 9 FPC 7.png|alt=Note 9 FPC 7|800x800px]]
Connector 8:
[[File:Note 9 FPC 8.png|alt=Note 9 FPC 8|800x800px]]
<br />
==Galaxy S9 Plus==
Overall View 1:
[[File:Overall View 1 Edited.jpg|alt=Overall View 1 Edited|1067x1067px]]
Overall View 2:
[[File:S9+Overall View 2 Edited.jpg|alt=S9+Overall View 2 Edited|1067x1067px]]
OLED:
[[File:S9+OLED Edited.jpg|alt=S9+OLED Edited|800x800px]]
Iris Scanner:
[[File:S9+Iris Scanner Edited.jpg|alt=S9+Iris Scanner Edited|800x800px]]
Front Facing Camera:
[[File:S9+Front Facing Camera Edited.jpg|alt=S9+Front Facing Camera Edited|800x800px]]
Proximity Sensor:
[[File:S9+Prox Sensor Edited.jpg|alt=S9+Prox Sensor Edited|800x800px]]
Finger Print Scanner:
[[File:S9+Finger Print Scanner Edited.jpg|alt=S9+Finger Print Scanner Edited|800x800px]]
Rear Camera:
[[File:S9+Rear Camera Edited.jpg|alt=S9+Rear Camera Edited|800x800px]]
Charging Port:
[[File:S9+Charging Port Edited.jpg|alt=S9+Charging Port Edited|800x800px]]
<br />Battery:
[[File:S9+Battery Edited.jpg|alt=S9+Battery Edited|800x800px]]
==Samsung S10==
OLED:
[[File:Samsung S10 OLED Edited.jpg|alt=Samsung S10 OLED Edited|800x800px]]
Charging Port:
[[File:Samsung S10 Charging Port Edited.jpg|alt=Samsung S10 Charging Port Edited|800x800px]]
Battery:
[[File:Samsung S10 Battery Edited.jpg|alt=Samsung S10 Battery Edited|800x800px]]
Front Camera:
[[File:Samsung S10 Front Camera.jpg|alt=Samsung S10 Front Camera|800x800px]]
Headphone Jack:
[[File:Samsung S10 Headphone Jack Edited.jpg|alt=Samsung S10 Headphone Jack Edited|800x800px]]
Left Rear Camera:
[[File:Samsung S10 Left Rear Camera Edited.jpg|alt=Samsung S10 Left Rear Camera Edited|858x858px]]
Right Rear Camera:
[[File:Samsung S10 Right Rear Camera Edited.jpg|alt=Samsung S10 Right Rear Camera Edited|1056x1056px]]
<br />
==Samsung S10e==
OLED:
[[File:Samsung S10e OLED Edited.jpg|alt=Samsung S10e OLED Edited|800x800px]]
12MP Camera:
[[File:Samsung S10e 12mp Camera Edited.jpg|alt=Samsung S10e 12mp Camera Edited|800x800px]]
16MP Camera:
[[File:Samsung S10e 16MP Camera Edited.jpg|alt=Samsung S10e 16MP Camera Edited|800x800px]]
Front Camera:
[[File:Samsung S10e Front Camera.jpg|alt=Samsung S10e Front Camera|800x800px]]
Headphone Jack:
[[File:Samsung S10e Headphone Jack Edited.jpg|alt=Samsung S10e Headphone Jack Edited|800x800px]]
Power Button:
[[File:Samsung S10e Power Button Edited.jpg|alt=Samsung S10e Power Button Edited|800x800px]]
==Samsung S10+==
OLED:
[[File:Samsung S10+ OLED Edited.jpg|alt=Samsung S10+ OLED Edited|800x800px]]
Front Camera:
[[File:Samsung S10+ Front Camera Edited.jpg|alt=Samsung S10+ Front Camera Edited|803x803px]]
Headphone Jack:
[[File:Samsung S10+ Headphone Jack Edited.jpg|alt=Samsung S10+ Headphone Jack Edited|800x800px]]
==Galaxy Note 10+==
Overall View 1:
[[File:Note 10+ Overall 1.jpg|alt=Note 10+ Overall 1|800x800px]]
Overall View 2:
[[File:Note 10+ Overall 2.jpg|alt=Note 10+ Overall 2|800x800px]]
Front Camera:
[[File:Galaxy Note 10+ Front Camera.jpg|alt=Galaxy Note 10+ Front Camera|800x800px]]
S Pen:
[[File:Note 10+ S Pen.jpg|alt=Note 10+ S Pen|800x800px]]
Wireless Charger:
[[File:Note 10+ Wireless Charger.jpg|alt=Note 10+ Wireless Charger|800x800px]]
Battery:
[[File:Note 10+ Battery.jpg|alt=Note 10+ Battery|800x800px]]
OLED:
[[File:Galaxy Note 10+ OLED.jpg|alt=Note 10+ OLED|800x800px]]
Dock Connector 1:
[[File:Galaxy Note 10+ Dock Connector 1.jpg|alt=Galaxy Note 10+ Dock Connector 1|800x800px]]
Dock Connector 2:
[[File:Galaxy Note 10+ Dock Connector 2.jpg|alt=Galaxy Note 10+ Dock Connector 2|800x800px]]
Digitizer:
[[File:Galaxy Note 10+ Digitizer Connector.jpg|alt=Galaxy Note 10+ Digitizer Connector|800x800px]]
Buttons:
[[File:Galaxy Note 10+ Button Connector.jpg|alt=Galaxy Note 10+ Button Connector|800x800px]]
Rear Camera 1:
[[File:Galaxy Note 10+ Rear Camera 1.jpg|alt=Galaxy Note 10+ Rear Camera 1|800x800px]]
Rear Camera 2:
[[File:Galaxy Note 10+ Rear Camera 2.jpg|alt=Galaxy Note 10+ Rear Camera 2|800x800px]]
Rear Camera 3:
[[File:Galaxy Note 10+ Rear Camera 3.jpg|alt=Galaxy Note 10+ Rear Camera 3|800x800px]]
==Samsung S20 Ultra==
Overall view:
[[File:Samsung S20 Ultra Overall.jpg|alt=Samsung S20 Ultra Overall|1067x1067px]]
Overview 2:
[[File:Overall View Back.jpg|alt=Overall View Back]]
Battery:
[[File:Samsung S20 Ultra Battery Edited.jpg|alt=Samsung S20 Ultra Battery Edited|800x800px]]
Power Button:
[[File:Samsung S20 Ultra Power Button.jpg|alt=Samsung S20 Ultra Power Button|800x800px]]
OLED:
[[File:Samsung S20 Ultra Edited OLED.jpg|alt=Samsung S20 Ultra Edited OLED|800x800px]]
Charging Port 1:
[[File:Samsung S20 Ultra Charging Port Edited.jpg|alt=Samsung S20 Ultra Charging Port Edited|1067x1067px]]
Charging Port 2:
[[File:Samsung S20 Ultra Charging Port 2 Edited.jpg|alt=Samsung S20 Ultra Charging Port 2 Edited|1067x1067px]]
Front Camera:
[[File:Samsung S20 Ultra Front Camera Edited.jpg|alt=Samsung S20 Ultra Front Camera Edited|800x800px]]
Rear Camera 1:
[[File:Samsung S20 Ultra Rear Camera Edited.jpg|alt=Samsung S20 Ultra Rear Camera Edited|800x800px]]
Rear Camera 2:
[[File:Samsung S20 Ultra Rear Camera 2 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 2 Edited|800x800px]]
Rear Camera 3:
[[File:Samsung S20 Ultra Rear Camera 3 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 3 Edited|800x800px]]
Rear Camera 4:
[[File:Samsung S20 Ultra Rear Camera 4 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 4 Edited|800x800px]]
Wireless Charging:
[[File:Samsung S20 Ultra Wireless Edited.jpg|alt=Samsung S20 Ultra Wireless Edited|800x800px]]
Side Sensor:
[[File:Samsung S20 Ultra Side Sensor Edited.jpg|alt=Samsung S20 Ultra Side Sensor Edited|800x800px]]
Sensor 2:
[[File:Smasung S20 Ultra Sensor Edited.jpg|alt=Smasung S20 Ultra Sensor Edited|800x800px]]
kwlpctzt115ccgmh0jnvn3htllg2tby
Schematic Abbreviations
0
1930
5691
5690
2021-03-21T01:16:12Z
Chrisb
1
5691
wikitext
text/x-wiki
==CODE COMPONENT==
*BT : Button
*C : Capacitor
*CN : Connector
*D : Diode
*F : Fuse
*L : Inductor
*PC : Power Capacitor
*PD : Power Diode
*PL : Power Inductor
*PQ : Power Transistor
*PR : Power Resistor
*PU : Power Integrated Circuit
*Q : Transistor
*R : Resistor
*T : Transformers
*U : Integrated Circuit/Bga Chip/Embedded Controller/Bios Ic,Etc
*X : Terminal Strips, Terminations, Joins Oscillator
*Y : Crystal
==Abbreviations==
*AC : Alternating current
*ACDRV : AC adapter to system-switch driver output
*ACDET/ACIN : AC Adapter Voltage Detector
*ACGOOD : Valid adapter detect logic
*ACN : AC Adapter current sense amplifier inverting input
*ACP : AC Adapter current sense amplifier non-inverting input
*ACOP : Input Over-Power Protection
*ACOV : Input Overvoltage Protection
*ADP+ : Adapter Positive Supply
*ADP_ID : Adapter Identity
*AGND : Analog Ground
*ALWP : Always On Power
*B+ : AC or Battery Power Rail For Power Circuit
*BATT : Battery
*BAT+ : Battery Power Rail For Power Circuit
*BAT_DRV : Battery FET Gate Driver
*BAT_V : Battery Voltage
*BOM : Bill Of Material Management
*BT_EN : Bluetooth Enable
*BYP : Bypass
*CHGEN : Charge Enable Active-Low Logic Input
*CIN : Input Capacitor
*CLK_EN : Clock Enable
*CRT : Cathode Ray Tube
*CSIN : Input Current Sense Amplifier Inverting Input
*CSIP : Input Current Sense Amplifier Non-Inverting Input
*DC : Direct Current
*DM : DIMM Socket Memory Ddr
*DOCK : Docking Socket
*EC : Embedded Controller
*EC_ON : Embedded Controller Enable
*EMI : Electromagnetic Interference
*EN : Enable
*ENTRIP : Enable Terminal
*FSEL : Frequency Select Input
*GATE : Trigger Gate
*GND : Ground
*GP : Ground Pin
*GPI : General Power Input
*GPIO : General Purpose Input Output
*HDMI : High-Definition Multimedia Interface
*ID : Continuous Drain Current
*IDM : Pulsed Drain Current
*IIN : Operating Supply Current
*IIN(SHDN) : Shutdown Supply Current
*IIN(STBY) : Standby Supply Current
*IS : Continuous Source Current (Diode Conduction)
*IVIN : Battery Supply Current at VIN pin
*JP : Jumper Point
*KBC : Keyboard Controller
*LCDV : LCD Power
*LDO : Low-DropOut Regulator
*LGATE : Lower-side MOSFET Gate Signal
*LPC : Low Pin Count
*LVDS : Low-voltage Differential Signaling
*MBAT : Main Battery
*NB : North Bridge
*NC : Not Connected
*ODD : Optical Disc Drive
*PCI : Peripheral Component Interconnect
*PGOOD : Power Good Open-Drain Output
*PIR : Product Improved Record
*PSI# : Current Indicator Input
*PVCC : IC Power Positive Supply
*RSMRST# : Resume Reset
*RTC : Real Time Clock
*SB : South Bridge
*SHDN : Shutdown
*SYS_SDN : System Shutdown
*SPI : Serial Peripheral Interface
*TD : Death Time
*THRM : Thermal Sensor
*TMDS : Transition Minimized Differential Signaling
*TP : Test Point
*TPAD : Thermal Pad
*UVLO : Input Undervoltage Lock Out
*V : Power Rail
*V+ : Positive Voltage
*VADJ : Output Regulation Voltage
*VALW : Always On Power
*VALWP : VALW Pad
*VBAT : Battery Power
*VCCP : Chip Power
*VCORE : Processor Power Rail
*VDD : Control Power Supply
*VDDR : Power DDR (VDRAM/VRAM/VMEM)
*VDS : Voltage Drain Source
*VFB : Feedback Inputs Power
*VGS : Voltage Gate Sources
*VIN : Input Voltage Range
*VIN : Adapter Power Supply
*VL : Power Lock
*VL : Voltage Across The Load
*VL : Power Rail From Linear Regulator
*VOT : Volt Out
*VRAM : Power Memory
*VREF : Power References
*VS : Switch Power
*VS+ : Support Voltage Positive
*VSB : Standby Power Rail
*VSS : Signal Ground
*VSW : Power Switch
*VTT : Memory Termination Voltage
*VTERM : Memory Termination Voltage
*VUSB : Power USB
*VGFX/VGPU : Power Graphic Chip
Original source [https://www.badcaps.net/forum/showthread.php?t=58105 Badcaps]
4euv0fm1fkxdqu7fogcbvwv9q87oyez
Schematics and Boardviews Availability
0
1810
7738
7707
2025-01-23T05:54:08Z
Pedro147
26
Added 820-03285 and 820-03286 boardviews and schematics
7738
wikitext
text/x-wiki
✅ Available<br>
🗸 File is available but there is catch, see comment<br>
❌ File is not known to be available, even if you see it listed somewhere (free or paid) it is probably a different one<br>
Check [https://logi.wiki/index.php?title=Schematics_and_Boardviews_Availability&action=history page history] for last update date.<br>
Check [[Board Number by A Number]] for correspondance between board number and machine model.
==MacBook==
===Main Logic Board===
{| class="wikitable"
!Board number!!Schematics!!Boardview!!Comment
|-
|820-1881||✅||✅||
|-
|820-1889||✅||✅||
|-
|820-1993||✅||✅||
|-
|820-2023||✅||✅||
|-
|820-2054||✅||✅||
|-
|820-2056||✅||✅||
|-
|820-2059||✅||✅||
|-
|820-2101||✅||✅||
|-
|820-2132||✅||✅||
|-
|820-2179||✅||✅||
|-
|820-2213||✅||✅||
|-
|820-2249||✅||✅||
|-
|820-2262||✅||✅||
|-
|820-2279||✅||✅||
|-
|820-2327||✅||✅||
|-
|820-2330||✅||✅||
|-
|820-2375||✅||✅||
|-
|820-2390||✅||✅||
|-
|820-2496||✅||✅||
|-
|820-2523||✅||✅||
|-
|820-2530||✅||✅||
|-
|820-2532||✅||✅||
|-
|820-2533||✅||✅||
|-
|820-2610||✅||✅||
|-
|820-2796||✅||✅||
|-
|820-2838||✅||✅||
|-
|820-2849||✅||✅||
|-
|820-2850||✅||✅||
|-
|820-2877||✅||✅||
|-
|820-2879||✅||✅||
|-
|820-2883||✅||✅||
|-
|820-2914||✅||✅||
|-
|820-2915||✅||✅||
|-
|820-2936||✅||✅||
|-
|820-3023||✅||✅||
|-
|820-3024||✅||✅||
|-
|820-3115||✅||✅||
|-
|820-3190||✅||✅||
|-
|820-3208||✅||✅||
|-
|820-3209||✅||✅||
|-
|820-3330||✅||✅||
|-
|820-3332||✅||✅||
|-
|820-3435||✅||✅||
|-
|820-3437||✅||✅||
|-
|820-3462||✅||✅||
|-
|820-3476||✅||✅||Warning: most files distributed as 820-3476 are in fact 820-3536 (4GB RAM variant, 8 RAM ICs instead of 16). Correct boardview is available in XinZhiZao, otherwise use 820-3536.
|-
|820-3536||✅||✅||
|-
|820-3662||✅||✅||
|-
|820-3787||✅||✅||
|-
|820-4924||✅||✅||
|-
|820-00045||✅||✅||
|-
|820-00138||🗸||✅||Warning: most boardviews distributed as 820-00138 are in fact 820-3662. Correct boardview is available in XinZhiZao, otherwise use 820-00163 (touchpad, SPI ROM…) and 820-3662 boardviews depending on the area. Touchpad connector has wrong pinout in schematics, refer to 820-00163 again.
|-
|820-00163||✅||✅||
|-
|820-00164||✅||✅||
|-
|820-00165||✅||✅||
|-
|820-00239||✅||✅||
|-
|820-00244||✅||✅||
|-
|820-00281||✅||✅||
|-
|820-00426||🗸||❌||Use 820-00163, only noticeable difference is DC-in MOSFETs (dual on 820-00163, 2× singles on 820-00426). Available schematics does not have the correct part either.
|-
|820-00687|| || ||Authenticity unconfirmed, very similar to 820-00244.
|-
|820-00840||❌||✅||Use 820-00875 which does not have the PI3USB32224BXEAE near USB-C ports and different populated parts for SSD_BOOT_L/SSD_PWR_EN_L (see [[A1708 SSD]]). Correct boardview is available in XinZhiZao.
|-
|820-00850||✅||✅||
|-
|820-00875||✅||✅||
|-
|820-00923||✅||❌||Use 820-00239, may have differences around CD3215: around U3100, check the 820-00850 schematics to find connections to R3169 (not appearing on schematics).
|-
|820-00928||✅||❌||Use 820-00281 some differences around CD3215 at least.
|-
|820-01041||✅||✅||
|-
|820-01326
|❌
|❌
|Use 820-01041 boardview and schematic, 820-01326 unavailable, only difference is Vega GPU as far as i know
|-
|820-01521||✅||✅||Power sequence diagram also available with board number 820-01055.
|-
|820-01598||✅||✅||Power sequence diagram also available.
|-
|820-01700||✅||✅||Original boardview in brd format does not have the correct board outline. A modified boardview in bvr format does.
|-
|820-01814||✅|| ||Authenticity of boardview unconfirmed (file is identical to 820-01041).
|-
|820-01827||❌||❌||Use 820-01041, GPU area will be different (no VRAM on 820-01827).
|-
|820-01949||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum.
|-
|820-01958||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum.
|-
|820-01987||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum.
|-
|820-02016||✅||✅||XinZhiZao may have boardview.As of 18 Sep 2021 bvr and sch available on Badcaps forum. in schematics and BV RP603 pin 2 refer to PP3V3_SW_LCD, but it's wrong it's actually GND same as RP602 pin 2
|-
|820-02020||✅||✅||Only annotated boardview on XinZhiZao. As of 2 Sep 2021 bvr and sch available on Badcaps forum.
|-
|820-02098||✅||✅||14" M1 Pro as of 16 Sep 2022 bvr and sch available on Badcaps forum.
|-
|820-02100||✅||✅||16" M1 Pro Schematics and bvr files available on Badcaps 29 Sep 2022
|-
|820-02382||✅||✅||Schematics and bvr files available on Badcaps 29 Sep 2022
|-
|820-02443||✅||✅||14" M1 Max as of 16 Sep 2022 bvr and sch available on Badcaps forum.
|-
|820-02773||✅||✅||XinZhiZao may have boardview / bvr and sch available on Badcaps 25 May 2023
|-
|820-02841||✅||✅||brdview and sch on Badcaps as of 22 Oct 2024. Search 820-02841 A2779 schematics and boardview on schematic request page
|-
|820-02862
|✅||❌||vinafix says they have sch
|-
|820-02536||✅||✅||brdview and sch on Badcaps. Search 820-02536 boardview and schematic on schematic request page
|
|-
|820-02655
|✅
|✅
|14" M2 A2779 MBP search 820-02655 boardview (BVR) and schematic (PDF)on Badcaps forum as of 9 Sep 2024
|
|-
|820-03285
|✅
|✅
|A3113 13" Macbook Air M3 - Search "820-03285 and 820-03286 boardviews and schematics" on BadCaps on schematic request page for these
|
|-
|820-03286
|✅
|✅
|A3114 15" Macbook Air M3 - Search "820-03285 and 820-03286 boardviews and schematics" on BadCaps on schematic request page for these
|
|}
===I/O Board===
{| class="wikitable"
!Board number!!Schematics!!Boardview!!Comment
|-
|820-1699||✅||✅||A1150
|-
|820-1970||✅||✅||A1151
|-
|820-2055||✅||✅||A1211
|-
|820-2060||✅||✅||A1212
|-
|820-2102||✅||✅||A1226
|-
|820-2140||✅||❌||A1229
|-
|820-2273||✅||✅||A1260
|-
|820-2274||✅||✅||A1261
|-
|820-2827||❌||❌||A1370 2010
|-
|820-2869||✅||✅||A1369 2010
|-
|820-3053||✅||✅||A1370 2011
|-
|820-3057||✅||❌||A1369 2011
|-
|820-3071||✅||✅||A1398 2012
|-
|820-3213||✅||✅||A1465 2012
|-
|820-3214||❌||❌||A1466 2012
|-
|820-3453||❌||❌||A1465 2013/2015
|-
|820-3455||❌||❌||A1466 2013/2015
|-
|820-3539||❌||✅||A1502 2013
|-
|820-3547||❌||✅||A1398 2013
|-
|820-5482||❌||❌||A1398 2015
|-
|820-00012||❌||❌||A1502 2015
|-
|820-01124||✅||✅||A1932 2018/2019
|}
==iMac==
{| class="wikitable"
!Board number!!Schematics!!Boardview!!Comment
|-
|820-1888||✅||✅||
|-
|820-1919||✅||✅||
|-
|820-1960||✅||✅||
|-
|820-1984||✅||✅||
|-
|820-2031||✅||✅||
|-
|820-2052||✅||✅||
|-
|820-2090||✅||✅||
|-
|820-2110||✅||✅||
|-
|820-2143||✅||✅||
|-
|820-2223||✅||✅||
|-
|820-2301||✅||✅||
|-
|820-2347||✅||✅||
|-
|820-2491||✅||✅||
|-
|820-2494||✅||✅||
|-
|820-2507||✅||✅||
|-
|820-2542||❌||❌||Use 820-2347.
|-
|820-2641||✅||✅||
|-
|820-2733||✅||✅||
|-
|820-2784||✅||✅||
|-
|820-2828||✅||✅||
|-
|820-2901||✅||✅||
|-
|820-3126||✅||✅||
|-
|820-3172||✅||❌||Some sections similar to 820-3302.
|-
|820-3298||✅||✅||
|-
|820-3299||✅||✅||
|-
|820-3302||✅||✅||
|-
|820-3478||✅||✅||
|-
|820-3481||❌||❌||Use 820-3478 (1GB/4 chips VRAM vs. 2GB/8 chips VRAM for 820-3481), or 820-3299 for GPU area.
|-
|820-3482||✅||✅||
|-
|820-3588||✅||✅||
|-
|820-4652||✅||✅||
|-
|820-4668||✅||✅||
|-
|820-5029||✅||❌||Use 820-4652 (M290 vs. M295X on 820-5029). Minor differences in GPU area.
|-
|820-00034||✅||✅||
|-
|820-00134||✅||✅||
|-
|820-00291||✅||✅||
|-
|820-00292||✅||❌||Use 820-00134.
|-
|820-00430||✅||❌||Use 820-00034.
|-
|820-00431||✅||✅||<s>Some sections near I/O ports vaguely similar with 820-3588.</s>
|-
|820-00597||✅||✅||
|-
|820-00609||✅||✅||XinZhiZao have boardview. Some sections similar to 820-00134.
|-
|820-00629||✅||❌||Some sections vaguely similar with 820-00034.
|-
|820-00967||✅||❌||
|-
|820-01061||❌||❌||Use 820-00597.
|-
|820-01069||❌||❌||Some sections vaguely similar with 820-00034.
|-
|820-01134||❌||❌||Use 820-00609.
|-
|820-01236||❌||❌||Available in XZZ board view database
|-
|820-01823
|❌
|❌
|Available in XZZ board view database
|-
|820-01799
|❌
|❌
|Available in XZZ board view database
|-
|820-01237||❌||❌||
|-
|820-01779||✅||✅||
|-
|820-01823||✅||✅||
|}
==Mac mini==
{| class="wikitable"
!Board number!!Schematics!!Boardview!!Comment
|-
|820-1900||❌||❌||
|-
|820-2366||❌||❌||
|-
|820-2577||❌||❌||
|-
|820-2993||✅||❌||
|-
|820-3017||✅||❌||
|-
|820-3059||✅||❌||
|-
|820-3227||✅||❌||
|-
|820-3228||✅||❌||
|-
|820-5509||✅||❌||
|-
|820-00939||✅||✅||No real boardview, component placement diagram only. Correct boardview available in XinZhiZao.
|-
|820-02091||❌||❌||
|}
==Mac Pro==
No Mac Pro schematics or boardviews are known to be available.
q1n6s8ecg0ng2zfkfl3mkh32u6nhsjo
Schematics and boardviews availability
0
1814
5331
2020-12-13T03:52:57Z
Chrisb
1
Chrisb moved page [[Schematics and boardviews availability]] to [[Schematics and Boardviews Availability]]
5331
wikitext
text/x-wiki
#REDIRECT [[Schematics and Boardviews Availability]]
e2xqb4ni06waejwhsv3rvflzeiotdmu
Screen Compatibility
0
271
1691
709
2020-09-13T12:59:03Z
Chrisb
1
Changed redirect target from [[LCD Screen Compatibility]] to [[MacBook LCD Screen Compatibility]]
1691
wikitext
text/x-wiki
#REDIRECT [[MacBook LCD Screen Compatibility]]
dn90i743yqffztf868sifg0qecsggvc
Serato
0
2100
6296
6294
2021-12-08T19:09:31Z
Chrisb
1
6296
wikitext
text/x-wiki
[https://support.serato.com/hc/en-us/articles/115003575747-KNOWN-ISSUE-Toggling-WiFi-during-playback-can-result-in-an-audio-dropout-followed-by-large-latency Turning off wifi] can fix lag issues
[https://support.serato.com/hc/en-us/articles/204865694 Compatibility chart] for macOS and Serato
cvb19jw4s11j5guocxfrpd2jk6z0b4o
Shutdown causes
0
810
6889
6540
2023-08-09T17:52:45Z
Pingastron
998
Fix Bug
6889
wikitext
text/x-wiki
'''Shutdown Causes in Mac OS'''
If you are having shutdown problems, use this command in the main user to find out the error codes, you can change the time to 1h, 24h, 72h or 2w or 1M or even " 1Y " the codes are generated in the terminal app. after that, collect the generated code and check the main errors in the table below, after the system crashes or recovers from a panicfull: <syntaxhighlight lang="bash">
log show --predicate 'eventMessage contains "Previous shutdown cause"' --last 24h
</syntaxhighlight>This command is used if the mac does not recover after going to sleep or before going to sleep. Works for other occasions too ... you can also try this other command:<syntaxhighlight lang="bash">
log show --predicate 'eventMessage contains "Previous sleep cause"' --last 24h
</syntaxhighlight>Error codes:<br />
{| class="wikitable"
|'''Code'''
|'''Description'''
|'''Notes and Possible Solutions'''
|-
|7
|thread cpu failure
|If this occurs during boot, try Safe Mode by holding on boot to limit what opens during boot. If while using the app, see if there is an update for the app by the developer, and leave a comment below with the app name and your Mac model.⇧shift
|-
|5
|Correct shut down
|Is it a 'clean' shutdown or hibernation by the user
|-
|3
|Hard shut down
|Iresulting from a hard reset or shutdown, check the power button and make sure it is not stuck, etc.
|-
|0
|Power disconnected
|AC power supply failure, check power supplies: cables, plug, magsafe. On a MacBook, this could be a battery issue, or battery controller (logic board). Try an SMC reset first or a battery replacement!
|-
|<nowiki>-3</nowiki>
|Multiple temperature sensors exceeded the defined limit.
|Run Apple Hardware Test or PC Doctor. Check fans/airflow/thermal paste.
|-
| -14
|Electricity spike/surge.<br />
|On Mac Pro, this can indicate an electricity issue to the built-in power supply, or an issue with the power supply itself
|-
| -20
|Shutdown was initiated by BridgeOS T2.
|The T2 chip has initiated a shutdown.
|-
|<nowiki>-60</nowiki>
|Bad master directory block (badMDBErr).
|corrupted system or storage, Do not continue using the system, or you may experience data loss: Backup data to Time Machine, completely erase the disk and reinstall macOS system..
|-
|<nowiki>-61</nowiki>
|Watchdog timer detected unresponsive application, shutting down the system.
<br />
|Probably an application issue. Retry in Safe Mode, investigate stuck applications, investigate startup programs. Run MalwareBytes scan.
|-
| -63
|
|it could be the USB controller or another T2 related USB hardware issue. Check kernel logs to confirm
|-
|<nowiki>-62</nowiki>
|Watchdog timer detected unresponsive application, restarting the system.
|Same as -61, except the machine will restart automatically instead of shutting down.
|-
|<nowiki>-65</nowiki>
|
|Potentially linked to OSX issue. Try reinstalling macOSX from a clean install on an external drive.
|-
|<nowiki>-71</nowiki>
|SO-DIMM Memory temperature exceeds limits.
|Try to reset the smc, if not, check the memory if possible replace it to see if the problem persists. If so, check the logic board for oxidation or dust.
|-
|<nowiki>-74</nowiki>
|Battery temperature exceeds limits.
|Perform SMC Reset. Possible need for battery replacement?
|-
|<nowiki>-75</nowiki>
|Communication issue with AC adapter.
|Use an official Apple power adapter. If on a USB-C model, try charging with the ports on the opposite side (to test port failure on one side).
|-
|<nowiki>-78</nowiki>
|Incorrect current value coming from AC adapter.
|Use an official Apple power adapter. Check building power/current at wall?
|-
|<nowiki>-79</nowiki>
|Incorrect current value coming from battery.
|Check the battery connection. Check battery cycles (may simply need replacement).
|-
|<nowiki>-86</nowiki>
|Proximity temperature exceeds limits.
|Check fans/airflow/thermal contact and thermal paste.
|-
|<nowiki>-95</nowiki>
|CPU temperature exceeds limits.
|Check fans/airflow. Check thermal paste between heatsink. Reset SMC.
|-
|<nowiki>-100</nowiki>
|Power supply temperature exceeds limits.
|Try resetting the smc, if that doesn't work, check the fans/airflow on the iMac. Check the magsafe on the MacBook for dirty, oxidized or burnt and remove MagSafe 1 to 2 or similar if in use.
|-
| -102
|overvoltage
|Safety shutdown related to AC or Battery overvoltage protection
|-
|<nowiki>-103</nowiki>
|Battery cell under voltage detected.
|Replace the battery.
|-
|<nowiki>-104</nowiki>
|
|Possible battery issue? Try a complete charge cycle, or Apple Diagnostics before replacing.
|-
|<nowiki>-108</nowiki>
|
|Probably memory related? Could be running out of RAM (and Paging fails). Can occur during sleep.
|-
|<nowiki>-112</nowiki>
|
|Probably memory related? If on 2012-2013 15” MBP, probably GPU related. Usually occurs alongside -128.
|-
|<nowiki>-127</nowiki>
|PMU forced shutdown.
|Possibly fine if you performed a hard shutdown? If not, check power button (make sure it isn’t stuck).
Otherwise, could be a logic board issue.
|-
|<nowiki>-128</nowiki>
|
|possibly the battery is at the end of its life, but it can also occur when the SMC initiates an automatic reboot after a kernel panic. occurs similar to -112.
|}
[https://www.ifixit.com/Document/QnLHENMgvZ6mD6D1/Shutdown-Causes.pdf (via ifixit]
<references group="https://georgegarside.com/blog/macos/shutdown-causes/" />https://georgegarside.com/blog/macos/shutdown-causes/
<small>''<sub>Almost every day I use this page to be able to diagnose my services, thanks to everyone who contributed to this site. Ad Victoriam!</sub>''</small>
''<small><sub>by Pingas</sub></small>''
[[Category:Mac]]
[[Category:MacBook]]
[[Category:Troubleshooting Guide]]
6tr9bgjjdfbkdsfw7vksqptooee1xeb
Single user mode
0
58
6808
6420
2023-04-05T16:54:52Z
AMK9000
627
added Catalina to the header of the split volumes instructions
6808
wikitext
text/x-wiki
Booting into single user mode will allow you to run terminal commands with full access to the file system. After running your commands simply type in reboot.
NOTE: before having write access you will need mount the root volume as read/write
*mount -uw /
==Create a new user in Single User Mode (This creates a new Administrator Account)==
You can create a new administrator account by restarting the Setup Assistant:
#Boot into Single User Mode: Start/restart your Mac. As soon as you hear the startup tone, press and hold <kbd>⌘</kbd> + <kbd>S</kbd> until you see a black screen with white lettering. (If you end up back on the login screen after a flash of the black screen with white lettering, enter your password and it will return to the black screen.)
#Mount the drive by typing <code>/sbin/mount -uw /</code> then <kbd>↩ enter</kbd>.
#Remove the Apple Setup Done file by typing <code>rm /var/db/.AppleSetupDone</code> then <kbd>↩ enter</kbd>.
#Reboot by typing <code>reboot</code> then <kbd>↩ enter</kbd>.
#Complete the setup process, creating a new admin account.
With macOS Catalina, the APFS volume scheme is a little different. Change step 2 to <code>/sbin/mount -uw /System/Volumes/Data</code> . Continue to step 3.
<br />
==Creating a new user with macOS Catalina, Big Sur and Monterey using Terminal in recovery mode.==
It appears that with Big Sur, you loose Admin privileges in single user mode. So in order to delete the Apple Setup Done file, we now have to boot into Recovery mode first and use Terminal to carry out our command. Very similar to the above method of removing the file .AppleSetupDone, we need to locate the db folder in the Macintosh HD Data partition. With macOS Big Sur and Monterey, the db folder has now been relocated in an additional "private" folder.
#First, Boot into Recovery Mode with CMD+R
#Access Disk Utility and mount the Data volume. Should be called Macintosh HD - Data
#Close Disk Utility and open Terminal.
#From terminal enter this the new command. <code>rm /Volumes/Macintosh\ HD\ -\ Data/private/var/db/.AppleSetupDone</code> then enter.
#Reboot by typing <code>reboot</code> then enter
#Complete the setup process, creating a new admin account.
More information on this method can be found here. https://discussions.apple.com/docs/DOC-250002676
<br />
==Delete test account in Single User Mode (This removes any test acct and creates a new Admin acct)==
#<kbd>⌘</kbd>+<kbd>S</kbd>
#<code>/sbin/mount -uw /</code>
#<code>cd /var/db/dslocal/nodes/Default/users/</code>
#<code>rm test.plist</code>
#<code>rm -rf /Users/test</code>
#<code>rm /var/db/.AppleSetupDone</code>
#<code>reboot</code>
With macOS Catalina, the APFS volume scheme is a little different. Change step 2 to <code>/sbin/mount -uw /System/Volumes/Data</code> . Continue to step 3.
[[Category:Mac]]
p4q4dehdlsefijx7ugiz04vqvwysg9w
Software Sensor Readings
0
698
5978
5977
2021-08-04T14:57:20Z
ProMoe
502
/* Macbook Pro Retina 13" 2015 (820-4924) */
5978
wikitext
text/x-wiki
page needs user contributions. If you have one of these machines in fully-working condition, please consider adding your values
==Macbook Air 13" 2015-2017 (820-00165)==
[[File:820-00165_2015_IStat_menu.png|x750px]]
[[File:820-00165_2015_HWmonitor.png|x750px]]
==Macbook Pro Retina 13" 2015 (820-4924)==
13", 2015, 2.7 i5, 8GB, 128GB
Battery cycle 1026
MacOS 10.15.7<br />
[[File:Screen Shot 2021-08-04 at 4.57.13 PM.png|x750px|alt=]]
[[File:Screen_Shot_2021-08-04_at_5.40.47_PM.png|x750px]]
HWSensors version: 6.26.1440
Stats version: 2.6.3
==Macbook Pro Retina 15" 2015 iGPU (820-00138)==
to be added
==Macbook Pro Retina 15" 2015 dGPU (820-00163/820-00426)==
[[File:2015 A1398 gDPU HWmonitor.png|x750px]]
'''Note: Do know, with nothing but external monitor connected, and usb or ssd testing operating system, the heatpipe air sensor readings will be 128C. It is most likely not an actual sensor issue. Verify with good trackpad connector, and or trackpad.'''
<br />
fs516063i581udtldi52tpqu1ldd7ae
Soldering Stations
0
1742
5168
5147
2020-10-29T00:18:51Z
Chrisb
1
Chrisb moved page [[soldering stations]] to [[Soldering Stations]] without leaving a redirect
5147
wikitext
text/x-wiki
-Recommended stations at different price points and use cases
-hot tweezers
-micropencil
-tips and tips
n8feq96q905fomt1ocjqz61j66t6gtc
Start Up Manager
0
1433
3166
3165
2020-10-10T22:21:05Z
QuiveryNut
206
Added hyperlinks
3166
wikitext
text/x-wiki
Key Combination: Hold '''Option''' on start
Start Up Manager allows you to boot from an external device, whether that be a USB Flash Drive, External Hard Drive, or with more recent machines over the Network via [[Netboot]]. If your desired disk isn't showing up, newer machines don't show devices that use [[Option ROM]] Firmware until you load their firmware. To do so, press '''Option + Shift + Command + Period''' while in startup manager. If a firmware password is in use, the ability to load [[Option ROM]] Firmware devices is disabled.
ptoq70mnc7ktovswsw041awv5r7mfmi
Startup Keys
0
55
5420
3162
2020-12-25T01:25:27Z
Joesipaq
20
formatting
5420
wikitext
text/x-wiki
==Modern (Intel) Macs==
NOTE: Macs with a firmware password will not allow booting from a different volume without password. They will not PRAM.
===<u>Recovery:</u>===
*Command + R: Start up from built in [[Recovery Mode|recovery mode]].
Macs upgraded to macOS 10.12.4 or later:
*Option + Command + R: Start up from latest [[Internet Recovery|internet recovery]] compatible with your Mac.
*Shift + Option + Command + R: Start up from [[Internet Recovery|internet recovery]] closest to original macOS that came with your Mac.
Macs not upgraded to macOS 10.12.4 or later:
*Option + Command + R: Start up from internet recovery closest to original macOS that came with your Mac.
===<u>Resets:</u>===
====PRAM Reset:====
*Option + Command + P + R: Reset [[NVRAM]]/[[PRAM]]. This will reset screen brightness, volume, default boot drive to first available storage device (usually internal HDD/SSD), Bluetooth/WiFi settings, Find My [Mac] token, display resolution, and Gpu selection.
====SMC Reset:====
*Left Control + Left Option + Right Shift + Power (7-45 seconds) - For Notebooks with T2 Chip
*Left Shift + Left Control + Left Option + Power -For Notebooks with non-removable battery and no T2
*All others - Discharge machine
===<u>Diagnostic:</u>===
*Option: Use the [[Start Up Manager]]. Newer Macs allow WiFi booting and selection of [[NetBoot]] volumes from this screen.
*Shift: Start up in [[safe mode]].
*D: Start up the build in [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|Apple Hardware Test (AHT)]].
*Option + D: Start up the internet [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|Apple Hardware Test (AHT)]].
*N: Start up from the last or default [[NetBoot]] volume.
*Option + N: Start up from the default [[NetBoot]] volume.
*Command + S: Start up in [[Single user mode|single user mode]].
*T: Start up in [[Target Disk Mode|target disk mode]].
*Command + V: Start up in [[Verbose Mode|verbose mode]].
*Eject, F12, or pointer button: Eject removable devices.
*C: Boot from optical drive.
[[Category:Mac]]
27q0765q6kh2ylp72xutgvkageuwvaj
Steam Deck
0
2192
6628
2022-09-19T14:10:38Z
Kroman
522
added Steam Deck page, and image screenshot of diode readings I took with three different multimeters.
6628
wikitext
text/x-wiki
'''<big>Steam Deck 512GB USB-C Charge Port Diode Readings</big>'''
[[File:Steam Deck 512GB Diode Readings.png|thumb|alt=|left|Steam Deck 512GB Diode Readings]]
<br />
[[Category:Game Consoles]]
hq64eqhfd4oke8nifb09dffohi48z2o
Stencils
0
1745
5306
5235
2020-12-06T18:44:04Z
Chrisb
1
5306
wikitext
text/x-wiki
iPhone Stencils
[[MacBook Stencils]]
<br />
objhgx9gx3yumsjr8srkg75xxc44ob2
Stuck System Upgrades
0
740
1568
2020-08-28T17:14:10Z
Chrisb
1
Created page with "If you encounter a Mac that is stuck on the loading screen * Check the disk first with [[DriveDX]]. * Check to see if the storage and [[hard drive cable]] are good. The impo..."
1568
wikitext
text/x-wiki
If you encounter a Mac that is stuck on the loading screen
* Check the disk first with [[DriveDX]].
* Check to see if the storage and [[hard drive cable]] are good. The important [[SMART]] stats to look at are [[sector errors]]<nowiki/>and [[CRC errors]].
* Use [[Disk Utility]] to run first aid. If you get anything other than OK and "Operation Successful" there is an issue that needs to be repaired before moving on
* Hold the Shift key to boot to [[safe mode]]. Type in the password. Reboot when done
jasnjskmn4ga47rtiyhxx3ihu2o7x2i
T1 MacBook WiFi IC Replacement
0
1884
5558
5554
2021-02-08T21:59:43Z
Chrisb
1
5558
wikitext
text/x-wiki
In the event a WiFi IC is internally shorted on a MacBook Pro with a T1 processor (2015-2017), you must replace the WiFi IC as well as the WiFi ROM and Bluetooth ROM from a matching donor board. The WiFi IC U3700, WiFi ROM U3780, and Bluetooth ROM U3770 are paired together and all 3 chips must be transferred together in order to restore WiFi Functionality.
Below I have provided images from an 820-00840-A Logic board that had a short on PP3V3_s5 inside of the U3700 WiFi IC.
[[File:WiFi Replacement.jpg|thumb|When Replacing U3700, U3770 and U3780 must be transferred as well.]]
<br />
[[File:WiFi Error.jpg|thumb|Error in System Information if ROM chips are NOT transferred.]]
If you ONLY migrate the Wifi IC U3700, the MacBook will acknowledged the presence of the WiFi IC, however, WiFi will NOT work and report NULL under System Information.
Replacement WiFI IC has to come from matching donor board, similar to SMC Replacements on older MacBooks. Do not use an iPad Air WiFi IC as it does not have the firmware provided by the WiFI ROM to properly function.
In theory, you may be able to dump the firmware of a donor WiFi ROM and Bluetooth ROM to the patient ROMs. However you still have to transfer the WiFi IC from the donor board where you would be getting the ROM dumps from, so you might as well just transfer the ROM chips instead.
65e0yucwe3lqdzv6uvpysyjmfre23h3
T2 Chip Compatibility
0
2213
6745
2023-02-14T03:51:28Z
Alan.l
19
Created page with "T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1T..."
6745
wikitext
text/x-wiki
T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage
T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1TB , 2TB , 4TB , 8TB of Storage
aooesphzn09stgxvswtp8bvq2y6vjbi
T2 Diagnostics and repair
0
2242
7603
7601
2024-08-12T02:57:42Z
Muerto
527
Add more information.
7603
wikitext
text/x-wiki
[[File:DALL-E T2.png|thumb]]
=== T2 General information ===
T2 serves the purpose of SIO/EC, Camera, ALS, Touch ID, Audio, DFR (Touch Bar), SSD, Encryption, and ESPI Controller. It also controls all temp sensors, peripherals (keyboard/touchpad), and CD3215/CD3217 PD communication.
T2 starts iBoot from SoC ROM SPI Flash chip, which initializes its SMC instructions to proceed with the power sequence. Once initialized, it turns on the PP3V3_G3H power supply and NAND power to proceed with BridgeOS firmware, which is stored on the SSD drive. Once booted, it initializes the Intel power sequence and feeds Intel EFI via the eSPI interface to PCH.
Serial number and battery charging statistics, as well as "NVRAM" configuration, are also stored in this SPI Flash.
There are two types of T2 with two types of DDR chips each. T2 does not need DDR to boot iBoot and will be responsive in DFU.
Most devices have a "slim" version of the chip with the same size of memory, and the T2 chip itself. 2018 and 2019 MacBook Pro 2TB models have larger T2 and T2 PMIC (Calpe chips).
Known types of RAM + APL number:
* APL1027 (T2 itself)
* 339S00467 - 2GB
* 339S00533 - 1GB
Known Ram codes(apl code does not match one in BOM table, so there might be other variants):
- H9HKNNN8KUMUVR - 1GB Hynix Chip.
- D9LVN - Micron 1GB
- H9HKNNNBRUMUVR - Hynix 2GB
=== Power System(CALPE) ===
T2 is powered by an Apple proprietary power IC named Calpe. This IC serves as the power supply for T2, PCH, and even SSD on 13" models with 2 SSD chips populated.
This chip needs PP3V3_G3H_RTC as its first power input. Like any SIO, it has a few internal LDO supplies and an external clock generator. There is also a secondary input that often gets corroded with high humidity. HI_DRV is more of a voltage sensor (it takes power directly through a voltage divider from PPBUS).
3V3_G3H_RTC to 3V3_G3H switch happens once iBoot is loaded. VDDMAIN_EN turns on 3V3_G3H/5V_G3S power supply. There are 3 Enable inputs, like in many such power controllers, which are used depending on the particular board design. Markings in schematics indicate that on desktops there might be a different enable sequence.[[File:Calpe LDO and Bypass.png|none|thumb|1153x1153px|As you may see 3V3_G3H_RTC enters in the left side. per default internal MosFET is turned on, which sends 3V3_G3H_RTC to 3V3_G3H_RTC_SOCPMU(3V3_G3H alias). Once T2 starts communicating with Calpe, it issues PMU_VDDMAIN_EN to 3/5v supply and disables bypass. ]]
If clicking the trackpad produces haptic feedback, it indicates that the 5V_G3S supply is functional, allowing you to shortcut diagnostics for this part. Similarly, a power consumption of 0.01A suggests a fault either in the iBoot phase or in the early power supplies.
for more detailed [[:File:820-01055 Power Sequence.pdf|power sequence, refer to a big diagram]].
=== iBoot / BridgeOS DFU mode, revive/restore, SEP ROM ===
DFU is a firmware flash mode that keeps the machine completely off. In this mode T2 can boot externally from ramdisk provided via usb cable. It can be triggered either by keyboard combination (most unreliable), jumper (1.8V jumped to FORCE_DFU line on power-up), or cleaning SoC ROM (requires serial number injection after restore).
If the SSD is replaced or there's corruption in iBoot/BridgeOS, restore may be a good diagnostic step.
If during restore the device reaches the S0 step with full PCH/CPU power and fan spin, it's mostly safe to say that the T2 part is fine. In some cases, SSD corruption may cause the device to power on only once and then revert to its original state.
SEP ROM is a separate chip near the T2 that contains SEP(Secure Enclave Processor) firmware. You can safely take this ROM from donor board if corruption suspected. Its corruption can cause DFU error 9 (failed to create/find/initialize BridgeOS partition).
refer to the [[DFU Mode Restore (Macs)]] page for more detailed information
=== CD3215/17 PD ===
corrupted iBoot and stuck T2 might cause PD malfunction. However it is important to mention that 5v-20v switch does not need T2 on board to happen on some boards. This will look like super-fast switching, without 2-3 seconds of 5V 0.2A phase. So if T2 is present but not booted, it will proactively prevent 20V switch
[[CD3215 Bootup Sequence]]
[[CD3217 and T2 Power on Sequence]]
=== Data recovery possibility using AST2 (AASP only) ===
if you find competent and reliable AASP provider, they might help you to extract data from the device. There is a tool called "Data Transfer toolkit" which switches T2 into deeper target disk mode. In this mode SSD will be mounted as a normal target disk using minimal usb 2.0 interface and intel part is not turned on. AASP data toolkit will byteclone whole drive to the external drive. The tool is configured the way it will encrypt the drive with device's SN.
The process requires AST2 access. AASP tech opens a ticket in Atlas(?) and after it is approved he is able to download utility.
Most likely it loads some custom signed iboot image to T2 so there is close to zero chance it will be available any time soon.
=== Transferring T2 to another board ===
if you need to move T2 to another board, you need to check if DDR size matches the SSD size of the recipient. You also need to move SoC Rom or you will get problem with activation / there will be error -3400F on loading recovery(if target SoCRom is clean)
=== Soldering ===
T2 is a sandwich chip. It is quite important to remove it in a way that the RAM layer won't be separated from T2 itself. To keep it from separating, you can put some UV glue on the edge before removing the chip.
Use a preheater (board to 130-150C) and a big nozzle to keep the temperature more or less even.
There are a few jigs (Amaoe / SoFix) as well as separate stencils.
The most consistent result I got was with an Amaoe jig + 0.25 mm PMTC solder balls. If you have to reball RAM, it might be a good idea to put 213C or even 260C solder paste on the RAM layer, so when you solder T2 with RAM on it, it won't even try to melt and separate.
It is normal that after soldering, DDR corners might lift a little bit. Unless you see actual solder ball separation/blob, there is nothing yet to worry about. Check for DDR power supply short if corners look suspicious before reballing the T2.
Reballing DDR is somewhat difficult if you have a lack of solder on the T2 side. You can fill holes with soldering paste, heat it up, then repeat until you have a consistent size of balls. However, in most cases, you will have to cut plastic support around balls to form a proper pattern.
[[File:T2 Ram balls.png|none|thumb|T2 DDR Ball support]]
[[File:balls cut.png|none|thumb|Plastic frame cut on iphone CPU (Photo by A.Lisochenko, logi.wiki community)]]
Pinout chart if you got ram reballing(Credits to leshuq) and some pins are ripped/damaged.
[[File:t2ram.png|508x508px|Diagram]]
T2 Footprint pattern in very prone to short circuit. there is a checkmate pattern in the middle between ground and DDR power supply. Do not move the chip to sides to make it settle, but rather gently tap on top of it with tweezers. Once chip is cooled down, measure resistances:
PPVDDCPU_AWAKE 10-15 Ohm
PP0V82_SLPDDR 30-40 Ohm
PPVDDCPUSRAM_AWAKE 100-120 Ohm
PP1V1_SLPS2R 1-2 kOhm
PP0V9_SLPDDR 40 Ohm
PP1V8_SLPS2R 4 kOhm
== T2 SoCROM Programming ==
The T2 SoCROM is a 1.8v 8-USON (or USON8) 4x3mm package. This is different from the Thunderbolt ROM SPIROM, which uses a 8-USON (or USON8) 2x3mm package.
Tools like the T203 are essentially a customized CH341a programmer that only supports 1.8V on both VCC and the data lines, with a USON8 4x3mm socket attached. This is similar to many other expensive programmers. Do not purchase them.
To dump and program the T2 SoCROM, a standard CH341a is sufficient. However, you’ll need to use either a 1.8v level shifting board or a CH341a v1.7, which has built-in level shifting that can be adjusted with a switch. A USON8 4x3 socket can be purchased easily from AliExpress ([https://www.aliexpress.com/item/1005007137888078.html XGECU Official Store]) very inexpensively, this also applies to the CH341a programmer. Softwares that support the CH341a are NeoProgrammer, and AsProgrammer. If you want to go more fancy on a programmer, you can purchase either an XGecu T48, or T56 which both natively support 1.8v.
'''Some notes on the serialization block:'''
[[File:socrom example.png|diagram]]
Starting at offset 0x28A000h, there is a 4-byte signature of 67664353h. Byte 5 (E0h) specifies the store size, which can be determined by extracting a segment beginning at 0x28A000h with a length of E0h. This allows for the extraction of the entire store. I'm unaware of whether the block always starts at 0x28A000h.
Within the store, there are some key signatures of interest. The first is 6D4E7253h (If we flip the endianess of plaintext it translates to SrNm, or SerialNumber) located at 0x28A040h, which indicates the System Serial Number (SSN). The following 12 bytes (0C in length) contain the serial number, where the last four digits of these 12 represent the hardware configuration code (HWC), the serial number should always be 12-bytes (0Ch) in length, and seems to always be terminated by zeroes (00h).
The second signature were interested in is 23646F4Dh (Again, if we flip the plaintext endianess it translates to Mod#, which I assume is ModelNumber) located at 0x28A054h, which identifies the System Order Number (SON). The size of this variable varies, but it is consistently terminated by at least two 00 bytes or more (0000h).
The last signature of interest is 6E676552h (Endianess flipped this translates to Regn, or RegistrationNumber?) located at 28A07Ch, which is the final part of the System Order Number, if we concatinate these two pieces of data it comes out as MVVL2B/A, which is correct in my case since the firmware dump came from a MacBook Pro 16" 2019.
n2pkatz4pmqbq5mr690tiqi8je30ncy
T2 MacBook WiFi IC Replacement
0
1886
5559
5557
2021-02-08T22:00:25Z
Chrisb
1
5559
wikitext
text/x-wiki
Very similar to replacing the WiFI IC on a T1 MacBook Pro, you will need a donor board with a donor WiFi along with its two married components. Transfer the 3 chips and WiFi will work again with a new chip.
[[File:T2 WiFi IC Replacement.jpg|thumb|Replace WiFI iC, BT Serial Flash, WiFi EEPROM (Rico Cerva)]]
Credit to Rico Cerva. [https://instagram.com/federicocerva instagram.com/federicocerva]
gp23u02x2g5w5gklvpzkilpioi3vqsn
T2 Soldering Tutorial
0
2240
6918
6916
2023-09-25T16:48:52Z
Alex6337
28
Remove everything -> Unuseful or not checked info...
6918
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
T2 and CD3215 Power on Sequence
0
1749
5184
2020-11-04T02:02:05Z
Chrisb
1
Chrisb moved page [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]]: Accuracy
5184
wikitext
text/x-wiki
#REDIRECT [[T2 and CD3217 Power on Sequence]]
886kc6m30vtc32z6n63hstdsq19uipe
T2 and CD3217 Power on Sequence
0
2084
6230
2021-11-15T11:22:37Z
Francis
4
Francis moved page [[T2 and CD3217 Power on Sequence]] to [[CD3217 and T2 Power on Sequence]]: Changed formatting of title to be similar to CD3215 page to find it easily
6230
wikitext
text/x-wiki
#REDIRECT [[CD3217 and T2 Power on Sequence]]
lpzia3sfpsupuc7vbezn8lawq8hoepd
TODO
0
695
1419
2020-07-12T23:19:52Z
Chrisb
1
Chrisb moved page [[TODO]] to [[1 TODO]]
1419
wikitext
text/x-wiki
#REDIRECT [[1 TODO]]
aax0ep2qst81e2szfc4s8wd3urex46x
Target Disk Mode
0
57
579
409
2020-02-02T11:36:41Z
Piernov
10
Category Mac
579
wikitext
text/x-wiki
Booting a Mac into target disk mode allows the internal storage to show up on another Mac as external storage.<BR>
The following will work with target disk mode:
*Thunderbolt 1-3
*USB C
*Firewire
NOTE: A1342 do not have any target disk mode capable ports.
[[Category:Mac]]
2m9clmpbkalx605l5v8b7cgwp20lnci
Terminal Commands Cheat Sheet
0
741
1569
2020-08-28T17:19:57Z
Chrisb
1
Created page with "===Shortcuts=== {| class="wikitable" !Key/Command !Description |- |Tab |Auto-complete files and folder names |- |Ctrl + A |Go to the beginning of the line you are currently ty..."
1569
wikitext
text/x-wiki
===Shortcuts===
{| class="wikitable"
!Key/Command
!Description
|-
|Tab
|Auto-complete files and folder names
|-
|Ctrl + A
|Go to the beginning of the line you are currently typing on
|-
|Ctrl + E
|Go to the end of the line you are currently typing on
|-
|Ctrl + U
|Clear the line before the cursor
|-
|Ctrl + K
|Clear the line after the cursor
|-
|Ctrl + W
|Delete the word before the cursor
|-
|Ctrl + T
|Swap the last two characters before the cursor
|-
|Esc + T
|Swap the last two words before the cursor
|-
|Ctrl + R
|Lets you search through previously used commands
|-
|Ctrl + L or Command + K
|Clears the Screen
|-
|Ctrl + C
|Kill whatever you are running
|-
|Ctrl + D
|Exit the current shell
|}
===Core Commands===
{| class="wikitable"
|cd
|Home directory
|-
|cd [folder]
|Change directory
|-
|cd ~
|Home directory, e.g. ‘cd ~/folder/’
|-
|cd /
|Root of drive
|-
|ls
|Short listing
|-
|ls -l
|Long listing
|-
|ls -a
|Listing incl. hidden files
|-
|ls -lh
|Long listing with Human readable file sizes
|-
|ls -R
|Entire content of folder recursively
|-
|sudo [command]
|Run command with the security privileges of the superuser (Super User DO)
|-
|open [file]
|Opens a file
|-
|open .
|Opens the directory
|-
|top
|Displays active processes. Press q to quit
|-
|nano [file]
|Opens the Terminal it’s editor
|-
|pico [file]
|Opens the Terminal it’
|Exit
|-
|clear
|Clear screen
|}
===Command History===
{| class="wikitable"
|history n
|Shows the stuff typed – add a number to limit the last n items
|-
|ctrl-r
|Interactively search through previously typed commands
|-
|![value]
|Execute the last command typed that starts with ‘value’
|-
|!!
|Execute the last command typed
|}
===File Management===
{| class="wikitable"
|touch [file]
|Create new file
|-
|pwd
|Full path to working directory
|-
|..
|Parent/enclosing directory, e.g.
|-
|ls -l ..
|Long listing of parent directory
|-
|cd ../../
|Move 2 levels up
|-
|.
|Current folder
|-
|cat
|Concatenate to screen
|-
|rm [file]
|Remove a file, e.g. rm [file] [file]
|-
|rm -i [file]
|Remove with confirmation
|-
|rm -r [dir]
|Remove a directory and contents
|-
|rm -f [file]
|Force removal without confirmation
|-
|rm -i [file]
|Will display prompt before
|-
|cp [file] [newfile]
|Copy file to file
|-
|cp [file] [dir]
|Copy file to directory
|-
|mv [file] [new filename]
|Move/Rename, e.g. mv -v [file] [dir]
|}
===Directory Management===
{| class="wikitable"
|mkdir [dir]
|Create new directory
|-
|mkdir -p [dir]/[dir]
|Create nested directories
|-
|rmdir [dir]
|Remove directory ( only operates on empty directories )
|-
|rm -R [dir]
|Remove directory and contents
|}
===Pipes – Allows To Combine Multiple Commands That Generate Output===
{| class="wikitable"
|more
|Output content delivered in screensize chunks
|-
|> [file]
|Push output to file, keep in mind it will get overwritten
|-
|>> [file]
|Append output to existing file
|-
|<
|Tell command to read content from a fi
|}
===Help===
{| class="wikitable"
|[command] -h
|Offers help
|-
|[command] —help
|Offers help
|-
|[command] help
|Offers help
|-
|reset
|Resets the terminal display
|-
|man [command]
|Show the help for ‘command’
|-
|whatis [command]
|Gives a one-line description of ‘command’
|}
Source: https://gist.github.com/poopsplat/7195274.js
durjg29vaddx77wskqa12hp4b3bmbzc
Thermal Cameras
0
2083
6226
6223
2021-11-14T21:25:21Z
Inwerp
16
6226
wikitext
text/x-wiki
'''1. HT-A2 + ZnSe Focal Lens'''
*I ordered the camera directly from Aliexpress - https://www.aliexpress.com/item/32963919097.html?spm=a2g0s.9042311.0.0.413e4c4dW0lD8P the HT-A2 Camera is a standalone smartphone-like device with IR sensor resolution 320x240px. it also has camera for combined mode (like many of quanli cameras), howerver with this mod image is sharp enough to turn normal camera completely off.
*
*Please be advised that this camera is not capable of recording video, keep this in mind if capturing video is important for your work. It can only capture photos.
*
*Lens used in the example - ZnSe Focal Lens, 20mm Diameter, 50.8mm Focus Lenght
*
*Lens adapter used in the example (by OZ2CPU) - https://www.thingiverse.com/thing:4964427/files (Requires glue)
[[File:Combined Examples.png|thumb|alt=|none|600x600px]]<br />
bo0ri3ds03i3nwqdhy1iel2s15cw7v5
Throttling
0
1873
6024
5651
2021-08-25T18:44:12Z
Piernov
10
820-2936 battery
6024
wikitext
text/x-wiki
Throttling (arbitrary frequency limitation of the CPU) happens when a [[Software Sensor Readings|sensor]] is reading bad, a bad battery is used or battery is absent. The machine becomes slow but not always totally unusable. Youtube video playback can become choppy at higher resolutions, moving cursor halts video, etc... The CPU temperature won't go up in most cases (and the fan will either stay quite low or ramp up fully).
*To find missing sensors, use [[ASD List|ASD]] and decode here : [[SMC Sensor Codes|sensors codes]] or use [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|AHT/AD]], not as specific.)
[https://software.intel.com/content/www/us/en/develop/articles/intel-power-gadget.html Intel Power Gadget] can be used to monitor the power consumption and the actual core clock of the CPU to observe proper boosting behaviour under load. Intel Power Gadget is only available starting from 2nd gen Core CPU. Trying to run it on 1st gen Core will result in an immediate kernel panic. Instead, while it is much less user friendly, the following command can be used in the Terminal to monitor the actual core clock, refreshing every 0.1s:
sudo powermetrics --sampler cpu_power -i 100
==820-2936==
===No battery===
[[File:820-2936 sensors no battery.jpg|600px|820-2936 sensors no battery]]
===With battery===
[[File:820-2936 sensors with battery.jpg|600px|820-2936 sensors with battery]]
==820-00165==
The following example is a 820-00165 (MBA 13" 2017 i7) with prime95 torture test starting in the middle of the graph.
<br />
[[File:820-00165 battery throttling.jpg|left|thumb|663x663px|820-00165 throttling due to bad battery (same with no battery). Notice the constant frequency stuck just above 1GHz. Fan stays low and temp won't go past 65°C.]]
<br />
[[File:thermal throttling.jpg|left|thumb|663x663px|820-00165 throttling due to high CPU usage (Prime95 torture test). The start of the graph is normal behavior when using programs. This time the frequency stays quite high and reach a plateau when the cooling capacity is overwhelmed. The fan is gradually ramping up at max rpm or close.This is the expected behavior.]]
<br>
[[File:throttling-random-under-load.jpg|left|thumb|663x663px|Case study : 820-00165 (i5 early 2015) throttling eratically under load, system very slow. Notice the frequency capped around 1GHz, the low power used and subsequent low thermals (under 65°C).]]
[[File:throttling-random-fixed.jpg|left|thumb|663x663px|Case study : 820-00165 (i5 early 2015) After the fix. A bad cap on PP3V3_S5_AVREF_SMC was messing with the SMC itself. System behaves normally under load. The frequency now scales up and stays there (normal thermal throttling) as temps rise up to 100°C (Prime95 small FFT is torturing the poor Air).]]
ko16p23vng4ba3673zmc5wok7erzh6i
Topcase information
0
2181
6609
6608
2022-09-12T17:37:04Z
Francis
4
/* MacBook Pro */
6609
wikitext
text/x-wiki
=WORK IN PROGRESS=
This page contains information about topcases and how to distinguish different model years based on no more than the topcase itself and its features/model numbers.
Information about compatibility between the different years will be added when possible as well.
=<bdi>MacBook Pro</bdi>=
{| class="wikitable"
|+
!Screen size
!EMC
!'''Model N°'''
!Date
!Model ID
!Board number
!Topcase model '''N°'''
!Topcase date
!Topcase lot number
!Letter code
|-
|13"
|
|A1502
|
|
|
|
|
|
|
|-
|
|
|A1502
|
|
|
|
|
|
|
|-
|
|
|A1502
|
|
|
|
|
|
|
|-
|15"
|EMC 2512/2673
|A1398
|Midi 2012/Early 2013
|MacBookPro10,1
|820-3332
|613-9739-D
|14.12.11
|0000141930
|K
|-
|
|
|
|
|
|
|613-9739-D
|13.06.09
|0000259210
|K
|-
|
|
|
|
|
|
|613-9739-D
|2012.08.25
|01MPN20041
|F
|-
|
|
|
|
|
|
|613-9739-D
|13.06.09
|0000259210
|K
|-
|
|EMC 2674
|A1398
|Late 2013
|MacBookPro11,2
|820-3662
|613-1325-08
|2013.11.29
|01MPN00336
|F
|-
|
|
|
|
|
|
|613-1325-09
|13.02.07
|01MPD10724
|F
|-
|
|
|
|
|
|
|613-1325-08
|2013.10.14
|01MPD00386
|F
|}
i6lqha2wdmyvnvk8cqo4agqcy7uj9is
Touch Bar Notes
0
31
580
64
2020-02-02T11:37:00Z
Piernov
10
Category Mac MacBook
580
wikitext
text/x-wiki
It will boot with just the bare LB. Make sure to have a known good USB C to video adapter that works in EFI mode. The Apple multi adapter did not work for me.
The power button is replaceable, but without Touch ID (mesa).
[[Category:Mac]] [[Category:MacBook]]
70ikrqa5224pa5ts1xtbjq243g0ektk
Trackpad & keyboard
0
697
6063
5742
2021-09-15T18:44:40Z
Deadbody408
536
added a fix to procedures
6063
wikitext
text/x-wiki
'''Issue: Trackpad & Keyboard do not function on A1465 and A1466 MacBook Air'''
Troubleshooting Steps
#Test boot and hold option. Does it bring you to the boot menu? Does the trackpad/keyboard work? If no, continue on step 2. If yes, skip to step
#Inspect trackpad flex cable for any damage or corrosion. Sometimes it is only visible under microscope. It is also a safe bet to swap the cable and test.
#Test with a new trackpad, and keyboard disconnected.
#Measure voltages going into J4800. Does it have power where there should be power? <br />
Case Example: A1465 2013 11" MacBook Air: Original issue was SMC failure, and it sat in my drawer for about a year. Finally replaced SMC and the unit boots up and works fine, but no trackpad or keyboard in the OS. They do work on the boot menu. I tested all components and discovered 0v on TPAD_USB_IF_EN coming from the PCH. I jumpered from PP3V3_S0, and the keyboard and mouse function.
Note : if both TPAD_USB_IF_EN_CONN and TPAD_SPI_IF_EN_CONN are present (from jumping 3v3 to TPAD_USB_IF_EN_CONN) , mouse movement will be jittery, to fix this issue jump TPAD_SPI_IF_EN_CONN to ground.
'''Issue: Water damaged trackpad works but causes throttling and temperature error in FaceTime on A1465 MacBook Air (trackpad sensor issue)'''<br>
Apple Diagnostics show error PFM006.<br>
Troubleshooting Steps
#Inspect trackpad flex cable for any damage or corrosion. Sometimes it is only visible under microscope inside the connector on trackpad side or board side. It is also a safe bet to swap the cable and test.
#Test with a new trackpad, and eventually with keyboard disconnected. For testing purposes, you may use a trackpad from an A1466, they are compatible.
===A1502 and similar flexcable install===
#leave connector CLOSED
#align flex cable so it perfectly fits but not inserted
#open connector lock and let cable slide in
[[File:A1502 Keyboard flex.png|left|frameless|558x558px]]
<br />
8zby3kx1mksxusk9vjecvmmwttlqlwr
USB-C Pinout
0
812
3107
3095
2020-10-06T22:02:24Z
Inwerp
16
/* Common problems on Macbooks: */
3107
wikitext
text/x-wiki
[[File:USB-C pinout.png|frameless|800x800px|USB-C pin-out]]
The USB-C port on an A1708 is constructed with from a metal cap, a PCB, and a pin carrier. The metal cap has a ground shield that extends toward the end of the port and kapton tape on the inside to protect against shorts. The PCB layer has indents in the sides of the ports to allow the USB C cable to grab on to. The pin carrier has a metal frame and shields that partially cover the exposed port like the metal cap does. The pins are held in place with a plastic. All three of these components are soldered together.
[[File:A1708 USB-C port teardown.png|frameless|800x800px|USB-C teardown]]
Common power sequence:
[[File:image.png|frameless|801x801px]]<br />
=====Common problems on Macbooks:=====
#No External monitor, also Not able to charge / but USB connectivity works. In most cases means CC1 or CC2 pin is either damaged or dataline is burned on cd3215/17 side. There are usb 2.0 lines in the middle, they work fine in both orientations, thats why it somehow detects storage devices.
#Charging works only in one orientation same with CC1/CC2, most likely damaged connector.
#Charging works, data transfer too, no external screen with known-good cable Inspect dataline pairs for damage or shorts. Shorted dataline usually is a bad sign.
#Damaged port, no image on the screen RIP CPU. Despite all possible precautions, it is possible to kill the CPU by sending 20V to some of Datalines around. In most cases it will blow the cd3215 but before replacing dead CD3215 check if there is a short on USB_UPC_PCH_XA( or B)_P(or N). <br />
am6b7g24uhhtql00pofph3berf9itfl
Ultrasonic Cleaners
0
1744
7688
6476
2024-09-02T18:50:39Z
Inwerp
16
7688
wikitext
text/x-wiki
== '''WARNING''' ==
Despite being useful for post-repair cleaning, many people use this device to "fix" a dead-end device.
Please don't do that under any circumstances if there is valuable customer data on the device. Escalate it to a different repair store with proven competence or reject the repair.
'''USC CLEANING IS NOT REPAIR'''
Example:
This Mac was properly cleaned and all visible damage was repaired by one of our community members. Since there was random corrosion, the tech decided to do a proper USC clean.
Technically he did nothing wrong, and the device was properly dried after that. This device arrived to me approximately 3 weeks after the USC, so there is zero chance there was any residual liquid.
The original issue was a broken i2c clk line, which prevented NAND power from working. It was really hard to find because the affected line was corroded under the mask, and there were zero traces, but the standard M1 power sequence helped me pinpoint the issue.
After finding and fixing the original issue, the Mac turned on and then turned off again after a minute, with a smelly 3v8 short to ground. After removing the sticker, I found that the SPMU had a very nasty hole in it, which would mean a dead CPU and no data in most cases.
[[File:Hardcase A2442.png|none|thumb|654x654px|I had to drill under the SPMU since 3v8 was welded to ground. i also had to restore pad because 3V8 inputs are not connected internally in PMU. after that to stay on safe side i did a back up with battery disconnected which caused the device throttling thus using less power. ]]
It is maybe okay to use USC as a last resort on non-data recovery cases where you expect liquid under the SoC. However, it is strongly NOT recommended to USC boards in any data recovery cases. Data is not replaceable, and the 1% chance it will fix invisible damage is not worth the greater chance of killing the board. USC cleaning became popular on older machines with detachable SSD drives, and it was a valid technique which even fixed reasonable amount of boards. Now it is very different, because of integrated SSD drive and much more dence PCB complexity on newer macs.
'''Why you should just get a crest ultrasonic cleaner if you're fixing boards professionally:'''
Every other generally available brand of ultrasonically cleaner simply doesn't work as well. If you want to know why see below.
The product description on the rossman groups website has a good description of the advantages of crest's machines and has some pictures comparing the cleaning of a crest machine compared to another manufacturer's machine.
Link - https://store.rossmanngroup.com/crest-p1800h-45.html
'''List of available models:'''
https://crest-ultrasonics.com/benchtop-ultrasonic-cleaners/?gclid=EAIaIQobChMImeva2aqU9wIVBv_jBx374gS8EAAYASAAEgKM0fD_BwE
Something the size of a P1200D can fit any current macbook logic board , some large boards may not be fully submerged and you would need to flip them more time to get full coverage on the board.
'''Dilution levels to use in tank:'''
Concentration of Branson electronics cleaner should be between 3-5% and the rest is distilled water.
For Example if you had a 1200D cleaner, the tank is roughly 2.4 gallons or 9200ml, so you'd want 275ml- 460ml of Branson EC, the rest of the tank would be distilled water.
'''''*DO NOT use tap water or isopropyl alcohol in an ultrasonic cleaner or any other combination of chemicals.*'''''
'''*Use Branson EC and distilled water, that is all.*'''
'''Whenever you refill or plan to use the cleaner, you should run the degass setting to get rid of any air bubbles in the solution, air bubbles hitting the board can cause cavitation, not good.'''
Your tank is filled, you've degassed the solution of branson and distilled water and you want to clean your boards, here are the settings that are widely used:
'''Crest Ultrasonic settings:'''
Temp: 68 C
Power: 9
Set timer for 4 min
''4 Minutes of each side of the board''
'''General Tips:'''
-It is a good idea to remove any stickers, heatsinks and shield plates before putting a board in an ultrasonic. Stickers will be ruined by the ultrasonic process and shields will stop the cleaning process from working effectively in those covered areas.
-If you've been doing rework on a board, it is recommended to clean off flux residue from the board before putting it into the ultrasonic cleaner as you can get more uses of a solution in the tank before it needs to be cleaned out and refilled.
<br />
0cl78ndx71zfp2daad0cpavt7w9ifc3
Uninstall PhoneCheck
0
2220
6797
2023-03-21T17:14:48Z
Chrisb
1
Created page with "<syntaxhighlight lang="bash"> defaults delete -g ignore-devices defaults delete com.apple.AMPDevicesAgent </syntaxhighlight>"
6797
wikitext
text/x-wiki
<syntaxhighlight lang="bash">
defaults delete -g ignore-devices
defaults delete com.apple.AMPDevicesAgent
</syntaxhighlight>
ktkjj6zdu3p54h8jlze6voanzf4rudj
Update Certificates in Older macOS
0
2073
6179
6178
2021-10-14T14:45:30Z
Chrisb
1
Protected "[[Update Certificates in Older macOS]]": Security ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading]
6178
wikitext
text/x-wiki
The root certificates of older macOS like El Capitan are expiring. Below is a script to pull the updated certs from the logi.wiki source and install them to an older system.
Open a terminal by using Spotlight Search (Command(⌘) + Space) and type Terminal. Then copy and paste the following command into a terminal. After pasting press enter. You will get a password prompt popping up. Enter your password and click OK. Alternatively you can open Terminal by opening the Utilities directly by pressing Shift + Command(⌘) + U after clicking Finder to activate it.<syntaxhighlight lang="bash">
bash <(curl -s http://logi.wiki/rootcerts.sh)
</syntaxhighlight>You can also add it to a scripting system like DeployStudio by adding a DS to the end.<syntaxhighlight lang="bash">
curl -s http://logi.wiki/rootcerts.sh | bash -s DS
</syntaxhighlight>'''For more information and other methods see''' https://logi.wiki/index.php/ERR_CERT_INVALID
6odvj83q0mquah4y6kj9117al1pck04
Useful Websites
0
745
1574
2020-08-28T17:35:03Z
Chrisb
1
Created page with " Save these, bookmark these, use these. [https://www.everymac.com Everymac Lookup] [https://beetstech.com/apple-device-lookup Beetstech Device compatibility look up.] [htt..."
1574
wikitext
text/x-wiki
Save these, bookmark these, use these.
[https://www.everymac.com Everymac Lookup]
[https://beetstech.com/apple-device-lookup Beetstech Device compatibility look up.]
[https://beetstech.com/blog/where-are-macbook-pro-unibody-power-on-pads-located MacBook Pro Unibody Power On Pad Locations]
[https://beetstech.com/blog/macbook-air-power-pads MacBook Air Power On Pad Locations]
[https://ss64.com/osx/ MacOS A-Z Terminal Commands]
[https://support.apple.com/en-us/HT207584 Fix Fusion Drive - WARNING! ERASES EXISTING DATA IF ANY!!!]
[https://support.apple.com/en-us/HT205043#4 2012 and Earlier Mac Pro RAM Instructions]
[https://support.apple.com/exchange_repair Apple Exchange and Repair Programs]
[https://www.apple.com/support/systemstatus/ Apple System Status]
[http://logiwiki.shinycomputers.com/index.php/Main_Page Logiwiki]
'''Apple Wiki's -''' Be sure to bookmark Apple product Wiki's in Wikipedia. Each has very detailed technical information listed within which is uber helpful. I am not going to copy and paste each one here, but please use this valuable resource!
2zthgbvy7297t9c0jdwe29s2lacj0oc
Useful tools
0
2246
6934
2023-09-27T13:48:02Z
Francis
4
Created page with "== Here you will find a list of various tools that might not be easy to find on your own == Nerd-tool: tool for calibrating the sleep sensor on 2019+ macbooks: https://notebooknerds.de/en/nerd-tool-1/ Lifeboat (076-00236), tool for extracting data from 2016-2017 Macbook Pros, usually out of stock these days: https://www.ebay.co.uk/itm/282989664130 FNB58: most recommended USB-c meter, for use with macbooks, iphones, androids etc [https://www.aliexpress.com/item/10050051..."
6934
wikitext
text/x-wiki
== Here you will find a list of various tools that might not be easy to find on your own ==
Nerd-tool: tool for calibrating the sleep sensor on 2019+ macbooks: https://notebooknerds.de/en/nerd-tool-1/
Lifeboat (076-00236), tool for extracting data from 2016-2017 Macbook Pros, usually out of stock these days: https://www.ebay.co.uk/itm/282989664130
FNB58: most recommended USB-c meter, for use with macbooks, iphones, androids etc [https://www.aliexpress.com/item/1005005108936815.html?spm=a2g0o.productlist.main.3.17b7154czRr5p8&algo_pvid=218e2ba0-216b-4d97-953f-d13dcfc395d1&algo_exp_id=218e2ba0-216b-4d97-953f-d13dcfc395d1-1&pdp_npi=4%40dis%21SEK%211116.64%21446.71%21%21%2191.49%21%21%40211b88ef16954032924265183e1a8d%2112000031691325883%21sea%21SE%21752551030%21&curPageLogUid=KLBwxSRhF8Vg https://www.aliexpress.com/item/1005005108936815.html]
3fmykfcpvbjhw9uuy2ifp4k61tx99z7
Verbose Mode
0
56
581
410
2020-02-02T11:37:11Z
Piernov
10
Category Mac
581
wikitext
text/x-wiki
Verbose, aka wordy, mode displays all the [[EFI]] and kernel boot info. It will end when the OS takes over.
Pro Tip: Use a camera pointed at the screen to get a record of the fast moving text
[[Category:Mac]]
lkl1uuxv8wep13cwr9in2o265v0f3ow
Wi-Fi not working in recovery mode
0
2092
7639
6499
2024-08-19T08:46:12Z
Inwerp
16
7639
wikitext
text/x-wiki
When a MacBook enters recovery mode or the boot menu it cannot rely on drivers from MacOS, and instead the platform must initialize model specific drivers during the UEFI DXE boot stage; because of this, a MacBook can only initialize a '''model specific''' driver for the wireless card that is ''specifically'' designed to be in THAT MacBook. The MacBook EFI is an optimised firmware, and would be wasteful to bloat it with unnecessary drivers.
Here is a real world example; the Wi-Fi card in an A1502 will fit nicely into an A1398 and work in MacOS, however, when recovery mode is booted, i.e., Internet Recovery, no wireless networks will be discovered you'll more than likely encounter the following error codes:-
*'''-1005F'''
*'''-1005U'''
If any of this read looks familiar, you should check your Wi-Fi card is compatible with the MacBook it's installed in, else you'll have no access to networks in the boot menu, internet recovery or diagnostics as the EFIROM contains no driver to initialize the Wi-Fi hardware.
== Error -2003F during online recovery load ==
Use USBC-Ethernet adapter. In most cases separate usbc-lan adapters do not work, but in my experience almost all UsbC hubs (Anker, Ugreen, etc) work fine. On some devices issue might be fixed with DFU restore
i0fz32qzp2lracbmdohscyud4jpjwev
Xbox One
0
2109
6329
2022-01-08T05:29:54Z
Alpha Bravo Tech.
538
Created page with "Xbox One info here [[Category:Game Consoles]]"
6329
wikitext
text/x-wiki
Xbox One info here
[[Category:Game Consoles]]
cbvjgqea9hogcfgjov50uy88ldn1bqz
Xbox One S
0
2110
6330
2022-01-08T05:30:14Z
Alpha Bravo Tech.
538
Created page with "Xbox One S info here [[Category:Game Consoles]]"
6330
wikitext
text/x-wiki
Xbox One S info here
[[Category:Game Consoles]]
j0nq96paw5ix81dvc4ihzddcubhz1qm
Xbox One X
0
2111
6331
2022-01-08T05:30:33Z
Alpha Bravo Tech.
538
Created page with "Xbox One X info here [[Category:Game Consoles]]"
6331
wikitext
text/x-wiki
Xbox One X info here
[[Category:Game Consoles]]
a42iq99w4c8z382y1dhq1ja3i870ugj
Xbox Series S
0
2112
6332
2022-01-08T05:31:08Z
Alpha Bravo Tech.
538
Created page with "Xbox Series S info here [[Category:Game Consoles]]"
6332
wikitext
text/x-wiki
Xbox Series S info here
[[Category:Game Consoles]]
cgrf6tmfy8xgbhey9ct1cxou5ruwl4f
Xbox Series X
0
2113
6333
2022-01-08T05:31:48Z
Alpha Bravo Tech.
538
Created page with "Xbox Series X info here [[Category:Game Consoles]]"
6333
wikitext
text/x-wiki
Xbox Series X info here
[[Category:Game Consoles]]
ogbh2lmn4hh4y82367y6l4tl65tvmkz
eDP interface
0
2233
6873
6872
2023-06-22T08:36:55Z
Inwerp
16
6873
wikitext
text/x-wiki
== Theory ==
Stub article related to the troubleshooting of eDP displays + some modifications made by Apple.
There are 5 main parts of the common eDP connector:
#TCON / LCD Controller Power supply. Depending on panel type it might be 3, 5 or 12V as a main LCD VDD power supply. This supply is always present.
#Service or Auxiliary bidirectional differential pairs to transfer service information.- Standard line is eDP_AUX(N+P), however on macs we would see also a TCON SMBUS connected to SMC(for example, SMC reads LCD temp via this line). On MacBook (see [[Backlight Troubleshooting|MacBook backlight]] troubleshooting page) there is also an extra i2c line which connects two parts of backlight driver. Depending on realisation, there might be two AUX lines (on iMacs) each would be connected to Intel / AMD GPU. On MacBooks, there would be one AUX line, which would be later routed by GMUX.
#1-4+ Data lines, depending on refresh rate / max panel resolution
#Backlight control lines, depending on what exact implementation do we have. There might be sync signal to sync backlight with panel refresh rate, there might be EN signal, or as mentioned in nr.2 - i2c line to bind two backlight drivers together. You can also see PWM signal as a secondary backlight control on some MacBooks and most PC laptop screens.
#HPD (Hot Plug Detect) signal, which works as an indicator that panel is on and ready to send/receive data.
There might be some more lines like Microphone or Touchscreen/Camera lines on PC laptop display connectors, but these are not related to eDP itself.
The common power sequence would be:
#LCD-VCC provided to Display
#Display initializes and resets LCD panel
#HPD goes high (1.5-3V depending on panel type) on the display side. this tells the mainboard that it is time to communicate with panel
#Display controller (GPU) reads panel parameters via EDP_AUX and also sets its display mode.
#Signal Differential pairs are being trained and display starts to render the image. -- On iMac screens, there is also VIDEO_ON signal which turns on the backlight circuit on the mainboard. This is probably made to avoid any visible artefacts before the display panel is fully reset. This also turns on indicates 4th DEBUG LED. -- If backlight driver is located in display/tcon, Backlight enable will be sent by Mainboard to LCD panel.
#Backlight should be turned on. On most modern panels it only turns on if there was no issue in sending image to the panel.
[[File:iMac EDP.png|frameless|1311x1311px]]
This is iMac 2017 eDP connector pinout. Pinout is quite different from standard eDP interface, but mostly it works very similar.
<br />
== Troubleshooting ==
# Check condition of the screen. Is it recognized (does external screen show login or only background as it was secondary screen)? Does it have image but no backlight? If so, for MacBook backlight troubleshooting refer to this page or iMac Backlight Troubleshooting here.
# If there is no picture, start with checking if there is a power supply provided to the screen.
# Check signal lines in diode mode, separately on screen/mainboard side. N and P lines of the same pair should have very similar readings.
# Check HPD signal. If it's present, there should be communication at least on AUX lines.
# If you have communication, backlight but no image, most likely the display itself is damaged. On MacBook screen, there is an integrity check wire around the panel which disables the image if the controller sees glass as "broken". It happens really often through "security" camera shutter glued on the glass on Macbook screens.
fvt1ptximp7uav5vgp76c1xje5o01bv
iMac A1311/A1312 Graphics card
0
1747
6819
5764
2023-04-30T13:07:22Z
Piernov
10
Remove obsolete information in 2023
6819
wikitext
text/x-wiki
iMac Late 2009 to Late 2011 are known for their GPU failure. All models are affected to a certain extent, except the 21.5" 2009 with integrated graphics only (NVidia 9400M).
All other models use a ATi/AMD Radeon HD HD4000 through HD6000 series GPU which are unreliable.
The most affected is the Radeon HD6000 series in the 2011 models, then the Radeon HD5000 in the 2010 models and finally the Radeon HD4000 in the 2009 models.
Heat does reduce the lifespan of these, so higher-end models are more likely to fail. If you are still using one of these, it is highly recommended put fresh thermal paste and to install Macs Fan Control and set a much more aggressive fan profile. This is also recommended for older models (2006 to 2009) which are also failure-prone.
There are '''no''' officially compatible graphics card available to replace them. Most cards you find on eBay or elsewhere already have been baked or will fail soon enough.
The best solution is to install a newer unsupported graphics card. However, Apple's EFI does not support the VBIOS used on the "non-Apple" cards, some people thankfully figured out how to patch the VBIOS to restore EFI video output support as well as other features (native brightness adjustment, external display support) on some cards.
'''If you are considering replacing the GPU in your iMac, you should REALLY read this post as it is appears to be the central repository for all things related to iMac GPU replacements - including more information on supported cards and available VBIOS:''' https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/
Note that A1225 2009 and A1311 2009 DG only support some older cards with native LVDS output rather than eDP. These cards from around 2012 may not have the best reliability either.
Additionally, they require using OpenCore to boot into macOS. There is no fully transparent solution allowing to boot macOS natively. However, since replacement graphics cards support Metal, it is also an opportunity to install a newer macOS version with OpenCore Legacy patcher and get acceptable performance without graphical glitches.
For the A1311 2009 DG, it is possible to swap the logic board with the A1311 2009 IG model to get rid of the discrete graphics card. It is not easily possible to convert an A1311 2009 DG board to IG board since it requires swapping the MCP from "NF-7201-DC-B3" to "GF-9400J-DC-I-B3" and removing the parts with BOM option "MXM" then soldering the parts with BOM option "IG"
[[Category:Mac]]
[[Category:iMac]]
ajvtbe0z4i18yrx230kmg7tnhq5o6xm
iMac HDD Thermal Sensor Bypass
0
607
7042
6794
2024-01-15T10:26:12Z
Piernov
10
/* Modifying the Logic Board */
7042
wikitext
text/x-wiki
===Problem===
If you replace an OEM drive in a 2010 or 2011 iMac, the fans in the system will go crazy. These can be controlled by software like MacsFanControl or smcFanControl, but that's a poor workaround for an issue that can be addressed internally quite easily.
<br />
===Context===
There is no such thing as HDD thermal sensor on iMacs from 2010 or 2011 - instead it's simply a thermal trigger sent by the OEM-installed hard drives. If you connect HDD_OOB_TEMP_FILT to ground, the thermal trigger never occurs and the system will behave as it normally would with its OEM drive installed.
<br />
===Solutions!===
On '''2009''' iMacs, there is a separate two-wire cable that runs from the logic board to the hard drive and connects to J5400 on the logic board. The best solution is to simply snip the hard drive terminal off of the cable and strip and solder the two wires together. You could also simply add a jumper between the two pins of J5400 on the logic board itself. The former option will look like this:
[[File:2010_Hard_Drive_Thermal_Sensor_Jumper.jpg|alt=|frameless]]
On '''2010'''-'''2011''' iMacs you can either modify the drive you'll be installing '''-OR-''' the logic board itself.
'''YOU DO NOT NEED TO MODIFY BOTH ENDS, BUT NO PROBLEMS WILL BE CAUSED BY BOTH MODIFICATIONS BEING IN PLACE.'''
<br />
===Modifying the Logic Board===
Modifying the logic board is preferable as it is a more permanent fix that will remain in effect through potential future drive replacements, but it DOES requires access to the backside of the logic board, so if you don't have the board pulled already it may be preferable to simply modify the drive itself (see below). Chances are these won't be going through too many drive replacements in the future.
To modify the logic board and provide a permanent fix for the high fan issue, simply find J4511 where the SATA power cable for the hard drive connects to the logic board, and simply solder HDD_OOB_TEMP_FB on pin 7 to ground on pin 6 using either a solder blob or a 0 ohm resistor. A 0603 or 0402-sized resistor should work just fine.
<br />
[[File:Imagen.jpg|thumb|J4511 PIN 6 y 7|alt=|none]]
Alternatively, on 2011 27", without disassembly of the main logic board, you can bridge the test point/via TP[510]HDD_OOB_TEMP_FB (near the bottom-right of the SMC U4900 and just below the unpopulated connector J5550) to the nearby ground plane after scraping the solder mask a little bit.
[[File:820-2828 TP HDD OOB TEMP FB bridge.jpg|thumb|HDD_OOB_TEMP_FB test point bridged to ground plane on 820-2828|none]]
===Modifying the Drive===
To modify the drive you'll be installing, simply get physical access to the leads of the SATA power port and tie pin 11 to either adjacent ground pin and you're set. Pin 1 is at the end of the plug with the key (the foot of the L shaped plug) and pin 15 is on the far end, so pin 11 is the fifth pin over from the end of the plug without the key. On most drives I've seen, the actual fins on the plug are longer for pins 10 and 12, and pin 11 is the shorter one between them. Pins 10 and 12 are both ground so either will work perfectly. Pictured below is a modification of a SATA power plug on a drive with pin 11 tied to pin 12 using a zero ohm 0603 resistor, which is a perfect fit for the SATA power pin pitch.
[[File:SATA ENERGIA.png|alt=Pinouts for SATA power plug|thumb|Pinouts for SATA power plug]]
[[File:SATA Temp.png|frameless]]
After soldering, be sure that pin 11 and all of your ground pins have continuity to one another (so pins 4, 5, 6, 10, 11, and 12 should all have continuity), and that they do NOT have any connectivity to the 5V pins (7, 8, and 9) or the 12V pins (13, 14, and 15). See the SATA power pinout reference table as needed:
<br />
===Technical Explanation===
[[File:TempComparator.png|frameless|556x556px]]
The above circuitry is common to all iMacs from 2010 and 2011. In it, U5400 is a LM393 comparator. The circuit produces a 1V reference voltage from PP12V_S0_SENSE through a voltage divider (R5400 & R5401) and delivers it to pin 2 of U5400. The circuit also produces a 1.5V pullup voltage from PP3V3_S0_SMC_LS through a voltage divider (R5402 & R5404). If the input voltage on pin 3 is LESS THAN pin 2's reference voltage, then U5400 shorts pin 1 to ground. If the input voltage on pin 3 is GREATER THAN pin 2, then U5400 does nothing, leaving the 3.3V pullup voltage on pin 1 provided by PP3V3_S0_SMC_LS unmodified.
Because pin 3 is pulled up to 1.5V by default and 1.5V is greater than the 1.0V reference voltage on pin 2, the comparator does nothing and the 3.3V pullup provided to pin 1 through R5405 is delivered to the system's SMC as a logical 1, which it takes as a sign that your hard drive is on fire and about to melt your iMac and burn down your house.
If the voltage on pin 3 is grounded out by an OEM drive's custom firmware or a clever modification to the circuitry ;) the voltage delivered to pin 3 will be less than the 1.0V reference voltage on pin 2 and U5400 will pull the 3.3V on pin 1 to ground, leaving the SMC to receive a logical 0, which is taken to mean that the hard drive is not, in fact, on fire.
What does that fancy 50$ OWC adapter do? It takes 12V or 5V (who cares, never had one, they're stupid) from the SATA cable, turns it into ~3V and uses a LM35 or something similar to output ~0.5V to pin 11 which will lead to the SMC receiving that same logical 0 it wants to see to feel safe.
Why do you see reports that SATA power Y-adapter cables solve the problem? Most Y cables simply short pin 11 to ground as that is acceptable for 99% of non-server hard drive. (Do not use such cables in servers unless you want to kill your PSU! :) )
[[File:thisisfine.png|alt=|frame|fig.2: iMac after jumper-mod]]<br />
===Fun Facts!===
*Fun fact 1: Pin 11 on SATA power connectors is used on server hard drives to regulate "safe" startup by simply delaying motor spinup, thus reducing peak current draw on 12v PSU lines.
*Fun fact 2: There are Apple plug modifiers for iMacs from 2009-2011 to accommodate SSD setups. On 2009 (and 2010?) it may be shorted, whereas on 2011 Apple Technician are required to remove the logic board and connect the plug to J4511 - the onboard HDD power socket. That means that '''''by Apple's own design''','' if you upgrade to a SSD it is totally fine to disable the temperature trigger.
*Fun fact 3: The weird fan behavior we see is actually a compatibility sacrifice, as per this note in the official schematics: [[File:funfact3.png|alt=|frameless|417x417px]]
<br />
*<s>Fun fact 4: Companies like OWC or iFixit keep selling "thermal sensor" for Retina (2012+) iMacs as a part of their SSD upgrade kit. In retail it might cost up to 60$ for snakeoil wire which does... absolutely nothing because even though temp line is still present on Retina Logicboards, however this temp-trigger function is not really utilized by SMC so its absense wont change anything. '''Temp sensor bypass is only needed on 2009-2011 iMacs.'''</s>
*Fun fact 5: The information above is not really correct, and I apologize for that. As I figured out, there are, in fact, some iMac 2012 27" devices which require a communication line instead of the simple trigger like on older models. This communication line uses the same pin on the SATA connector. Most likely, it could be bypassed with a 3.3V pull-up on this line; however, it needs some more testing to confirm.
<br />
mp1qxi1vrjziu178fqvfmpj0ou63f3f
iMac Logic Board LED Indicators
0
1889
5563
5562
2021-02-11T16:16:24Z
Chrisb
1
5563
wikitext
text/x-wiki
The following is true for iMac logic boards from early 2009 and up with only four LED locations. Some models have positions for 5 LEDs, but only 4 LEDs populated.
*LED 1 - Indicates that the trickle voltage from the power supply is detected by the main logic board. This LED will remain ON while the iMac is connected to the AC power. The LED will remain on even when the computer has been shut down or put to sleep. The LED will turn off only if the AC power is disconnected or the power supply is faulty.
*LED 2 - Indicates that the main logic board has detected proper power from the power supply when the computer is turned on. This LED will be ON when the computer is turned on and the power supply is working correctly.
*LED 3 - Indicates that the computer and the video card are communicating. This LED will be ON when the computer is communicating properly with the video card. If LEDs 1 and 2 are ON and you heard the startup sound, but LED 3 is OFF, then the video card might be installed incorrectly or need replacement.
*LED 4 - Indicates that the computer and the LCD display panel are communicating. This LED will be ON when the computer is turned on and video signal is being generated. If the LED is ON and there is no image on the LCD display panel, the LCD display panel or inverter might be installed incorrectly or need replacement.
2j9pmfht3z5rawpwah7twzuppiemva6
iMac Pictures
0
1934
5726
2021-04-08T22:20:20Z
Nobluesky
182
Created page with "==iMac 21.5" 4K 2019 (A2116) (820-01237)"== [[File:imac 21 2019 recto.jpg|900px]] [[File:imac 21 2019 verso.jpg|900px]]"
5726
wikitext
text/x-wiki
==iMac 21.5" 4K 2019 (A2116) (820-01237)"==
[[File:imac 21 2019 recto.jpg|900px]]
[[File:imac 21 2019 verso.jpg|900px]]
90686y68mgh78g56vfuo5cucw7sizhu
iMac backlight circuit troubleshooting (A1419 and above)
0
1894
6733
5582
2023-02-09T17:29:39Z
Inwerp
16
6733
wikitext
text/x-wiki
Those who ever tried to repair it already know thats much more advanced circuit compared to Macbooks or older models. There are quite a few enable signals with many P-channel MosFets on the way. Having BLC_EN signal does not mean much and i will try to explain why. As an example i use 820-3478 (A1419 27" 2013).
First of all you need to recognize if thats really a board-side problem. If possible test with spare screen, inspect cable and components near the eDP connector.
To diagnose the circuit you need to fully remove the board and put it on connected screen. It can be powered with a 12V PSU, you will need 3-4 amps during diagnostics so your bench psu will do the job. as soon as you fix the circuit it will jump to 6-8A so dont wonder it triggers OCP on your PSU later on. Short J6901 pin 1-2 to press power button.
J8100 is a good point to start troubleshooting. You can check both VSYNC and BLC_EN signals on this pad (thats backlight microcontroller U8100 programming interface), however LED4 is triggered by VIDEO_ON signal which is also the source for BLC_EN Signal. So if debug LED4 is off, you should troubleshoot somewehere else. VSYNC indicates there is communication between screen and Microcontroller. Also pin 14,15 on eDP worth checking for smbus communication between screen and backlight controller. Long story short, VIDEO_ON comes from display side and initiates sequence to turn on Backlight. As mentioned on the schematics page, "backlight is only on when Panel has valid video".
If you follow VIDEO_ON signal, you may wonder why there are so many enable signals around. I have no idea, maybe there was an "enable signal challenge" in Logicboard design room.
#VIDEO_ON triggers DEBUG_LED4, and after a short delay circuit turns into BLC_EN.
#Power conditions check: OpAmp U8320 checks if there is a short circuit (1OUT) and if LED Driver is working and properly powered (2OUT), also passes Backlight controller MCU signals (Outputs 3 and 4) <br />'''2OUT'''goes first since it enables initial charging of Boost circuit caps. It issues BLC_BL signal which is later summed up by U8360 with PM_GOOD_FETP12_S0_BLC(part of 12V_S0 circuit). It looks like the main condition is good 12v and 3v3v (used by MCU). When it is low, BLC_BL is HIGH and Q8371 is open, approx. 1W power starting to flow into BLC_VINP side and slowly charges the caps. '''1OUT''' is pretty insteresting. It checks voltage difference between PP12_S0_BLC_VIN2 and PP12B_S0_BLC_VINP. If you check Q8370 you can see that it needs gate to be LOW which is triggered by pretty complex In-Rush current limiting scheme. To sum it up, R8377 and R8397 mentioned above are used to slowly charge caps on drain side (VINP), if they can be charged (which is only possible if there is no short or significant leakage in circuit). Once charged to 12V, OpAmp output goes low thus releasing BLC_P_ON signal from ground. This signal goes to AND gate U8370 which is also summed with FLAG_V_L signal. Please note that FLAG_V is a signal which goes from MCU, then inverted, so HIGH FLAG_V is used to disable backlight. The whole sequence sends Q8370 Gate to ground letting voltage to pass to the boost circuit. To sum it up, you should measure Q8370 Gate to determine if all conditions above are met Having 12V on both sides does not necesarrily mean it is open, Gate should be LOW for Backlight boost circuit to work. If there is nothing on source it is most likely a blown fuse, '''but as always, blown fuse is a symptom, not a problem.'''
#If all above works fine, LED_DRIVER_EN will go HIGH. Note D8200 which allows BLC_EN to instantly kill LED_DRIVER_EN if its pulled to ground. Because of this diode, low LED_DRIVER_EN wont pull BLC_EN down.
#LED Driver starting to produce magical PWM signals to boost the circuit. U8350 is used as Overvoltage protection. once OVP condition is met, it pulls one of PWMs to ground. There are three outputs on boost circuit, so if you have stage-like effect or partial backlight, this might be a place to look into. However in most cases stage-light is being caused by one dead LED stripe. in this case voltage on one output will be higher compared to other ones. If no output produced, there might be an issue with one of boost feedback circuits or LED driver IC.
to be continued.
I will try to draw sequence diagram and further explanation as soon as i have more time. Logic behind multiple enable signals is really complex and frustrating but since i sort of beat it. i would love to share my experience.
On newer (5k Macs) like 820-00134 or 820-00609 Circuit looks much simplier, however there is undervoltage protection circuit is controlled by Boost controller via UVLO_OVP pin. For some reason problem with switch mosfet and boost output diode might troll you into replacing power supply since it seem to work with a bit higher/lower PPBUS voltage which might be the case if you put a brand new power supply but it will come back. If you have non working booster, replace switching Q8119 MosFET. Supposedly voltage leakage here will cause random no backlight and somewhat better function with fresh PSU / LAB PSU.
47xtm52ngle4ypep1zp8gt7abl6lg6q
iOS Kernel Panic Codes
0
113
1720
553
2020-09-13T23:11:20Z
Eden
191
1720
wikitext
text/x-wiki
{{DISPLAYTITLE:iOS Kernel Panic Codes}}
[[File:FB IMG 1564050051190.jpg|thumb|alt=|left]]
[[File:FB IMG 1564050058516.jpg|thumb|alt=|left]]
[[File:FB IMG 1564050065579.jpg|thumb|alt=|left]]
[[File:FB IMG 1564050071098.jpg|thumb|alt=|left]]
[[File:Ios kernel panic codes.png|thumb|alt=|left]]
{{DEFAULTSORT:IOS Kernel Panic Codes}}
[[Category:iPhone]]
qhnrbbzm5pbjytqxg5bke82eu8ka85t
iOS Version Per Device
0
2141
6631
6622
2022-09-21T18:08:20Z
Rodger.lodge
484
Added iPhone 14 info
6631
wikitext
text/x-wiki
Here is a list of Devices and what iOS/iPadOS versions they can take.
===iPhone===
{| class="wikitable"
!Device
!Released
!First iOS
!Max iOS
|-
|iPhone 14 Pro
|2022
|16
| rowspan="13" |16
|-
|iPhone 14
|2022
|16
|-
|iPhone 13 Pro / 13 Pro Max
| rowspan="2" |2021
| rowspan="2" |15
|-
|iPhone 13 / 13 mini
|-
|iPhone 12 Pro / 12 Pro Max
| rowspan="3" |2020
| rowspan="2" |14
|-
|iPhone 12 / 12 mini
|-
|iPhone SE (gen 2)
| rowspan="3" |13
|-
|iPhone 11 Pro / 11 Pro Max
| rowspan="2" |2019
|-
|iPhone 11
|-
|iPhone XS / XS Max
| rowspan="2" |2018
| rowspan="2" |12
|-
|iPhone XR
|-
|iPhone X
| rowspan="2" |2017
| rowspan="2" |11
|-
|iPhone 8 / 8 Plus
|-
|iPhone 7 / 7 Plus
| rowspan="2" |2016
|10
| rowspan="3" |15
|-
|iPhone SE (gen 1)
| rowspan="2" |9
|-
|iPhone 6s / 6s Plus
|2015
|-
|iPhone 6 / 6 Plus
|2014
|8
| rowspan="2" |12
|-
|iPhone 5s
| rowspan="2" |2013
| rowspan="2" |7
|-
|iPhone 5c
| rowspan="2" |10
|-
|iPhone 5
|2012
|6
|-
|iPhone 4s
|2011
|5
|9
|-
|iPhone 4
|2010
|4
|7
|-
|iPhone 3GS
|2009
|3
|6
|-
|iPhone 3G
|2008
|2
|4
|-
|iPhone (gen 1)
|2007
|1
|3
|}
===iPad===
Before iPadOS 13, iPadOS was known as iOS.
{| class="wikitable"
!Device
!Released
!First iPadOS
!Max iPadOS
|-
|iPad (gen 9)
| rowspan="4" |2021
| rowspan="2" |15
| rowspan="19" |16
|-
|iPad mini (gen 6)
|-
|iPad Pro 12.9" (gen 5)
| rowspan="4" |14
|-
|iPad Pro 11" (gen 3)
|-
|iPad Air (gen 4)
| rowspan="4" |2020
|-
|iPad (gen 8)
|-
|iPad Pro 12.9" (gen 4)
| rowspan="3" |13
|-
|iPad Pro 11" (gen 2)
|-
|iPad (gen 7)
| rowspan="3" |2019
|-
|iPad Air (gen 3)
| rowspan="4" |12
|-
|iPad mini (gen 5)
|-
|iPad Pro 12.9" (gen 3)
| rowspan="3" |2018
|-
|iPad Pro 11" (gen 1)
|-
|iPad (gen 6)
|11
|-
|iPad Pro 12.9" (gen 2)
| rowspan="3" |2017
| rowspan="3" |10
|-
|iPad Pro 10.5"
|-
|iPad (gen 5)
|-
|iPad Pro 9.7"
|2016
| rowspan="3" |9
|-
|iPad Pro 12.9" (gen 1)
| rowspan="2" |2015
|-
|iPad mini 4
|15
|-
|iPad mini 3
| rowspan="2" |2014
| rowspan="2" |8
|12
|-
|iPad Air 2
|15
|-
|iPad mini 2
| rowspan="2" |2013
| rowspan="2" |7
| rowspan="2" |12
|-
|iPad Air (gen 1)
|-
|iPad (gen 4)
| rowspan="3" |2012
| rowspan="2" |6
|10
|-
|iPad mini (gen 1)
| rowspan="3" |9
|-
|iPad (gen 3)
|5
|-
|iPad 2
|2011
|4
|-
|iPad (gen 1)
|2010
|3
|5
|}
===iPod touch===
{| class="wikitable"
!Device
!Released
!First iOS
!Max iOS
|-
|iPod touch (gen 7)
|2019
|12
|15
|-
|iPod touch (gen 6)
|2015
|8
|12
|-
|iPod touch (gen 5)
|2012
|6
|9
|-
|iPod touch (gen 4)
|2010
|4
|6
|-
|iPod touch (gen 3)
|2009
|3
|5
|-
|iPod touch (gen 2)
|2008
|2
|4
|-
|iPod touch (gen 1)
|2007
|1
|3<br />
|}
i0tmsnhhqf2al6cpk7v8qy60amn2o8u
iPad Cellular to Wifi Conversion
0
592
1606
1605
2020-09-04T00:59:41Z
Alan.l
19
1606
wikitext
text/x-wiki
[[File:iPad WiFi Chip List.png]]
<br />
[[File:ipad-air-2-icloud-unlock.jpg]]
<br />
ot5xvfp5ncp9ypqn77725etqalehpch
iPad Component Compatibility
0
120
388
307
2020-01-07T05:31:55Z
Chrisb
1
Changed redirect target from [[IPhone Component Compatibility]] to [[iPhone/iPad Component Compatibility]]
388
wikitext
text/x-wiki
#REDIRECT [[iPhone/iPad Component Compatibility]]
hv6cv7ip78ojxjpufilnpkhucw3tj34
iPad Diode Measurements
0
1408
4994
4990
2020-10-11T05:57:37Z
Chrisb
1
Chrisb moved page [[IPad Diode Measurements]] to [[iPad Diode Measurements]] without leaving a redirect
3050
wikitext
text/x-wiki
#REDIRECT [[iPad Diode Mode Measurements]]
aggbnqu3yjlguyezp5dq4ujr0n6w7z6
iPad Diode Mode Measurements
0
106
5464
5443
2021-01-06T04:51:56Z
Dusten04
30
iPad Pro 12.9 4th Generation Diode Measurements
5464
wikitext
text/x-wiki
==iPad 5th Gen 2017==
===Overall View===
[[File:iPad 5 Overall View Edited.jpg|alt=iPad 5 Overall View Edited|800x800px]]
===Digitizer 1===
[[File:iPad 5 Digitizer 1 Edited.jpg|alt=iPad 5 Digitizer 1 Edited|800x800px]]
===Digitizer 2===
[[File:iPad 5 Digitizer 2 Edited.jpg|alt=iPad 5 Digitizer 2 Edited|800x800px]]
===Sim Card===
[[File:iPad 5 SIM.jpg|alt=iPad 5 SIM|800x800px]]
===Home Button===
[[File:iPad 5 Home Button Edited.jpg|alt=iPad 5 Home Button Edited|800x800px]]
===LCD===
[[File:iPad 5 LCD Edited.jpg|alt=iPad 5 LCD Edited|800x800px]]
===Power/Volume===
[[File:iPad 5 Power Button edited.jpg|alt=iPad 5 Power Button edited|800x800px]]
===Rear Camera===
[[File:iPad 5 Rear Camera Edited.jpg|alt=iPad 5 Rear Camera Edited|800x800px]]
===Front Camera===
[[File:iPad 5 Front Camera Edited.jpg|alt=iPad 5 Front Camera Edited|800x800px]]
===Headphone===
[[File:iPad 5 Headphone Jack Edited.jpg|alt=iPad 5 Headphone Jack Edited|800x800px]]
===Microphone===
[[File:iPad 5 Mic Edited.jpg|alt=iPad 5 Mic Edited|800x800px]]
===Charging Port===
[[File:iPad 5 Charging Port Edited.jpg|alt=iPad 5 Charging Port Edited|800x800px]]
==iPad 6th Gen==
[[File:Overall Edited.jpg|800x800px]]
===Connector 1===
[[File:Connector 1 Edited.jpg|800x800px|iPad 6 Connector 1]]
===iPad 6 Connector 2===
[[File:iPad 6 Connector 2 Edited.jpg|alt=Connector Number 2|816x816px|Connector 2]]
===iPad 6 Connector 3===
[[File:Corrected iPad 6 3.jpg|800x800px]]
===Home button===
[[File:IPad 6 Home Button FPC Diode.jpg|800x800px]]
==iPad Pro 10.5==
===FPC Diode Readings===
[[File:Overall 1 Edited.jpg|800x800px]]
===Connector Number 1===
[[File:iPad Pro105 Connector 1 Edited.jpg|800x800px]]
===Connector Number 2===
[[File:iPad Pro105 Connector 2 Edited.jpg|800x800px]]
===Connector Number 3===
[[File:iPad Pro105 Connector 3 Edited.jpg|800x800px]]
===Connector 4===
[[File:iPad Pro105 Connector 4 Edited.jpg|800x800px]]
===Charging Port===
[[File:iPad Pro 105 Charging Port Edited.jpg|alt=iPad Pro 105 Charging Port Edited|800x800px]]
==iPad 7th Gen (2019)==
===Overall View===
[[File:iPad 10.2 Overall View 1 Edited.jpg|alt=iPad 10.2 Overall View 1 Edited|800x800px]]
===Digitizer Connector 1===
[[File:iPad 10.2 Digitizer Connector 1 Edited.jpg|alt=iPad 10.2 Digitizer Connector 1 Edited|800x800px]]
===Digitzer Connector 2===
[[File:iPad 10.2 Digi Connector 2 Edited.jpg|alt=iPad 10.2 Digi Connector 2 Edited|800x800px]]
===LCD Connector===
[[File:iPad 10.2 LCD Connector Edited.jpg|alt=iPad 10.2 LCD Connector Edited|800x800px]]
===Connector 4===
[[File:iPad 10.2 Connector 4 Edited.jpg|alt=iPad 10.2 Connector 4 Edited|800x800px]]
===Home Button Connector===
[[File:iPad 10.2 Home button connector Edited.jpg|alt=iPad 10.2 Home button connector Edited|800x800px]]
===SIM Connector===
[[File:iPad 10.2 SIM Connector Edited.jpg|alt=iPad 10.2 SIM Connector Edited|800x800px]]
==iPad Pro 11==
===Overall View===
[[File:iPad Pro 11 Overall View Edited.jpg|alt=iPad Pro 11 Overall View Edited|800x800px]]
===FPC 1===
[[File:iPad Pro 11 FPC 1 Edited.jpg|alt=iPad Pro 11 FPC 1 Edited|800x800px]]
===FPC 2===
[[File:iPad Pro 11 FPC 2 Edited.jpg|alt=iPad Pro 11 FPC 2 Edited|800x800px]]
===FPC 3===
[[File:iPad Pro 11 FPC 3 Edited.jpg|alt=iPad Pro 11 FPC 3 Edited|800x800px]]
===FPC 4===
[[File:iPad Pro 11 FPC 4 Edited.jpg|alt=iPad Pro 11 FPC 4 Edited|800x800px]]
===FPC 5===
[[File:iPad Pro 11 FPC 5 Edited.jpg|alt=iPad Pro 11 FPC 5 Edited|800x800px]]
===FPC 6===
[[File:iPad Pro 11 FPC 6 Edited.jpg|alt=iPad Pro 11 FPC 6 Edited|800x800px]]
===FPC 7===
[[File:iPad Pro 11 FPC 7 Edited.jpg|alt=iPad Pro 11 FPC 7 Edited|800x800px]]
===FPC 8===
[[File:iPad Pro 11 FPC 8 Edited.jpg|alt=iPad Pro 11 FPC 8 Edited|800x800px]]
===FPC 9===
[[File:iPad Pro 11 FPC 9 Edited.jpg|alt=iPad Pro 11 FPC 9 Edited|800x800px]]
===FPC 10===
[[File:iPad Pro 11 FPC 10 Edited.jpg|alt=iPad Pro 11 FPC 10 Edited|800x800px]]
===FPC 11===
[[File:iPad Pro 11 FPC 11 Edited.jpg|alt=iPad Pro 11 FPC 11 Edited|800x800px]]
===FPC 12===
[[File:iPad Pro 11 FPC 12 Edited.jpg|alt=iPad Pro 11 FPC 12 Edited|800x800px]]
===FPC 13===
[[File:iPad Pro 11 FPC 13 Edited.jpg|alt=iPad Pro 11 FPC 13 Edited|800x800px]]
===FPC 14===
[[File:iPad Pro 11 FPC 14 Edited.jpg|alt=iPad Pro 11 FPC 14 Edited|800x800px]]
==iPad Pro 12.9 1st Gen==
===Overall View 1===
[[File:iPad Pro 12.9 1st Gen Overall 1.jpg|alt=iPad Pro 12.9 1st Gen Overall 1|800x800px]]
===Overall View 2===
[[File:iPad Pro 12.9 1st Gen Overall 2.jpg|alt=iPad Pro 12.9 1st Gen Overall 2|800x800px]]
===Connector 1===
[[File:iPad Pro 12.9 1st Gen Connector 1.jpg|alt=iPad Pro 12.9 1st Gen Connector 1|800x800px]]
===Connector 2===
[[File:iPad Pro 12.9 1st Gen Connector 2.jpg|alt=iPad Pro 12.9 1st Gen Connector 2|800x800px]]
===Connector 3===
[[File:iPad Pro 12.9 1st Gen Connector 3.jpg|alt=iPad Pro 12.9 1st Gen Connector 3|800x800px]]
===Connector 4===
[[File:iPad Pro 12.9 1st Gen Connector 4.jpg|alt=iPad Pro 12.9 1st Gen Connector 4|800x800px]]
===Connector 5===
[[File:iPad Pro 12.9 1st Gen Connector 5.jpg|alt=iPad Pro 12.9 1st Gen Connector 5|800x800px]]
===Connector 6===
[[File:iPad Pro 12.9 1st Gen Connector 6.jpg|alt=iPad Pro 12.9 1st Gen Connector 6|800x800px]]
===Connector 7===
[[File:iPad Pro 12.9 1st Gen Connector 7.jpg|alt=iPad Pro 12.9 1st Gen Connector 7|800x800px]]
===Connector 8===
[[File:iPad Pro 12.9 1st Gen Connector 8.jpg|alt=iPad Pro 12.9 1st Gen Connector 8|800x800px]]
===Backlight IC===
[[File:iPad Pro 12.9 1stG Backlight.jpg|alt=iPad Pro 12.9 1stG Backlight|800x800px]]
===Tristar===
[[File:iPad Pro 129 1stG Tristar.jpg|alt=iPad Pro 129 1stG Tristar|800x800px]]
==iPad Pro 12.9 2nd Gen==
===Top FPC===
[[File:iPad Pro 12.9 2nd Gen Connector 1 Edited.jpg|alt=iPad Pro 12.9 2nd Gen Connector 1 Edited|800x800px]]
===Bottom FPC===
[[File:iPad Pro 12.9 2nd Gen Connector 2 .jpg|alt=iPad Pro 12.9 2nd Gen Connector 2 |800x800px]]
==iPad Pro 12.9 3rd Gen==
iPad Pro 12.9 3rd Gen Diode Readings
===Overall View===
[[File:iPad Pro 1293 Overall.jpg|800x800px]]
===Connector 1===
[[File:iPad Pro 1293 Connector 1 Water.jpg|800x800px]]
===Connector 2===
[[File:iPad Pro 1293 Connector 2 Water-2.jpg|800x800px]]
===Connector 3===
[[File:iPad Pro 12.9 3rd Gen Connector 3.jpg|800x800px]]
===Connector 4===
[[File:iPad Pro 12.9 3rd Gen Connector 4.jpg|800x800px]]
== iPad Pro 12.9 4th Gen ==
Overall View:
[[File:iPad Pro 129 4th Overall View Edited.jpg|alt=iPad Pro 129 4th Overall View Edited|800x800px]]
Charging Port:
[[File:iPad Pro 129 4th Gen Charging Port Edited.jpg|alt=iPad Pro 129 4th Gen Charging Port Edited|800x800px]]
C1:
[[File:iPad Pro 129 4th Gen C1 Edited.jpg|alt=iPad Pro 129 4th Gen C1 Edited|800x800px]]
C2:
[[File:iPad Pro 129 4th Gen C2 Edited.jpg|alt=iPad Pro 129 4th Gen C2 Edited|800x800px]]
C3:
[[File:iPad Pro 129 4th Gen C3 Edited.jpg|alt=iPad Pro 129 4th Gen C3 Edited|800x800px]]
C4:
[[File:iPad Pro 129 4th Gen C4 Edited.jpg|alt=iPad Pro 129 4th Gen C4 Edited|800x800px]]
C5:
[[File:iPad Pro 129 4th Gen C5 Edited.jpg|alt=iPad Pro 129 4th Gen C5 Edited|800x800px]]
C6:
[[File:iPad Pro 129 4th Gen C6 Edited.jpg|alt=iPad Pro 129 4th Gen C6 Edited|800x800px]]
C7:
[[File:iPad Pro 129 4th Gen C7 Edited.jpg|alt=iPad Pro 129 4th Gen C7 Edited|800x800px]]
C8:
[[File:iPad Pro 129 4th Gen C8 Edited.jpg|alt=iPad Pro 129 4th Gen C8 Edited|800x800px]]
C9:
[[File:iPad Pro 129 4th Gen C9 Edited.jpg|alt=iPad Pro 129 4th Gen C9 Edited|800x800px]]
C10:
[[File:iPad Pro 129 4th Gen C10 Edited.jpg|alt=iPad Pro 129 4th Gen C10 Edited|800x800px]]
C11:
[[File:iPad Pro 129 4th Gen C11 Edited.jpg|alt=iPad Pro 129 4th Gen C11 Edited|800x800px]]
C12:
[[File:iPad Pro 129 4th Gen C12 Edited.jpg|alt=iPad Pro 129 4th Gen C12 Edited|800x800px]]
C13:
[[File:iPad Pro 129 4th Gen C13 Edited.jpg|alt=iPad Pro 129 4th Gen C13 Edited|800x800px]]
C14:
[[File:iPad Pro 129 4th Gen C14 Edited.jpg|alt=iPad Pro 129 4th Gen C14 Edited|800x800px]]
C15:
[[File:iPad Pro 129 4th Gen C15 Edited.jpg|alt=iPad Pro 129 4th Gen C15 Edited|800x800px]]
C16:
[[File:iPad Pro 129 4th Gen C16 Edited.jpg|alt=iPad Pro 129 4th Gen C16 Edited|800x800px]]
C17:
[[File:iPad Pro 129 4th Gen C17 Edited.jpg|alt=iPad Pro 129 4th Gen C17 Edited|800x800px]]
C18:
[[File:iPad Pro 129 4th Gen C18 Edited.jpg|alt=iPad Pro 129 4th Gen C18 Edited|800x800px]]
==iPad Mini 4==
===Overall View===
[[File:iPad Mini 4 Overall View Edited.jpg|alt=iPad Mini 4 Overall View Edited|800x800px]]
===LCD Connector===
[[File:iPad Mini 4 LCD Edited.jpg|alt=iPad Mini 4 LCD Edited|800x800px]]
===Digitizer Connector===
[[File:iPad Mini 4 Digi Edited.jpg|alt=iPad Mini 4 Digi Edited|800x800px]]
===Battey Connector===
[[File:iPad Mini 4 Battery Edited.jpg|alt=iPad Mini 4 Battery Edited|800x800px]]
===Volume Flex===
[[File:iPad Mini 4 Volume Mic Edited.jpg|alt=iPad Mini 4 Volume Mic Edited|800x800px]]
===Rear Camera===
[[File:iPad Mini Rear Camera Edited.jpg|alt=iPad Mini Rear Camera Edited|800x800px]]
===Power Flex===
[[File:iPad Mini 4 Power Button Edited.jpg|alt=iPad Mini 4 Power Button Edited|800x800px]]
===Front Camera===
[[File:iPad Mini 4 Front Camera Edited.jpg|alt=iPad Mini 4 Front Camera Edited|800x800px]]
===Headphone Jack===
[[File:iPad Mini 4 Headphone Jack Edited.jpg|alt=iPad Mini 4 Headphone Jack Edited|800x800px]]
==iPad Mini 5==
===iPad Mini 5 Overall View===
[[File:iPad Mini 5 Overall Edited.jpg|alt=iPad Mini 5 Overall Edited|1067x1067px]]
===iPad Mini 5 Connector 1===
[[File:iPad mini 5 Connector 1 Edited.jpg|alt=iPad mini 5 Connector 1 Edited|1067x1067px]]
===iPad mini 5 Connector 2 Edited===
[[File:iPad Mini 5 Connector 2 Edited.jpg|alt=iPad Mini 5 Connector 2 Edited|1067x1067px]]
===iPad Mini 5 Connector 3 Edited===
[[File:iPad Mini 5 Connector 3 Edited.jpg|alt=iPad Mini 5 Connector 3 Edited|1067x1067px]]
===iPad Mini 5 Battery Connector===
[[File:iPad Mini 5 Battery Connector.jpg|alt=iPad Mini 5 Battery Connector|1067x1067px]]
===iPad Mini 5 4G Antenna===
[[File:iPad Mini 5 4G Antenna Edited.jpg|alt=iPad Mini 5 4G Antenna Edited|1067x1067px]]
===iPad Mini 5 4G Antenna Edited===
[[File:iPad Mini 5 Charging Port Edited.jpg|alt=iPad Mini 5 Charging Port Edited|800x800px]]
===iPad Mini 5 Front Camera Edited===
[[File:iPad Mini 5 Front Camera Edited.jpg|alt=iPad Mini 5 Front Camera Edited|1067x1067px]]
===iPad Mini 5 Front Mic Edited===
[[File:iPad Mini 5 Front Mic Edited.jpg|alt=iPad Mini 5 Front Mic Edited|1067x1067px]]
===iPad Mini 5 Headphone Jack Edited===
[[File:iPad Mini 5 Headphone Jack Edited.jpg|alt=iPad Mini 5 Headphone Jack Edited|1067x1067px]]
===iPad Mini 5 Power Button Edited===
[[File:iPad Mini 5 Power Button Edited.jpg|alt=iPad Mini 5 Power Button Edited|1067x1067px]]
===iPad Mini 5 Rear Camera Edited===
[[File:iPad Mini 5 Rear Camera Edited.jpg|alt=iPad Mini 5 Rear Camera Edited|1067x1067px]]
==iPad Air 3==
===Connector 1 and 2===
[[File:iPad Air 3 Final FPC 1 and 2.jpg|alt=iPad Air 3 Final FPC 1 and 2|800x800px]]
===Connector 3 and 4===
[[File:iPad Air 3 Final DM.jpg|alt=iPad Air 3 Final DM|800x800px]]
===Headphone Jack===
[[File:iPad Air 3 Headphone Jack.jpg|alt=iPad Air 3 Headphone Jack|800x800px]]
===iPad Air 3 Front Camera===
[[File:iPad Air 3 Front Camera.jpg|alt=iPad Air 3 Front Camera|800x800px]]
===Power Button===
[[File:iPad Air 3 Power Button.jpg|alt=iPad Air 3 Power Button|800x800px]]
===Top Mic===
[[File:iPad Air 3 Top Mic.jpg|alt=iPad Air 3 Top Mic|800x800px]]<br />
__NEWSECTIONLINK__
[[Category:iPad]]
7xisee21dnbpbwdz7te7s54ur6fjd2z
iPad Laminated Display Sizing
0
1818
5344
5343
2020-12-19T00:45:13Z
PaladinJax
199
5344
wikitext
text/x-wiki
These measurements were taken with the opposite side of the LCD on these models facing forward. Example seen on the right.
The depth measures the LCD offset to the glass, and the glass+LCD thickness measures the combined thickness of both on the left side of the iPad (This is because on some models such as Air 2 and Pro 12.9 have a raised edge on the right side of the LCD).
<br />
[[File:iPadLaminatedOrientation.jpg|thumb|The orientation in which measurements are taken.]]
<br />
{| class="wikitable"
|+
Measurements for Laminated Displays
!
!iPad Air 2nd Gen
!iPad Mini 4th Gen
!iPad Pro 12.9" 1st Gen
!iPad Pro 9.7" 1st Gen
!iPad Pro 10.5"
!iPad Pro 12.9" 2nd Gen
!iPad Pro 11"
!iPad Pro 12.9" 3rd Gen
!iPad Air 3rd Gen
!iPad Mini 5th Gen
!iPad Pro 11" 4th Gen
!iPad Pro 12.9" 4th Gen
!iPad Air 4th Gen
|-
|Glass Thickness
|0.6mm
|0.5mm
|
|
|0.5mm
|0.5mm
|
|
|
|
|
|
|
|-
|Glass+LCD Thickness
|2.7mm
|2.6mm
|
|
|2.4mm
|2.6mm
|
|
|
|
|
|
|
|-
|Camera Side Depth
|15.8mm/17mm
|16.3mm
|
|
|14.5mm
|16.8mm
|
|
|
|
|
|
|
|-
|Home Button Side Depth
|13mn
|13.2mm
|
|
|10.3mm
|13.4mm
|
|
|
|
|
|
|
|-
|Left Offset Depth
|3.8mm
|1.9mm
|
|
|2mm
|5.8mm
|
|
|
|
|
|
|
|-
|Right Offset Depth
|3.4mm
|1.9mm
|
|
|1.9mm
|4.4mm
|
|
|
|
|
|
|
|}
3ovawj226n00c8rv46lem0exemqib2h
iPad Pro Pictures
0
65
585
371
2020-02-02T11:38:33Z
Piernov
10
Category iPad
585
wikitext
text/x-wiki
{{DISPLAYTITLE:iPad Pro Pictures}}
==iPad Pro 9.7" 1st Gen WiFi==
==iPad Pro 9.7" 1st Gen Cellular==
==iPad Pro 12.9" 1st Gen Wifi==
==iPad Pro 12.9" 1st Gen Cellular==
==iPad Pro 10.5" 2nd Gen WiFi==
==iPad Pro 10.5" 2nd Gen Cellular==
==iPad Pro 12.9" 2nd Gen Wifi==
[[File:IPad_Pro_12.9_2nd_Gen_WiFi.jpg|512x512px]][[File:IPad_Pro_12.9_2nd_Gen_WiFi_4.jpg|400x400px]]<br><br>
[[File:IPad_Pro_12.9_2nd_Gen_WiFi_3.jpg|400x400px]][[File:IPad_Pro_12.9_2nd_Gen_WiFi_2.jpg|400x400px]]<br><br>
[[File:IPad_Pro_12.9_2nd_Gen_WiFi_5.jpg|600x600px]]
==iPad Pro 12.9" 2nd Gen Cellular==
==iPad Pro 11" 3nd Gen WiFi==
[[File:iPad_Pro_11"_3rd_Gen_WiFi.jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi.jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Screen_(Camera_&_IR_Sensors).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Screen_(Camera_&_IR_Sensors).jpg|400x400px]]<br><br>[[File:iPad_Pro_11"_3rd_Gen_WiFi_Screen_Cables.jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Screen_Cables.jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Fulll).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Fulll).jpg|545x545px]]<br><br>[[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Screen_Connectors).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Screen_Connectors).jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Top,_Speaker_Section).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Top,_Speaker_Section).jpg|400x400px]]
<br />
==iPad Pro 11" 3nd Gen Cellular==
==iPad Pro 12.9" 3nd Gen Wifi==
==iPad Pro 12.9" 3nd Gen Cellular==
[[Category:iPad]]
p9sa7rkidnx7h8pgmfuf8zpyjoufa5f
iPad Pro Touch Filter
0
146
6641
586
2022-10-08T17:14:57Z
Kroman
522
first image is incorrectly labeled as a blown touch filter, it is actually a blown backlight filter. edited to properly address it as a good indicator of a blown touch filter. Also added where to find replacements for blown backlight filters.
6641
wikitext
text/x-wiki
There is a very common issue on the iPad Pros (Specifically the 12.9" 1st and 2nd Generations) where if the LCD/Digitizer Flex is unplugged without disconnecting the battery connection, a Filter corresponding with touch will blow and needs to be replaced to restore touch functionality.
[[File:Blown Touch Filter.jpg|alt=Blown Backlight Filter, a good indicator of a blown touch filter.|thumb|Blown Backlight Filter, a good indicator of a blown touch filter.]]
Disconnect battery, check for continuity on Filter next to small capacitor as shown in the second image.
If no continuity, Filter/Coil is blown. Replace with a Coil with rating of 240ohms-350ma. Or take coil from Donor iPad Mini 1 like in the last image. Additionally, iPhone 6S touch filters can also be used (components L4211 and L4212 on 6s).
If the backlight filter is also blown, a 120ohm, 1.5a, size 0402 replacement can be found on iPad 4 (L2201), iPad 3 (L2201, L5761, L5760, L5714), iPad 2 (L2201, L5761, L5760, L5714), iPad Mini (L2201), iPad Mini 2 (L2201), and iPad Air (L7001).
[[File:What to look for.png|alt=What to look for|thumb|What to look for]]
<br />
[[File:FPC Measurements.png|alt=FPC Measurements|thumb|FPC Measurements]]
[[File:Replacement Filter- Coils.png|alt=Replacement Filter/ Coils|thumb|Replacement Filter/ Coils]]
<br />
[[Category:iPad]]
3kp1e2omo8q6ahgz3hltmw6a8rhvj3c
iPad Repair Tips
0
746
1575
2020-08-28T17:36:00Z
Chrisb
1
Created page with "<br /> ==== General ==== * It's good practice to unplug the battery from the iPad before unplugging the LCD, digitizer, and other extremities. These can result in mysterious..."
1575
wikitext
text/x-wiki
<br />
==== General ====
* It's good practice to unplug the battery from the iPad before unplugging the LCD, digitizer, and other extremities. These can result in mysterious issues (such as digitizer functioning in a "wonky" fashion, LCD Backlight staying off until reboot, etc.) and there have been reports of more severe happenings online. It's best to just unplug it to be safe.
==== iPad 2 ====
* When removing screens, be '''extremely''' careful when using the iSesamo on the entire left edge, and the upper right corner; It's easy to hurt the digitizer and the power/volume button cables when not careful, similar to the wifi antenna.
* '''Always''' heat the outer edge of the digitizer when removing or re-seating it, at least when salvaging a good digitizer, or reseating a new one. Even when it doesn't feel like you're putting heavy force onto the glass of the digitizer, the resistance from the adhesive '''will''' put additional stress, exponentially increasing the likelihood of breaking it.
==== iPad Mini ====
* Large EMI shield that is directly below the LCD screen is VERY SHARP.Be careful when removing as you very well can slice your finger on the edges of this shield
* When installing a new digitizer, check the solder contacts at the bottom of the digitizer, and make sure the contacts are either taped with fabric tape or kapton tape. If not, cover with a strip(s) of kapton tape. This can often times resolve issues where the power button is non-functional.
* Check to see if digitizer or LCD cables are loose when diagnosing/troubleshooting. With the shield removed it's easy for the two to become disconnected.
* Check to see that the volume/power button cable is loose when diagnosing/troubleshooting. A loose cable can result in mysterious outputs, such as a power button that doesn't work when pressed once, but fully functions when held down, etc.
* Digitizer and LCD connectors are '''very''' fragile... Be extra gentle when removing or plugging in either or '''the ports will break.'''
* Check the male connectors when installing a digitizer, LCD, or similar snap-in connector. Anomalies in the connectors - such as a bent pin - can result in damaging the female connector end upon install by breaking teeth, etc.
* When trying to solder a new female connector for the digitizer (And the same rule can be stated for the LCD connector, battery, and extremities connectors as well), be '''extra''' careful to not use too much force after heating the old, broken port. The pads on these logic boards tear off incredibly easy, which will lead to a much more difficult overall repair, if repairable.
* When soldering a new home button on the digitizers, make sure both the cable for the button assembly, and the cable with the solder points are perfectly aligned. An efficient way to do this is to use the two holes that are present on both cables and align them flush. If you feel as though the cables will move while you're trying to solder, using kapton tape on both sides of the cable (Past the solder points of course) can help keep the cable aligned while you solder them down with fresh solder and flux.
* When installing a new digitizer or replacing the old one, make sure to check the flex cable is not kinked or creased. The cable should bend in, but '''not be creased'''. A crease or kink in the flex will most likely result in the digitizer breaking.
==== iPad Air ====
* When removing a good digitizer for repair or testing, work around the touch IC on the bottom right side of the digitizer. Use heat and the iSesamo on the outside from the top, left, and bottom sections. Use guitar picks periodically to keep the screen open. When you get to the right side of the digitizer, use the guitar pick instead of the iSesamo and be very careful about halfway down the right side of the screen, so as to not put pressure on the touch IC. Once you loosen it somewhat, you can try to see if it will pry up, but don't use excessive force to do so. This care is crucial to keep from damaging the touch IC.
==== iPad 2-4 Cellular ====
* When removing the LCD and digitizer '''DO NOT''' use a shim on the upper section of the battery terminal!! This will likely tear the ribbon cable connecting the CDMA or GMA card to the logic board.
axgkc14ejg03q81sgnwnnfyqllnmcdx
iPhone/iPad Component Compatibility
0
119
6459
5775
2022-04-05T14:18:21Z
Zaim
686
added iPad models
6459
wikitext
text/x-wiki
<br />
{| class="wikitable sortable"
|+
|iPhone Chip Cross Refrence
|Chip
|Alias
|
| colspan="19" |iPhone
|
| colspan="7" |iPad
|-
|
|
|
|
|5
|5C
|5s
|6
|6+
|6s
|6s+
|7
|7+
|SE
|8
|8+
|X
|XR
|XS
|XS MAX
|11
|11 Pro
|11 Pro Max
|
|iPad Air
|iPad Air 2
|iPad 4
|iPad Mini 1
|iPad Mini Ret 2/3
|iPad Pro 11"
|iPad Pro 12" 3rd
|-
|Display Driver/Power IC
|TI 65730a0p
|Chestnut
|
| -----
|U3
|U3
|U1501
|U1501
|U4000
|U4000
|U3703
|U3703
|U4000
|U5600
|U5600
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|USB Logic & Charging IC
|NXP 1608A1
|Tristar
|
|U2
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|<nowiki>-----</nowiki>
|
|
|
| -----
| -----
|U5900
|U1300
| -----
|
|
|-
|USB Logic & Charging IC
|NXP 1610A1
|Tristar
|
| -----
|U2
|U2
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|<nowiki>-----</nowiki>
|
|
|
| -----
| -----
| -----
| -----
|U1300
|
|
|-
|USB Logic & Charging IC
|NXP 1610A2
|Tristar
|
| -----
| -----
| -----
|U1700
|U1700
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|<nowiki>-----</nowiki>
|
|
|
|U3500
|U3500
| -----
| -----
| -----
|
|
|-
|USB Logic & Charging IC
|NXP 1610A3
|Tristar
|
| -----
|U2
|U2
|U1700
|U1700
|U4500
|U4500
| -----
| -----
|U4500
| -----
| -----
| -----
| -----
| -----
| -----
|<nowiki>-----</nowiki>
|
|
|
|
|
|
|
|
|
|
|-
|USB Logic & Charging IC
|NXP 610A3B
|Tristar
|
| -----
|U2
|U2
|U1700
|U1700
|U4500
|U4500
|U4001
|U4001
|U4500
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|U3650
|U3650
|-
|USB Logic & Charging IC
|NXP 610A3C
|Tristar
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|U3650
|U3650
|-
|Gas Guage Mosfet
|
|
|
| -----
|
|
|
|
|
|
|Q2012
|Q2012
|
|Q3200/Q3201
|Q3200/Q3201
|Q3200/Q3201
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Logic IC
|NXP1612A1
|Hydra
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U6300
|U6300
|U6300
|U6300
|U6300
|U6300
|U3300
|U6300
|U6300
|
|
|
|
|
|
|
|
|-
|Charging Triode
|CSD68813W10
|
|
| -----
| -----
|Q2
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Mosfet
|CSD68815w15
|"Charging Mosfet
|
| -----
| -----
|Q4
|Q1403
|Q1403
|Q2300
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Mosfet
|CSD68841W
|Charging Mosfet
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|Q3350
|Q3350
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging IC
|TI SN2400AB0
|Tigris
|
| -----
| -----
| -----
| -----
| -----
|U2300
|U2300
|U2300
|U2300
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|charging IC
|TISN2501A1
|Tigris
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U3300
|U3300
|U3300
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Wireless charging IC
|BC59355A2
|Iktara
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U3400
|U3400
|U3400
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Strobe/Flash Driver/Boodst IC
|LM3564A1TMX
|
|
| -----
| -----
|U17
|U1602
|U1602
|U3300
|U3300
| -----
| -----
|U3300
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer/Touchsreen Controller Chip
|TI343S0645
|Sage
|
|U14
|U15
|U15
| -----
| -----
| -----
| -----
| -----
| -----
|U4300
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer/Touchsreen Controller Chip
|TI343S0694
|Meson
|
| -----
| -----
| -----
|U2402
|U2402
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Touchscreen IC
|BCM5976
|Cumulus
|
|U12
|U12
|U12
|U2401
|U2401
| -----
| -----
| -----
| -----
|U4301
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|U6600/U6650
|U4100/U41500
| -----
| -----
| -----
|
|
|-
|TouchID Driver
|TILM3638
|?
|
| -----
| -----
|U10
|U1503
|U1503
|U4040
|U4040
| -----
| -----
|U4040
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Touchscreen Power IC
|IC 3373A
|Acorn
|
|
|
|
|
|
|
|
|
|
|
|
|
|U5600
|
|U5600
|U5600
|
|
|
|
|
|
|
|
|
|
|
|-
|Touch ID Power IC
|LP5907UVX 1.8
|
|
| -----
| -----
| -----
|U2100
|U2100
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|PMIC
|338S1216 A2
|Amber
|
| -----
| -----
|U7
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|PMIC/Power Man IC
|338S1251-AZ
|Adi
|
| -----
| -----
| -----
|U1202
|U1202
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|PMIC
|338S00155 A1
|Antigua
|
| -----
| -----
| -----
| -----
| -----
|U2000
|U2000
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|PMIC
|338S00225-A1
|Adelyn
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U1801
|U1801
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|PMIC
|338S00309-B0
|
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U2700
|U2700
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Baseband PMIC
|PM8018
|
|
| -----
|U2_RF
|U2_RF
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Baseband PMIC
|PM8019
|
|
| -----
| -----
| -----
|U_PMICRF
|U_PMICRF
| -----
| -----
| -----
| -----
|U_PMICRF
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Baseband PMIC
|PMD9635
|
|
| -----
| -----
| -----
| -----
| -----
|U_PMU_RF
|U_PMU_RF
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Baseband PMIC - Qualcomm
|PMD9655
|Qualcomm
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U_MDM_E
|U_MDM_E
|U_MDM_E
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Camera LDO IC
|LP5907UVX 2.85
|
|
| -----
| -----
|U210
|U2301
|U2301
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Backlight Driver/Boost Chip
|LM3534TMX
|
|
| -----
|U23
|U23
|U1502
|U1502/U1580
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Backlight Driver/Boost Chip
|LM3539A0YFFR
|
|
| -----
| -----
| -----
| -----
| -----
|U4020/U4050
|U4020/U4050
|U3701
|U4601/U3701
|U4020
|U5650
|5660
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Speaker Amp/Audio IC
|338S1202
|
|
| -----
| -----
|U22
|U1601
|U1601
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Speaker Amp/Audio IC
|338S1285
|
|
| -----
| -----
| -----
| -----
| -----
|U3700
|U3700
| -----
| -----
|U3700
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Speaker Amp/Audio IC
|338S00295
|
|
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|U3502?
|U3402/U3502?
| -----
|U5000
|U5000/U5100
|U4900/U5000
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Audio Codec
|338S1201
|
|
| -----
| -----
|U21
|U0900
|U0900
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Audio Codec
|338S00105
|
|
| -----
| -----
| -----
| -----
| -----
|U3500
|U3500
|U3500
|U3500
|U3500
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|Wifi/Bluetooth IC
|339S0228/339S0231/339S0242
|
|
| -----
| -----
| -----
|U5201_RF
|U5201_RF
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|NFC Boost IC
|AS3923
|Stockholm
|
| -----
| -----
| -----
|U5302_RF
|U5302_RF
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
| -----
|
|
|
|
|
|
|
|
|
|
|
|-
|LCD FPC Connector
|
|
|
|J5
|J5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|LCD FPC Connector
|
|
|
|
|
|
|J2019
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|LCD Connector
|
|
|
|
|
|J5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|LCD FPC Connector
|
|
|
|
|
|
|
|J2019
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|J4
|J4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|
|
|J2401
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|
|
|
|J2401
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|
|
|
|
|
|J4200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|
|
|
|
|
|
|J4502
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Digitizer Connector
|
|
|
|
|
|
|
|
|
|
|
|
|
|J5700
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Battery FPC Connector
|
|
|
|
|
|
|J2523
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Battery FPC Connector
|
|
|
|
|
|
|
|J2525
|J2400
|J2400
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Home Button FPC Connector
|
|
|
|
|
|
|J2118
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Home Button FPC Connector
|
|
|
|
|
|
|
|J2118
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Home Button FPC Connector
|
|
|
|
|
|
|
|
|J4100
|J4100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Port Connec tor
|
|
|
|
|J7
|J7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Port FPC Dock Connector
|
|
|
|
|
|
|J1817
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Port FPC Dock Connector
|
|
|
|
|
|
|
|J1817
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Port FPC Dock Connector
|
|
|
|
|
|
|
|
|J4600
|J4600
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Charging Port FPC Dock Connector
|
|
|
|
|
|
|
|
|
|
|
|
|
|J6400
|J6400
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Power Volume Connector
|
|
|
|
|J2
|J2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Backlight Filter Fuse
|240Ohm 350Ma 0201
|
|
|X
|X
|X
|X
|X
|X
|X
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|Ferrite Bead Filter
|120Ohm 201MA 01005
|
|
|X
|X
|X
|X
|X
|X
|X
|
|
|
|
|
|
|
|
|
|
|
|
|
|X
|
|
|
|
|
|
|}
{{DISPLAYTITLE:iPhone/iPad Component Compatibility}}
[[Category:iPhone 5]]
[[Category:iPhone 5c]]
[[Category:iPhone 5s]]
[[Category:iPhone 6]]
[[Category:iPhone 6+]]
[[Category:iPhone 6s]]
[[Category:iPhone 6s+]]
[[Category:iPhone 7]]
[[Category:iPhone 7+]]
[[Category:iPhone 8]]
[[Category:iPhone 8+]]
[[Category:iPhone SE]]
[[Category:iPhone X]]
[[Category:iPhone XR]]
[[Category:iPhone XS]]
[[Category:iPhone XS Max]]
[[Category:iPad]]
0add7jictsjlcbfemmdbfisnbzub0nt
iPhone/iPad Tristar
0
39
587
378
2020-02-02T11:39:08Z
Piernov
10
Category iPad iPhone
587
wikitext
text/x-wiki
{{DISPLAYTITLE:iPhone/iPad Tristar}}
For compatibility see [[iPhone/iPad Component Compatibility]]
[[File:IPhone-iPad Tristar 3.jpg|800x800px]]
[[Category:iPad]] [[Category:iPhone]]
dr9p3lfmzixlgklh3inbjsrljy0l7ds
iPhone 11 Pro Smart Case Teardown
0
287
737
736
2020-02-18T23:53:21Z
Chrisb
1
737
wikitext
text/x-wiki
This case does not have an ISL9240.
[[File:iPhone 11 Smart Case 01.jpg|800x800px]]
[[File:iPhone 11 Smart Case 02.jpg|800x800px]]
[[File:iPhone 11 Smart Case 03.jpg|800x800px]]
[[File:iPhone 11 Smart Case 04.jpg|800x800px]]
[[File:iPhone 11 Smart Case 05.jpg|800x800px]]
[[File:iPhone 11 Smart Case 06.jpg|800x800px]]
[[File:iPhone 11 Smart Case 07.jpg|800x800px]]
[[File:iPhone 11 Smart Case 08.jpg|800x800px]]
[[File:iPhone 11 Smart Case 09.jpg|800x800px]]
[[File:iPhone 11 Smart Case 10.jpg|800x800px]]
[[File:iPhone 11 Smart Case 11.jpg|800x800px]]
[[File:iPhone 11 Smart Case 12.jpg|800x800px]]
[[File:iPhone 11 Smart Case 13.jpg|800x800px]]
[[File:iPhone 11 Smart Case 14.jpg|800x800px]]
[[File:iPhone 11 Smart Case 15.jpg|800x800px]]
[[File:iPhone 11 Smart Case 16.png|800x800px]]
[[File:iPhone 11 Smart Case 17.png|800x800px]]
[[File:iPhone 11 Smart Case 18.png|800x800px]]
[[File:iPhone 11 Smart Case 19.png|800x800px]]
rp83dh1fv50ntb0vcxoil2um1px0dua
iPhone 12 Pro Diode Mode Measurements
0
1724
5103
2020-10-23T16:24:36Z
Chrisb
1
Redirected page to [[iPhone Diode Mode Measurements#iPhone 12 Pro]]
5103
wikitext
text/x-wiki
#REDIRECT [[iPhone Diode Mode Measurements#iPhone 12 Pro]]
7itjmguz1pllp309201k0w6nlp7nm3v
iPhone Board Swap
0
2046
6127
6126
2021-09-28T17:02:43Z
Chrisb
1
6127
wikitext
text/x-wiki
iPhones up to and including the 6 for data only:
* CPU
* NAND
* Logic EEPROM
If you want a fully functional phone:
* Baseband
* Baseband EEPROM
iPhones 6s and newer for data only:
* CPU
* NAND
* Logic EEPROM
If you want a fully functional phone:
* Baseband
* Baseband EEPROM
* WIFI IC
twap6apd9abacbk0ubhy2d62d8beer9
iPhone Component Compatibility
0
121
306
289
2019-12-11T04:02:45Z
Chrisb
1
Chrisb moved page [[IPhone Component Compatibility]] to [[iPhone Component Compatibility]] without leaving a redirect: Case
289
wikitext
text/x-wiki
#REDIRECT [[iPhone/iPad Component Compatibility]]
{{DISPLAYTITLE:iPhone Component Compatibility}}
216by5p969pg6srvgjd8vv8s2hio79p
iPhone Diode Measurements
0
1415
3064
2020-10-06T15:52:46Z
Chrisb
1
Chrisb moved page [[iPhone Diode Measurements]] to [[iPhone Diode Mode Measurements]]
3064
wikitext
text/x-wiki
#REDIRECT [[iPhone Diode Mode Measurements]]
5mjsqlh49gb91rcop0jl4v6mfcebxh6
iPhone Diode Mode Measurements
0
164
7734
7733
2024-12-31T14:12:59Z
Dfcloud6
1726
typo fix
7734
wikitext
text/x-wiki
==iPhone 14 Pro Max==
Battery Connector: <br />
[[File:iPhone 14 Pro Max Battery Connector.jpg|alt=iPhone 14 Pro Max Battery Connector|800x800px|iPhone 14 Pro Max Battery Connector]]<br />
Charging Port Connector: <br />
[[File:iPhone 14 Charging Port.jpg|alt=iPhone 14 Pro Max Battery Connector|977x977px]]<br />
Display Connector: <br />
[[File:iPhone 14 Pro Max Display Connector.jpg|alt=iPhone 14 Pro Max Display Connector|921x921px]]<br />
Power Button Connector: <br />
[[File:iPhone 14 Pro Max Power Button Connector.jpg|alt=iPhone 14 Pro Max Power Button Connector|800x800px]]<br />
==iPhone 13 Pro Max==
LCD & TOUCH
[[File:lcd and touch 13pm dfcloud6.jpg|998x998px]]
CHARGE DOCK+VBATT+PWRKEY+5G
[[File:charge fpc 13pm dfcloud6.jpg|998x998px]]
RF
[[File:RF 13pm dfcloud6.jpg|998x998px]]
ALS+IR-CAM+TORCH+LIDAR
[[File:ALS and IRCAM 13pm dfcloud6(2).jpg|998x998px]]
FCAM+WIDECAM+ULTRA-WIDECAM
[[File:CAMERAS 13pm dfcloud6.jpg|998x998px]]
<br />
==iPhone 13==
LCD & TOUCH
[[File:lcd iphone 13 dfcloud6.jpg|998x998px]]
ALS+IR-CAM+TORCH+SIM-CARD
[[File:als iphone 13 dfcloud6.jpg|998x998px]]
RF
[[File:rf iphone 13 dfcloud6.jpg|998x998px]]
DOCK+VBATT+PWRKEY
[[File:dock iphone 13 dfcloud6.jpg|998x998px]]
CAMERAS
[[File:cameras iphone 13 dfcloud6.jpg|998x998px]]
==iPhone 12 Pro Max==
Charging Port
[[File:iPhone 12 Pro Max Charging Port.webp|alt=iPhone 12 Pro Max Charging Port]]
==iPhone 12 Pro==
FPC 1 and 2:
[[File:iPhone 12 Pro FPC 1 and 2.png|alt=iPhone 12 Pro FPC 1 and 2|800x800px]]
FPC 3 4 and 5:
[[File:iPhone 12 Pro FPC 3, 4 and 5.png|alt=iPhone 12 Pro FPC 3, 4 and 5|800x800px]]
FPC 6, 7 and 8:
[[File:iPhone 12 Pro FPC 6, 7 and 8.png|alt=iPhone 12 Pro FPC 6, 7 and 8|800x800px]]
FPC 9:
[[File:iPhone 12 Pro FPC 9.png|alt=iPhone 12 Pro FPC 9|800x800px]]
FPC 10:
[[File:iPhone 12 Pro FPC 10.png|alt=iPhone 12 Pro FPC 10|800x800px]]
FPC 11:
[[File:iPhone 12 Pro FPC 11.png|alt=iPhone 12 Pro FPC 11|800x800px]]
FPC 12:
[[File:iPhone 12 Pro FPC 12.png|alt=iPhone 12 Pro FPC 12|800x800px]]
FPC 13 and 14:
[[File:iPhone 12 Pro FPC 13 and 14.png|alt=iPhone 12 Pro FPC 13 and 14|800x800px]]
FPC 15 and 16:
[[File:iPhone 12 Pro FPC 15 and 16.png|alt=iPhone 12 Pro FPC 15 and 16|800x800px]]
==iPhone 11==
Overall View: <br>
[[File:iPhone 11 Overall View 1.jpg|800x800px]]<br>
Overall View 2: <br>
[[File:iPhone 11 Overall View 2.jpg|800x800px]]<br>
Connector 1: <br>
[[File:iPhone 11 Connector 1.jpg|800x800px]]<br>
Connector 2: <br>
[[File:iPhone 11 Connector 2.jpg|800x800px]]<br>
Connector 3:<br>
[[File:iPhone 11 Connector 3.jpg|800x800px]]<br>
Connector 4: <br>
[[File:iPhone 11 Connector 4.jpg|800x800px]]<br>
Connector 5:<br>
[[File:iPhone 11 Connector 5.jpg|800x800px]]<br>
Connector 6: <br>
[[File:iPhone 11 Connector 6.jpg|800x800px]]<br>
Connector 7: <br>
[[File:iPhone 11 Connector 7.jpg|800x800px]]<br>
Connector 8: <br>
[[File:iPhone 11 Connector 8.jpg|800x800px]]<br>
Connector 9: <br>
[[File:iPhone 11 Connector 9.jpg|800x800px]]<br>
Connector 10: <br>
[[File:iPhone 11 Connector 10.jpg|800x800px]]<br>
Connector 11: <br>
[[File:iPhone 11 Connector 11.jpg|800x800px]]<br>
Connector 12:<br>
[[File:iPhone 11 Connector 12.jpg|800x800px]]<br>
Connector 13:<br>
[[File:iPhone 11 Connector 13.jpg|800x800px]]<br>
Connector 14: <br>
[[File:iPhone 11 Connector 14.jpg|800x800px]]<br>
Connector 15: <br>
[[File:iPhone 11 Connector 15.jpg|800x800px]]<br>
==iPhone 11 Pro/Pro Max==
Overall View 1:
[[File:iPhone 11 Pro Overall 1 Final.jpg|alt=iPhone 11 Pro Overall 1 Final|800x800px]]
Overall View 2:
[[File:iPhone 11 Pro Overall 2 Final.jpg|alt=iPhone 11 Pro Overall 2 Final|800x800px]]
FPC 1:
[[File:iPhone 11 Pro FPC 1 Final.jpg|800x800px]]
FPC 2:
[[File:iPhone 11 Pro FPC 2 Final.jpg|alt=iPhone 11 Pro FPC 2 Final|800x800px]]
FPC 3:
[[File:iPhone 11 Pro FPC 3 Final.jpg|alt=iPhone 11 Pro FPC 3 Final|800x800px]]
FPC 4:
[[File:iPhone 11 Pro FPC 4 Final.jpg|alt=iPhone 11 Pro FPC 4 Final|800x800px]]
FPC 5:
[[File:iPhone 11 Pro FPC 5 Final.jpg|alt=iPhone 11 Pro FPC 5 Final|800x800px]]
FPC 6:
[[File:iPhone 11 Pro FPC 6 Final.jpg|alt=iPhone 11 Pro FPC 6 Final|800x800px]]
FPC 7:
[[File:iPhone 11 Pro FPC 7 Final.jpg|alt=iPhone 11 Pro FPC 7 Final|800x800px]]
FPC 8:
[[File:iPhone 11 Pro FPC 8 Final.jpg|alt=iPhone 11 Pro FPC 8 Final|800x800px]]
FPC 9:
[[File:iPhone 11 Pro FPC 9 Final.jpg|alt=iPhone 11 Pro FPC 9 Final|800x800px]]
FPC 10:
[[File:iPhone 11 Pro FPC 10 Final.jpg|alt=iPhone 11 Pro FPC 10 Final|800x800px]]
FPC 11:
[[File:iPhone 11 Pro FPC 11 Final.jpg|alt=iPhone 11 Pro FPC 11 Final|800x800px]]
FPC 12:
[[File:iPhone 11 Pro FPC 12 Final.jpg|alt=iPhone 11 Pro FPC 12 Final|800x800px]]
FPC 13:
[[File:iPhone 11 Pro FPC 13 Final.jpg|alt=iPhone 11 Pro FPC 13 Final|800x800px]]
FPC 14:
[[File:iPhone 11 Pro FPC 14 Final.jpg|alt=iPhone 11 Pro FPC 14 Final|800x800px]]
Proximity Sensor pin out
[[File:11 Pro dot projector pins.jpg|alt=11 Pro dot projector pins|800x800px]]
[[File:apple-iphone-11pro_nand.png|953x953px]]
<br />
==iPhone SE (2022)==
CHARGING DOCK
[[File:main se 2022.jpg|998x998px]]
LCD AND TOUCH-ID
[[File:VIDEO Y TOUCH SE 2022.jpg|998x998px]]
CAMERAS
[[File:CAMERAS IPHONE SE 2022 final.jpg|998x998px]]
RF AND PWRKEY
[[File:ANT POWER KEY SE 2022 final.jpg|998x998px]]
==iPhone SE (2020)==
Overall View:
[[File:iPhone SE Overall View Edited.jpg|alt=iPhone SE Overall View Edited|1422x1422px]]
Battery:
[[File:iPhone SE Battery Edited.jpg|alt=iPhone SE Battery Edited|800x800px]]
Cellular Antenna:
[[File:iPhone SE Cellular Antenna Edited.jpg|alt=iPhone SE Cellular Antenna Edited|800x800px]]
Charging Port:
[[File:iPhone SE Charging Port Edited.jpg|alt=iPhone SE Charging Port Edited|800x800px]]
Front Camera:
[[File:iPhone SE Front Camera Edited.jpg|alt=iPhone SE Front Camera Edited|800x800px]]
Home Button:
[[File:iPhone SE Home Button Edited.jpg|alt=iPhone SE Home Button Edited|800x800px]]
Power Button:
[[File:iPhone SE Power Button Edited.jpg|alt=iPhone SE Power Button Edited|800x800px]]
Rear Camera:
[[File:iPhone SE Rear Camera Edited.jpg|alt=iPhone SE Rear Camera Edited|800x800px]]
WiFi Antenna:
[[File:iPhone SE Wifi Edited.jpg|alt=iPhone SE Wifi Edited|800x800px]]
Wireless Charging:
[[File:iPhone SE Wireless Edited.jpg|alt=iPhone SE Wireless Edited|800x800px]]
<br />
==iPhone XR==
CHARGE DOCK
[[File:iPHONE XR DOCK CONECTOR VALUES.jpg|998x998px]]
LCD AND TOUCH
[[File:IPHONE XR VIDEO AND TOUCH CONECTOR VALUES (4).jpg|998x998px]]
RF+VBATT+SIM-CARD
[[File:IPHONE XR BATTERY CONECTOR VALUES (2).jpg|998x998px]]
FACE ID+F-CAM
[[File:IPHONE XR CAMERA CONECTOR VALUES (2).jpg|998x998px]]
PWRKEY+WIDE-CAM+RECEIVER
[[File:IPHONE XR AURICULAR CONECTOR VALUES (7).jpg|998x998px]]
==iPhone X Intel==
BBPMU:
[[File:iPhone X BBPMU.png|alt=iPhone X BBPMU (Intel)|800x800px]]
DSM:
[[File:iPhone X Intel DSM.png|alt=iPhone X Intel DSM|800x800px]]
ET:
[[File:iPhone X ET.png|alt=iPhone X ET|800x800px]]
GLNA:
[[File:iPhone X GLNA.png|alt=iPhone X GLNA|800x800px]]
GNSS:
[[File:iPhone X GNSS.png|alt=iPhone X GNSS|800x800px]]
GPOLAT:
[[File:iPhone X GPLAT.png|alt=iPhone X GPLAT|800x800px]]
GPOUAT:
[[File:iPhone X GPOUAT.png|alt=iPhone X GPOUAT|800x800px]]
GSMPA:
[[File:iPhone X GSMPA.png|alt=iPhone X GSMPA|800x800px]]
LATCP:
[[File:iPhone X LATCP.png|alt=iPhone X LATCP|800x800px]]
LBLN:
[[File:iPhone X LPLN.png|alt=iPhone X LPLN|800x800px]]
LBPA:
[[File:iPhone X LBPA.png|alt=iPhone X LBPA|800x800px]]
MHBLN:
[[File:iPhone X MHBLN.png|alt=iPhone X MHBLN|800x800px]]
MHPA:
[[File:iPhone X MHPA.png|alt=iPhone X MHPA|800x800px]]
NFC DCDC:
[[File:NFC DCDC S.png|alt=NFC DCDC S|800x800px]]
NFC:
[[File:iPhone X NFC.png|alt=iPhone X NFC|800x800px]]
Q3350:
[[File:iPhone X Q3350.png|alt=iPhone X Q3350|800x800px]]
QUAD P:
[[File:iPhone X Quad P.png|alt=iPhone X Quad P|800x800px]]
TDDPA:
[[File:iPhone X TDDPA.png|alt=iPhone X TDDPA|800x800px]]
BBCPU:
[[File:iPhone X BBCPU.png|alt=iPhone X BBCPU|800x800px]]
U2600:
[[File:iPhone X NAND.png|alt=iPhone X NAND|800x800px]]
PMIC:
[[File:iPhone X PMIC.png|alt=iPhone X PMIC|800x800px]]
U3100:
[[File:iPhone X U3100.png|alt=iPhone X U3100|800x800px]]
U3300:
[[File:iPhone X U3300.png|alt=iPhone X U3300|800x800px]]
U3400:
[[File:iPhone X U3400.png|alt=iPhone X U3400|800x800px]]
U3600:
[[File:iPhone X U3600.png|alt=iPhone X U3600|800x800px]]
U3620:
[[File:iPhone X U3620.png|alt=iPhone X U3620|800x800px]]
U3700:
[[File:iPhone X U3700.png|alt=iPhone X U3700|800x800px]]
U4100:
[[File:iPhone X U4100.png|alt=iPhone X U4100|800x800px]]
U4120:
[[File:iPhone X U4120.png|alt=iPhone X U4120|800x800px]]
U4400:
[[File:iPhone X U4400.png|alt=iPhone X U4400|800x800px]]
U4700:
[[File:iPhone X U4700.png|alt=iPhone X U4700|800x800px]]
U4900:
[[File:iPhone X U4900.png|alt=iPhone X U4900|800x800px]]
U5000:
[[File:iPhone X U5000.png|alt=iPhone X U5000|800x800px]]
U5100:
[[File:iPhone X U5100.png|alt=iPhone X U5100|800x800px]]
U5530:
[[File:iPhone X U5530.png|alt=iPhone X U5530|800x800px]]
U5600:
[[File:iPhone X U5600.png|alt=iPhone X U5600|800x800px]]
U6200:
[[File:iPhone X U6200.png|alt=iPhone X U6200|800x800px]]
U6300:
[[File:iPhone X U6300.png|alt=iPhone X U6300|800x800px]]
UATCP:
[[File:iPhone X UATCP.png|alt=iPhone X UATCP|800x800px]]
Wifi:
[[File:WIFFI.png|alt=iPhone X WiFi|800x800px]]
XCVR1:
[[File:iPhone X XCVR1.png|alt=iPhone X XCVR1|800x800px]]
XCVRO:
[[File:iPhone X XCVRO.png|alt=iPhone X XCVRO|800x800px]]CPU
[[File:iPhone X CPU diode readings.jpg|800x800px]]
Dot projector & Infrared camera
[[File:iPhone X Dot projector & Infrared Camera diode readings.jpg|800x800px]]
Sandwich top
[[File:iPhone X sandwich top diode readings.jpg|800x800px]]
Sandwich bottom (Qualcomm)
Sandwich bottom (Intel)
Battery connector & Charging IC (Tigris)
Rear camera connectors
Front camera connector
Strobe IC & MIC2 connector
MIC3
DIsplay connector
Touch connector
NFC
Power IC PMU
<br />
==iPhone 8 Plus==
<br />
==iPhone 8==
<br />
==iPhone 7 Plus==
<br />
==iPhone 7==
<br />
==iPhone 6s Plus==
<br />
==iPhone 6s==
<br />
==iPhone 6 Plus==
<br />
==iPhone 6==
Display connector
Display
Audio IC
NAND
Tristar U2
NFC
Wireless
<br />
[[Category:iPhone 11]]
[[Category:iPhone 11 Pro]]
[[Category:iPhone 11 Pro Max]]
[[Category:iPhone SE (2020)]]
__FORCETOC__
r2ec2a2v7as5gpd1reiqupdcc58r843
iPhone Face ID Repair
0
821
1828
2020-09-27T17:35:12Z
Swedish Chef
196
Face ID Dot Projector Repair
1828
wikitext
text/x-wiki
JC Have Created a new face ID Repair programer, this is specifically for dot projector repair. JC kindly sent one out to me as I beta test products for them.
You can find me Swedish Chef aka. Luke Hopkin over on my instagram https://www.instagram.com/swedish_repairs/
There can be many reasons the Face ID will not work on an iPhone; it can be caused by Infrared camera, Flood emitter, a Camera short or the dot projector.
The Dot projector repair and specifically the JC face ID programer is what this page will look at.
Dot projectors can have a few different faults:
1) “Working Normally” this means the dot projector is working and your issue is not related to dot projector this could be infrared camera fault, flood emitter fault or dot projector misalignment.
2) “Anode Disconnect” this likely means the prysm itself is damaged or that the flex is not correctly soldered to the dot projector
3) “NTC / I2C Disconnect” Likely the flex or connector is damaged
4) “Short” there is a short it should be hot maybe the large ic (I have not had this issue before)
5) “FUSING” Fusing is the most common issue and this is what the jc programmer repairs.
I currently do not have any photos or videos to share of this other than what I have posted on instagram but I will update this in the near future. https://www.instagram.com/p/CFoiLYYDSx2/
The process:
Take the original dot projector test and it should say "fusing" on the programmer. This indicates that you have an issue with the “fuse” eprom.
Once you have confirmed you have an issue with the dot projector eprom you can read the data from it and save the data.
Write that to the empty JC flex provided with the programer.
You can then test the flex in place of the dot projector with all other face id components plugged in there should not be a “unable to activate face id message now”
After that split the original dot projector between the glass and the dot projector.
Remove the eprom and short the 2 largest pads together.
Desolder the dot projector from the original flex tin the new JC flex and solder the dot projector to the new flex.
Test the flex on the programer again and it should say “Normal” any other errors please refer to the above list of errors
Then the HARD PART!
You need to glue the dot projector flex to the glass with UV glue. This may take a very long time as it must have PERFECT alignment otherwise you will have issues with it.
Once done, put it into the phone and test it to make take some alignment to get it working perfectly.
A Small Disclaimer:
I would not say I have had 100% success rate but this is down to how difficult it is to align the dotprojector to the glass and sometimes it's not always the dotprojector at fault it can also be infrared camera, flood emitter ect. But I can confirm this is a working tool and the programmer is not expensive, however you do need to keep buying flexs from them.
2joza4mz80rnupsjrgy4pm759eamjlc
iPhone LCD Model
0
35
5236
5211
2020-11-12T23:57:56Z
Chrisb
1
5236
wikitext
text/x-wiki
On iPhone 7 Plus and 8 Plus devices, when using OEM screens, make sure to pair the device's original screen to the one being installed. If you install a different Manufacture's OEM LCD on to an iPhone that is calibrated with another manufacture, you are bound to have touch issues either immediately, are shortly down the road. Using a EEPROM reader and copying screen data from one screen to another does not solve touch issues. EEPROM reader only helps with true tone compatibility.
". If you install an LG 3D touch panel into a Toshiba LCD around 10% won’t work. If you install a Toshiba 3D touch panel into an LG LCD then 60% won’t work. Unfortunately, we don’t have any data for mixing Sharp LCDs or 3D touch panels"
"If the iPhone was calibrated for a Toshiba or Sharp LCD and you cross install between these 2 manufacturers there is roughly a 5% chance of bad touch. If the iPhone was originally calibrated for an LG LCD and you cross install with a Toshiba or Sharp LCD then there is a 50% chance of touch problems because LG’s sensitivity range distribution is very different to these 2 manufacturers. Without having the magic calibration box to tell the iPhone you’ve installed a different manufacturer’s LCD you are going to have trouble unless you install an LG LCD. This probably explains why, if you install an LCD and experience touch problems, then install another LCD and it works, you’d automatically assume a bad LCD. However, it is possible you’ve just switched manufacturer and got lucky. If you used the suspected bad LCD in the next repair it would more than likely work with no issues. "
"Magic calibration box" == ATS2 or whatever apple use for pairing
So, in summary, it is very easy to assume the LCD is faulty because it has touch problems when it is installed in an iPhone. However, there is the possibility that external factors could be causing the issue. It would be prudent to try and swap the LCD on a like for like basis and match the 3 letter code. If you do experience touch problems with a refurbished LCD then before returning it as faulty, try it in your next repair and it may just work.
More information on the subject can be found here. https://webuylcds.co.uk/2018/05/15/touch-compatibility-issues-with-iphone-7-7-8-8-screens/#:~:text=There%20are%20three%20companies%20who,LG%2C%20Toshiba%2C%20and%20Sharp
{{DISPLAYTITLE:iPhone LCD Model}}
[[File:IPhone LCD Model.jpg|alt=|left|800x800px]]
[[Category:iPhone]]
qg6usbaobbn8gwotn570yums4oznjhu
iPhone Locking Policies
0
104
590
339
2020-02-02T11:39:57Z
Piernov
10
Category iPhone
590
wikitext
text/x-wiki
{{DISPLAYTITLE:iPhone Locking Policies}}
==US Carriers==
===Postpaid Device Unlock Policy===
AT&T Phones must be active for 60 days and paid off *1, *2, *3
Verizon Phones must have been active for sixty days. Automatically unlocked.
Sprint Phones must have been active for fifty days and paid off. *4
T-Mobile Phones must have been active for fourty days and paid off
US Cellular phones are not locked at anytime
===Prepaid Device Unlock Policy===
Cricket *2 and AT&T Prepaid *1 devices are six consecutive months of service.
Boost mobile and Virgin Mobile *4 are twelve consecutive months of service.
Verizon phones will be unlock eligible after the minimum amount of money spent on service. This amount is located on the packaging of the device.
T-Mobile Prepaid and Metro by T-Mobile after six months of service
All Tracfone brand require 12 months of active service, but there is inter portability without unlock on some if not all Tracfone brands
<nowiki>*</nowiki>1 All AT&T post and prepaid devices will work without unlocking as long as the backbone of the MVNO uses AT&T.
<nowiki>*</nowiki>2 Cricket devices cannot be used on another service until unlocked
<nowiki>*</nowiki>3 AT&T doesn’t blacklist devices for non payment unless the account is less then 90 days old.
<nowiki>*</nowiki>4 Sprint devices cannot be used on another account, Sprint owned prepaid brands, or Sprint MVNOs until they are paid off, device unlock status does not apply. Note that Sprint does this Through the FED. The FED does not always automatically clear once a device is paid off.
[[Category:iPhone]]
n1dykyj7hphdwwl3f33m8b00phgauw3
iPhone SE (2020) Compatibility
0
512
5174
1130
2020-10-31T19:04:17Z
Chrisb
1
5174
wikitext
text/x-wiki
==Compatible with iPhone 8==
*Front Camera
*Rear Camera, needs an updated iOS to function correctly.
*Display Assembly with no TrueTone or 3D Touch. It may be possible to transfer serial number for True Tone, but not tested. Also no reports on the pop up message about display replacement.
*Charger Port
*Power and Volume Flex
*Speaker
*Taptic Engine
*Housing
==Not Compatible with iPhone 8==
*Battery has a different connector
*Touch ID/Home button function
==Comparison Pictures==
[[File:iPhone 8 vs SE 2020 1.jpg|400x400px]]
[[File:iPhone 8 vs SE 2020 LB Front.jpg|400x400px]]
[[File:iPhone 8 vs SE 2020 LB Back.jpg|400x400px]]<br />
8ogme6ebvjr1s36fpex1cr4kk97urmd
iPhone Touch ID Diagrams
0
536
5744
5467
2021-04-16T16:36:24Z
Joesipaq
20
Made a new correct ip6s trace guide
5744
wikitext
text/x-wiki
==iPhone 7 and iPhone 7 Plus==
[[File:iPhone 7 Touch ID Diagram.jpeg|800x800px]]
== iPhone 6 and 6s ==
Common problem is when the button tears, touch ID works, but no click,
To restore home button click, you can jump wires between the indicated components
[[File:iPhone 6 Click traces.jpg|left|thumb|iPhone 6 Click traces]]
<br />
[[File:iPhone 6s-6sp click wiring.jpg|left|thumb|iPhone 6s Click traces]]
<br />
m251s20msau9mhrnnd9dstc6jaffabs
macOS
0
127
689
591
2020-02-11T16:37:02Z
Chrisb
1
689
wikitext
text/x-wiki
Apple links to downloadable installers [https://support.apple.com/en-us/HT201372 here].
==10.15 [[Catalina]]==
Newest version 10.15.3
Catalina introduced a split volume system<ref>https://eclecticlight.co/2019/10/08/macos-catalina-boot-volume-layout/</ref>. macOS resides on a read only volume. Data is stored on the name of the volume plus "-data". APFS is mandatory to boot Catalina. The volumes appear as one seamless drive do to hard linking and [[Volume Groups]].
==10.14 [[Mojave]]==
Newest version 10.14.6
Mojave can be cloned or imaged to a [[jHFS+]] volume. It will boot. It will not update. In order to update you will need to follow these steps
* Boot to [[Recovery Mode]].
* Open [[Disk Utility]].
* Unmount the target volume.
* Click "Edit" then "Convert To APFS..." and confirm the dialog box.
* After the conversion is complete (it takes only a few minutes), quit Disk Utility.
* Install Mojave.
==10.13 [[High Sierra]]==
Newest version 10.13.6
==10.12 [[Sierra]]==
Newest version is 10.12.6
==10.11 [[El Capitan]]==
Newest version is 10.11.6
==10.10 [[Yosemite]]==
Newest version is 10.10.5
==10.9 [[Mavericks]]==
Newest version is 10.9.5
==10.8 [[Mountain Lion]]==
Newest version is 10.8.5
==10.7 [[Lion]]==
Newest version is 10.7.5
==10.6 [[Snow Leopard]]==
Newest version is 10.6.8
==10.5 [[Leopard]]==
Newest version is 10.5.8
==10.4 [[Tiger]]==
Newest version is 10.4.11
==10.3 [[Panther]]==
Newest version is 10.3.9
==10.2 [[Jaguar]]==
Newest version is 10.2.8
==10.1 [[Puma]]==
Newest version is 10.1.5
==10.0 [[Cheetah]]==
Newest version is 10.0.4
[[Category:Mac]]
md91qq067mhk6ii6030urdivyb12jhn
macOS Missing Partition (APFS)
0
140
592
406
2020-02-02T11:40:24Z
Piernov
10
Category Mac
592
wikitext
text/x-wiki
==macOS Missing Partition (APFS)==
'''APFS, missing macOS partition, replaced with FFFFF-FFFFFFF-FFFFFFFFF'''
''This was a prevalent issue with early macOS High Sierra Upgrades. If High Sierra fails to convert MacOS Extended Journaled (JHFS+) to APFS, the GUID of the macOS Partition will read FFFF-FFFFFFF-FFFFFFF. To fix this, you will have to manually rebuild the GPT. ''
The proper GUID of APFS partitions is 7C3457EF-0000-11AA-AA11-00306543ECAC.
The default pMBR was replaced with an old-style MBR, probably by the Linux installation, BootCamp, or failed macOS Extended Journaled to AFPS Conversion during macOS Upgrade.
'''To get your APFS partition back remove partition disk0s2 and restore it with the proper type:'''
* Boot into Recovery, Open in the menubar > Utilities > Terminal
* get some details by entering into Terminal:
<syntaxhighlight lang="text">
diskutil list #below I assume the disk identifier of the internal disk is disk0
gpt -r show disk0
</syntaxhighlight>
* Unmount disk0:
<syntaxhighlight lang="text">
diskutil umountDisk disk0
</syntaxhighlight>
* Remove and restore the 2nd partition:
<syntaxhighlight lang="text">
gpt remove -i 2 disk0
diskutil umountDisk disk0
gpt add -i 2 -b 409640 -s 372637568 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk0
</syntaxhighlight>
* Verify disk and partition:
<syntaxhighlight lang="text">
diskutil list
diskutil verifyDisk disk0
diskutil verifyVolume disk0s2
</syntaxhighlight>
Your Mac should be able to boot despite the MBR.
If you had BootCamp installed and want (or have) to restore the pMBR because the MBR is stubborn/blocks the modification of the partition table do the following:
* Get all disk details:
<syntaxhighlight>
diskutil list #below I assume the disk identifier of the internal disk is disk0
gpt -r show disk0
</syntaxhighlight>
* Replace the GUID partition table:
<syntaxhighlight>
diskutil umountDisk disk0
gpt destroy disk0
gpt create -f disk0
</syntaxhighlight>
* Re-add all previous partitions visible in the last gpt -r show disk0 output:
<syntaxhighlight>
gpt add -i 1 -b 40 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0
gpt add -i 2 -b 409640 -s 372637568 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk0
gpt add -i 3 -b 373047208 -s 262144 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0
gpt add -i 4 ...
gpt add -i 5 ...
</syntaxhighlight>
* If you get a resource busy error after one of the steps, just unmount disk0 again with:
<syntaxhighlight>
diskutil umountDisk /dev/disk0
</syntaxhighlight>
* Finally verify disk and partitions:
<syntaxhighlight>
diskutil list
diskutil verifyDisk disk0
diskutil verifyVolume disk0s1
diskutil verifyVolume disk0s2
diskutil verifyVolume disk0s3
#disk0s4 & disk0s5 can't be verified with the default macOS tools because the latter is a Linux swap and the former a Linux partition, probably with ext4
</syntaxhighlight>
[[Category:Mac]]
rastuy75ugm2wk5opnfl7wyzykiw4qx
softwareupdate
0
149
593
443
2020-02-02T11:40:35Z
Piernov
10
Category Mac
593
wikitext
text/x-wiki
Software update in Catalina has the ability to download full installers<syntaxhighlight lang="bash">
softwareupdate --fetch-full-installer
</syntaxhighlight>Will download the latest ‘Install macOS’ application to this Mac’s <code>/Applications</code> folder. This is extremely useful for many admin tasks.<syntaxhighlight lang="bash">
softwareupdate --fetch-full-installer --full-installer-version 10.14.6
</syntaxhighlight>The <code>--fetch-full-installer</code> flag has a sub-flag: <code>--full-installer-version</code> which allows you to download a specific version.
[[Category:Mac]]
2w83z3o1s1x2454cyunqaqtgszcs9ex
throttling
0
1898
5605
2021-02-27T04:19:13Z
Chrisb
1
Chrisb moved page [[throttling]] to [[Throttling]]: Title case
5605
wikitext
text/x-wiki
#REDIRECT [[Throttling]]
9karp9yy21zaqagqelm3w01l5ambmpf
Talk:820-00165 Pulsing
1
758
1619
1618
2020-09-07T15:00:41Z
Piernov
10
1619
wikitext
text/x-wiki
The pulsing is on PM_SLP_S4 line right? -- [[User:Down1nit|Down1nit]]
: The pulsing usually happens on PM_SLP_S4_L up to CPU VCore. -- [[User:Chrisb|Chrisb]]
:: Even down to PM_SLP_S5_L, and up to the failing point in the power sequence, including everything inbetween. That can be when a power rail fails to turn on or crashes, when PM_PCH_SYS_PWROK fails to come up, when PCH fails to read soft straps from SPI ROM, when CPU fails to read EFI from SPI ROM, when SMC detects overcurrent condition, etc. -- [[User:Piernov|Piernov]] ([[User talk:Piernov|talk]]) 14:59, 7 September 2020 (UTC)
rjpo8w63iqx2lqz87zm51ozkksl83z4
Talk:Beginner Troubleshooting
1
815
1761
2020-09-20T17:54:14Z
Chrisb
1
Created blank page
1761
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Talk:Critical Update Required Troubleshooting
1
1890
5564
2021-02-11T20:36:37Z
SMPLLC
366
/* If you are getting this "Critical Update Required" in A1706, A1707 or more TouchBar models. */ new section
5564
wikitext
text/x-wiki
== If you are getting this "Critical Update Required" in A1706, A1707 or more TouchBar models. ==
Believe it or not this update would make it seem like the Touchbar is non functional. If you see that the Touchbar is not turning on at all when this update shows up, I suggest you first try this first before trying to replace your Touchbar etc.
'''Side Note: Apple will say it is a logic board issue, but in return it actually is not.
'''
When we had this issue we disconnected the "Webcam" from the LCD in the Touchbar Models. Once we did this the critical software update went away and the Touchbar turned on and operated normally.
WE ARE NOT saying this will solve the problem but we suggest disconnecting the webcam from your LCD and try booting without it. If that does not work, we recommend disconnecting the entire LCD and booting with an external monitor to see if the message goes away.
epxh09bcnncz9fy64st10wawh69abk8
Talk:G3 to S3 State for Ivy Bridge Haswell and Broadwell
1
661
1361
2020-06-22T17:00:46Z
Chrisb
1
Created page with "SMC_RESET_L above 3V seems to be good."
1361
wikitext
text/x-wiki
SMC_RESET_L above 3V seems to be good.
10n11ra8m3j56wewcqsxv1upz5nxqc9
Talk:Internet Recovery
1
1437
3178
2020-10-11T01:20:50Z
Chrisb
1
Created page with "We should document what the different key combinations do and also what versions of macOS. For example with the BootROM update starting at 10.12.4, the key combos changed bet..."
3178
wikitext
text/x-wiki
We should document what the different key combinations do and also what versions of macOS. For example with the BootROM update starting at 10.12.4, the key combos changed between booting the latest internet recovery and the recovery that was contemporary with the hardware.
bwh73hg3142l9sh6lmaci1uaj4u53wa
Talk:M1 MacBooks
1
2263
7034
2023-12-23T17:33:45Z
Geraldco
1063
Source of Schematic
7034
wikitext
text/x-wiki
Where did you get the schematic for PP5V_SW_LCD Schematic from?
Are there other schematics available for the M1 A2337 logic board?
gi9ajbje7zneaqsbhe06esq8hc78sw4
Talk:Main Page
1
1760
6194
6193
2021-10-20T12:42:48Z
Chrisb
1
Reverted edits by [[Special:Contributions/Logiwikied|Logiwikied]] ([[User talk:Logiwikied|talk]]) to last revision by [[User:Chrisb|Chrisb]]
5240
wikitext
text/x-wiki
Questions, comments, concerns? Login and click “Add topic” above.
lic0q80vvdbmxwzqzksg1dc111josts
Talk:Malware Removal
1
1422
3130
2020-10-07T19:58:30Z
Chrisb
1
Created page with "Since Ka-block is no longer available, let’s find another lightweight ad/malware block tool we can endorse."
3130
wikitext
text/x-wiki
Since Ka-block is no longer available, let’s find another lightweight ad/malware block tool we can endorse.
op08njlzgyw6nx2488o0be9q6rtoadl
Talk:SMC
1
1438
3180
2020-10-11T01:29:13Z
Chrisb
1
Created page with "Use this page to link to SMC troubleshooting and boot up sequencing."
3180
wikitext
text/x-wiki
Use this page to link to SMC troubleshooting and boot up sequencing.
rojbaqeidjhovsoyk03xci8r52wfc4k
Talk:Samsung Diode Mode Measurements
1
2034
6066
2021-09-17T13:24:40Z
Alpha Bravo Tech.
538
Samsung S8 SM-G950U Diode Mode Readings
6066
wikitext
text/x-wiki
[[File:Samsung S8 SM-G950U Diode Mode Readings.pdf|thumb|Samsung S8 SM-G950U Diode Mode Readings]]
e0o555qldc0v05ppwvgnry7128rxdcq
User:ApsisTech
2
2012
5955
5954
2021-07-25T03:01:55Z
ApsisTech
498
5955
wikitext
text/x-wiki
<nowiki>**</nowiki>JavaScript Web App Developer**
*Angular
*Ionic
*IoT-Arduino
9x46dov4iabhh0mde95mozpfd50bykg
User:Bilal Akash
2
2062
6125
6115
2021-09-28T15:14:37Z
Chrisb
1
Reverted edits by [[Special:Contributions/Inwerp|Inwerp]] ([[User talk:Inwerp|talk]]) to last revision by [[User:Bilal Akash|Bilal Akash]]
6114
wikitext
text/x-wiki
https://www.facebook.com/groups/2506307572735836/?ref=share_group_link
07epwm4srii8qzoaa484zsq9c4z1k34
User:Chrisb
2
705
1474
2020-07-24T06:54:20Z
Chrisb
1
create user page
1474
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
User:Crumblenaut
2
1917
5645
5642
2021-03-03T04:39:27Z
Crumblenaut
317
some bs
5645
wikitext
text/x-wiki
Yo! My name's Eddie and I'm a co-owner of [https://www.1201.com 1201] [https://www.yelp.com/biz/1201-computer-repair-portland-2?sort_by=date_desc Computer] [https://goo.gl/maps/FtEvfbTtg34Zf7yb7 Repair] and [http://1201it.com/ 1201 IT Solutions] in Portland, Oregon, Cascadia.
I'm a defender of forests, a connoisseur of hallucination, a biology nerd and a neuroscience fanatic, psybient music producer and certified fanboy, an advocate for legal (when convenient) psychedelic therapy, a political junkie, an eternal educator and a lifelong learner, and an enthusiastic gum sharer!
Gonna be in Portland? [mailto:ed@1201.com Hit me up!]
Also check out my [https://bandcamp.com/edhallman Bandcamp Collection] and [https://bandcamp.com/edhallman/wishlist Wishlist] if you're so inclined! Looots of good stuff there. :::D
<br /><gallery>
File:Crumblenaut.jpg|Me! Oh yes.
File:My Happy Place - Daytime.jpg|My happy place in the daytime...
File:My Happy Place - Nighttime.jpg|...and the Day Turned to Night
</gallery>Listen to [https://www.youtube.com/watch?v=cm2nSOJcbfQ&list=PL60D7B518D8370206 Ott] and [https://www.youtube.com/watch?v=J2WP-55FLNk Shpongle].
gduotwnsej4b82h434m6cka4z43juo9
User:Dellbu
2
723
1534
1533
2020-08-20T02:09:01Z
Chrisb
1
1534
wikitext
text/x-wiki
Hello, my name is Declan! I down energy drinks like a madman.
If you need to talk, my Discord is <code>Dell Kubo#4000</code>. The talkpage here otherwise works, though I'm less frequent.
On the side, I play video games (or, well, at the moment, it's limited to just ''Team Fortress 2''), and use a Lenovo T420s/16GB of RAM at the moment. I'm also big into amateur radio, and hope sometime to get my Technician's license— unfortunately, the ARRL's closed most of its test sites. On the side, I like to play D&D, but so far I haven't made any campaigns successful. I'm still working on one.
Went to University of Hawai'i for a year into Japanese & Computer Engineering, and DJ'd on the side, decided ultimately I was happier with Network Info Systems. Now, we're back in Virginia; I need to get back into DJ-ing.
In my spare time, I do amateur electrical engineering, and know basic theory. My soldering is good, but it's been some time, and I'd be down to try micro soldering sometime. I got started in repair in middle-school, alongside fundamentals with electrical engineering through Minecraft; I'm now A+ and Network+ certified, which, while not pertinent to Apple repair, at least gave me some experience to work with. I'd be down for any Apple certifications to pick up, too.
I currently work as a technician, helping to fix Apple devices. Well, it's more of an apprentice-ship. Anything aside from a MacBook is more Wild West for me; while I'm more fly-by-the-seat-of-my-pants, phone repair halts that. From what I've seen, you can't make any foolish mistakes that way.
On the side, I like to mess with Z80ASM. I know my basic program design, bits of C, Java, tiny bits of C++, [[wikipedia:TempleOS|HolyC]], and anything else. I've done website design and am proficient with HTML/CSS/<s>Not JavaScript I hate JavaScript it's so chaotic</s>, plus wiki-building and virtual machine setup, with ESXi. You name it, I've messed around with it.
ituhx346orykmvnmeckloza2d9m2wm9
User:Inwerp
2
1943
7589
6839
2024-07-28T11:20:41Z
Inwerp
16
7589
wikitext
text/x-wiki
[[File:Ferret incorporated.jpg|frameless]]
Hello, this is a ferret page.
It also backlinks to my [https://www.ripperdoc.de/ Ripperdoc.de Macbook Reparatur service], yes, mostly for SEO but feel free to send me your hardcases or whatever.
also Fuck Google Ads if bot is reading.
Hi! - ChrisB
Howdy! - Inwerp
2svcv4lz68cj90i40nhmsrgfjoklevo
User:Leshuq
2
2140
6431
2022-02-18T22:29:11Z
Leshuq
657
Created page with "Hi! Name's Alexey. Russian. Contacts: Telegram: @leshuq"
6431
wikitext
text/x-wiki
Hi!
Name's Alexey.
Russian.
Contacts:
Telegram: @leshuq
sowkgny23ootwilacsduzqqv4syd3q2
User:MaxShevelev
2
2265
7056
7050
2024-03-05T16:50:59Z
MaxShevelev
1008
Blanked the page
7056
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
User:Nemskiller007
2
2003
5922
2021-06-27T14:14:12Z
Nemskiller007
476
Created page with "== MacBook Air Retina 13" 2020 - 820-01055 == The MacBook Air Retina 13" 2020 who have its board with number 820-01055 have the T2 Chip on it. I've made a new discovery abou..."
5922
wikitext
text/x-wiki
== MacBook Air Retina 13" 2020 - 820-01055 ==
The MacBook Air Retina 13" 2020 who have its board with number 820-01055 have the T2 Chip on it.
I've made a new discovery about serialisation.
A 820-01055 came to me with a water dammaged, no sign of life.
I opened the board and saw that the trackpad drunk all this liquid. A lot of corrosion on the connector, the flex cable was burnt and some chips on the trackpad looked ugly.
The MacBook works as long as i unplug the Trackpad/Keyboard flex.
I changed the Trackpad with a new one, i bought a new flex cable, the MacBook works but... i can't : Press Q (A for Qwerty keyboard), D, all the Function keys.
So i bought a new Keyboard... took everything out of the case and changed it with the new one => Same problem.
Asking on the Discord my problem and someone gave me a clue : There is a T2 chip on this model so there must be some serialisation....
So i took off the ST32F103B6 chip form the original Trackpad - WARNING : it's an underfilled chip be carefull.
I took off the same chip from the new Trackpad and put the Original ST32F103B6 on the New Trackpad - WARNING : Protect everything around this chip with Kapton tape and be carefull.
Then i get a working MacBook Air with working Keyboard and Trackpad.
One last thing i wanted to try is the daughter board 820-02005-A. This board get the connection for Keyboard, Keyboard Backlight, and Trackpad link. This board have also two chips for Keystrokes and some others related to keyboard.
When i put a new daughter board on this MacBook, i lost the FN keys...
=== In Conclusion ===
MacBook Air 13" 2020 (820-01055) have some T2 serialisation on Keyboard and Trackpad :
You can change just the Keyboard without issues.
You can't just change the Trackpad, nor the daughter board.
If you need to change the Trackpad, you need to have with you the original ST32F103B6 chip that came from the original Trackpad.
If you need to change the Daughter board, you need to have with you the 4BRT chip that came from the original Daughter board.
For the moment i don't know if there is a way to dump some chips in order to reprogramm them more easily because swaping ST32F103B6 is dangerous.
eic9r4f3btj80d07n76r09uv9wha1fg
User:Piernov
2
1815
5785
5722
2021-05-09T17:01:16Z
Piernov
10
Missing SLP_S5#/SLP_S4#
5785
wikitext
text/x-wiki
==piernov's FAQ==
===Why INTRUDER# measures 3.0V or lower on the multimeter?===
INTRUDER# has a very weak pull-up (1MΩ). If you touch the probes, skin resistance is enough to pull down the voltage a lot (like less than 1.5V). Even without touching the probes, the internal impedance of the DMM (typically around 10MΩ) will cause it to drop to around 10MΩ*3.3V/(10MΩ+1MΩ) = 3.0V.
===Can I use a different SPI ROM part number?===
Better use the original part number.<br>
If you can't get it and you have an Intel platform, use UEFITool to check what part numbers are registered in the VSCC table and use one of these.<br>
If you have an AMD platform, I'm not aware of something similar to the VSCC table, but compatibility could still be an issue. Be sure to check operating voltage, size, maximum frequency and dual/quad SPI mode.
===I am missing VCCAXG/VCCGFX/VCCGT (iGPU core voltage), how do I solve it?===
The iGPU core voltage is almost never relevant. It typically only comes up when there's a significant load on the iGPU. It can often be seen spiking a couple of times on the oscilloscope when POSTing.
In other words, it's generally normal that it's missing. If you have some kind of issue with the machine, the cause is most likely elsewhere.
===How can I read sensors on >=2015 Macs?/Where can I download HWSensors?===
Latest version of HWSensors is available here as far as I'm aware: https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads/RehabMan-FakeSMC-2018-0915.zip
SourceForge and other websites have older versions with worse support for 2015 and newer machines.
===How can I select a replacement MOSFET if I can't find the original part?===
It depends on the circuit it is in.
If it is just used as a power switch, eg. DC-in MOSFETs or MOSFETs turning on/off S0 rails sourced from S5 rails, then you mostly want to pay attention to these parameters:
* N-channel/P-channel (must be the same)
* Package and pinout (must be the same of course)
* Vgs and Vds breakdown voltage (must be same or higher)
* Id current rating (must be same or higher)
* Rdson resistance (must be same or lower)
Vds is a hard requirement but it's rarely a problem, you just have to make sure it's at least 30V.
If they are part of a buck converter, they will be switching at a high frequency, so some other parameters are important too (in addition to the ones above):
* Ci input capacitance (similar or lower)
* Qg total gate charge (similar or lower)
* Tdon turn-on delay time (similar or lower)
* Tdoff turn-off delay time (similar or lower)
* Body diode forward voltage (similar or lower)
These are especially critical in multiphase buck converters like CPU VCore and GPU VCore since the MOSFETs are stressed a lot, these buck converters must suddenly deliver dozens of amps when there's a load spike. Even up to a few hundred amps on high-performance desktop parts.
Thermal characteristics also play a small role in this so it's better to have a MOSFET with low thermal resistance overall. (this is often dictated by the package, but there are still variations)
Additionally, they must have the same part number across all phases in a multiphase buck converter, and preferably come from the same batch.
MOSFETs with higher current rating often have a lower Rdson, that's a good thing (less losses when turned on), but they conversely are often slower and harder to drive (higher input capacitance/total gate charge and slower turn-on/off delay times), so you can't got crazy on the current rating because it'll be counterproductive: the MOSFET will be much less efficient when switching and the MOSFET driver will have a hard time driving it.
Some MOSFETs (very often the low-side on synchronous buck converters) have a schottky-type body diode, that has a lower voltage drop than a "regular" body diode. (otherwise it'd be less efficient)
===I am missing SLP_S5#/SLP_S4# (PM_SLP_S5_L/PM_SLP_S4_L), what do?===
First thing is to be 100% sure you are using a known good genuine Apple Magsafe of the correct generation and power rating.
Using a lower power rated Magsafe than what is required will prevent the board from going to S4 state or higher when battery is dead/removed/discharged. Refer to https://support.apple.com/en-us/HT201700 .
Using a non-genuine Magsafe as well as using a Magsafe1 instead of a Magsafe2 can cause the same issue with some boards (most notably 820-00164, 820-00165 and 820-4924 but others can be affected too).
In both of these situations, BATLOW# (PM_BATLOW_L) will stay low.
Next step, as always, is to do a thorough visual inspection of the board. Liquid/dirt/corrosion on some components are common causes for this problem.
For example, on A1466 MacBook Airs, the are near the hinge is often affected, and parts such as J6100, U6100, U6101 (820-00165 only), U1900, U1950, U8005 and U5000 (designators for 820-3437/820-00165 boards) are often found to have corrosion around them. Resistors and probe points can get damaged as well.
If there was liquid/dirt/corrosion around the SMC, it is often a good idea to reball it or even replace it.
Then, if no corrosion is found or the damage is believed to be fixed already, the next step is to confirm SLP_S5#/SLP_S4# are actually missing and not pulsing.
Check when plugging in Magsafe if it pulses twice, or if it pulses every couple of seconds.
Note that a pulsing SLP_S5#/SLP_S4# will often not be caught by most multimeters, the pulse is too fast and the refresh/update rates of the multimeters are too slow.
As illustrated in the video below, a Brymen BM857s multimeter can catch the pulse, while a B&K Precision 390A cannot. If you are not 100% sure your multimeter is fast enough, confirm with an oscilloscope.
<youtube>cMSuF_RdgW0</youtube>
* If it is pulsing, refer to this page: [[820-00165_Pulsing]]. The power sequence up to S4 state is good, there is no need to troubleshoot it. The problem is further down. Causes can include shorted power rail, buck converter turning off due to some issue, communication issue with the SPI ROM, overcurrent situation detected by the SMC, etc… Check the rest of the power sequence to see where the pulsing stop by referring to [[Bootup_Signal_Order]].
* If it is ''not'' pulsing, then there is an issue in the power sequence before getting to S4 state. Check the power sequence up to S4 state following the diagram at [[G3_to_S3_State_for_Ivy_Bridge_Haswell_and_Broadwell]].
ecxyqypfuodmbq9y1zcrekpoamcezrr
User:Winty
2
2028
6028
6027
2021-08-28T15:02:51Z
Winty
519
6028
wikitext
text/x-wiki
Together, we could do it better!
dfw030uhgcxxp0ifd68hmhpzv3nnplu
User talk:Alex6337
3
147
428
2020-01-21T15:07:47Z
Chrisb
1
Created page with "Alex, Great job on the chart. Do you have previous wiki experience?"
428
wikitext
text/x-wiki
Alex, Great job on the chart. Do you have previous wiki experience?
b4bvwcyqldjfk73h1nk591izuyjh2c5
User talk:Blackbeard
3
1939
5855
5749
2021-05-20T14:00:57Z
Chrisb
1
5855
wikitext
text/x-wiki
== PS5 ==
'''PS5 HDMI Diode Measurement
'''[[File:ps5 hdmi diode reading.png|thumb|PS5 HDMI Diode Measurement.png]]
'''PS5 HDMI Trace
'''[[File:ps5 hdmi via.png|thumb|PS5 HDMI Trace ]]
Hey! Do you want to move the diode mode to the game console diode page and make a new page for game console traces?
eizujmlwx2e66xhiwih9z53k187qd9a
User talk:Chrisb
3
191
6816
6287
2023-04-25T17:51:22Z
LOVEFIRE
944
/* Digging Deeper with Apple Diagnostics (Uncovering the Truth) */ new section
6816
wikitext
text/x-wiki
<big>'''How can I help you today?'''</big>
== Click "Add Topic" to create a new question. ==
--[[User:Chrisb|Chrisb]] ([[User talk:Chrisb|talk]]) 02:39, 2 February 2020 (UTC)
== 820-00165B dead, magsafe with no led on ==
PP3V42_G3H is 2,9volt instead 3,4 volt.
R7006 on PPBUS_G3H is burned. Value is 4,7ohm 1/8w
Replaced and back to life.
== Buncha Spam added last night. ==
Oddly, I'm having fried spam right now. Delicious.
Yum! I'll be adding spam fighting measures and deleting the existing stuff ASAP.
Thanks! Thanks for the page, I forgot about it for a while and it ended up helping me with a couple of units yesterday alone. I'll make sure to contribute :)
FINALLY DONE!
== iMac 2009 LCD Thermal bypass ==
Hi, Can I just short the pins as was explained for the HDD thermal bypass? Here are the schematics. Understanding them is beyond my skill level. No pictures uploaded. Sorry. Tried three times.
== Digging Deeper with Apple Diagnostics (Uncovering the Truth) ==
hello,
I came across this page on the wiki, https://logi.wiki/index.php/Apple_Hardware_Test_(AHT)_and_Apple_Diagnostics_(AD)_Codes , and there was a line that just hit me in a way I knew the writer understood my level of expertise with knowing computers well. it was ... ''If your device is newer than 2013 or you booting it online from some older devices, there's AD which is much less reliable and kind of helps you to book an appointment in Genius Bar '''instead of showing the real issue.''' Use Apple MRI to gather more information''
We all know that apple diagnostics never shows the real issue, it always 99% of the time shows nothing is wrong when deep down after much testing and trouble shooting and ruling out the hardware is the problem but why doesn't the real code show up?, is it being intentional hidden? (likely), how do we dig deeper to find the real code being thrown if there is even one to find? Ive been screw over by apple for years over many MacBooks and iMacs that had failed hardware and took years to proof it and then apple dropped my case and void my AppleCare without question ... it speaks wonders.
so Im looking for ppl who might be able to join me in finding the evidence to proof this. I have don't a lot of digging in apple diagnosics and found a lot of secret keyboard commands (some simple) and some more advanced. If you or anyone on your wiki team can help id be much appreciated
one last thing? is there any way to access Apple MRI (Mobile Resource Detector) and how accurate is it really? is it any different then built-in Diagnostics? (my thoughts is if apple wants to hide your code to stop repairs bc they make there hardware at the cheapest level then I doubt they are going to just let it happen) ...
pkcc3bk5q8kcpms6rwbicwo0brlbhvv
User talk:Hexington
3
2010
5941
2021-07-15T12:02:46Z
Chrisb
1
Created page with "Lexington, you wrote "Note: SMD Electrolytics can be substituted for Tantalum polymer". Is that backwards?"
5941
wikitext
text/x-wiki
Lexington, you wrote "Note: SMD Electrolytics can be substituted for Tantalum polymer". Is that backwards?
551u2at61d0v5fprxy4nn1p4yzm8g4t
User talk:Infosquad
3
2251
6995
6994
2023-10-25T00:48:47Z
Infosquad
1036
6995
wikitext
text/x-wiki
Debug ports are implemented in all projects to help engineers in verifications during project development stage. These debug ports may be disabled or "partially disabled" (we will talk bout it later) on mass production boards
Technicians could use Debug ports to perform hardware level verifications and even software level verifications in some cases.
In this document we will show how to use debug ports on Macbooks and laptops.
[[File:debug 1.png]]
'''IMAGE1''' Debug port in Macbook Schematics
In all schematics we will find many blocks, test points and/or signals defined as "debug" or "dbg" , these will be our primary targets.
As we can see on "image 1", we can find many types or debug lines. Following we will describe the most common used.
'''UART''' - Serial communication protocol often used to debug projects (one of our best allies and the one we will abort in this topic). This protocol uses just 2 lines, TX and RX, which are used to Transfer data and Receive data respectively.
To capture UART data we need a USB to UART converter. A good choice to start working with UART lines is a CH341 programmer. This programmer is a cheap option to programming SPI flash memories (BIOS) and can be also used as USB to UART adapter.
'''JTAG''' - JTAG or "Joint Test Action Group" was designed as a way to test boards. More info about [https://wiki.segger.com/Target_Interface_JTAG here]
'''SWD''' - Is a modification of JTAG standard that replaces the traditional 5-pin JTAG debug interface by introducing a 2-pin interface with a clock (SWDCLK) and a single bi-directional data pin (SWDIO). More info about [https://wiki.segger.com/Target_Interface_SWD here]
'''USB''' - USB ports are well known as debug ways on cellphones and this debug method is also used in laptops. In most cases we need a specific interface (hardware) to enable USB debug.
'''MUX PD''' - PD controllers like CD3215/7 are digital data lines multiplexors too. These multiplexors could communicate USB-C ports with specifics components to perform verifications. To allow this, the PD controller need to receive specific commands over USB-C port
We are working with all of these debug interfaces and we expect to write more information about it soon. In this occasion we will work with UART interface which is a very usefull and simple interface to implement as board fault finding
== Let's talk about UART ==
'''STEP 1 - Hardware
'''<br>
There are many USB to UART converters that we can use. They can be fund in pages like Amazon, aliexpress or in electronics hardware stores as USB to UART, USB to TTL or USB to RS232 adapters.
These adapters are simple and very cheap. In next image we will show the most common USB to UART adapters that we can buy.
NOTE: In "USB to TTL cable" example, we reffer to cables that have a specific converter IC inside the USB conector, is NOT just a cable with some kind os specific pinout.
[[File:Compatible devices.jpg|thumb|right|alt=usb to uart compatible devices|Compatible devices]]<br>
<br>
'''STEP 2 - Wiring
'''<br>
To connect USB to UART adapter to the damaged board we just need to solder 2 wires. The TX point (transfer data) from board need to be conected to the RX terminal (Receive data) in the USB adapter. Obviously, the another wire we need to conect is GND. The adapter will work with 5V supplied from USB conector.
In most of cases, the UART bus will work from “stand by“ stage, so the communication will be active even in damage boards that dont turn on.
[[File:Wiring diagram.jpg|thumb|right|alt=UART wiring diagram|Wiring diagram]]<br>
In some ca
[[File:testpoints.jpg|thumb|Test point in MAcbook A1990 mainboard]]
in some cases, is needed to scratch the test point on pcb to solder wire.
'''Step 3 - Software'''
1u34vp7k3dxojvjm0jr0696urgbhe06
User talk:Kennedyg
3
1956
5854
5815
2021-05-20T13:56:31Z
Chrisb
1
5854
wikitext
text/x-wiki
== ipad air 2 ==
Hi guys was just wondering if there was diode readings for the ipad air 2 connectors i cant seem to find them anywhere
Sorry, no iPad Air 2 diode mode readings yet! If you happen to get good ones, feel free to post them. Dusten or I can help you - ChrisB.
gkfbzqubb37thcznech793ygn0un1vo
User talk:LOVEFIRE
3
2225
6815
2023-04-25T17:32:15Z
LOVEFIRE
944
/* Uncovering the truth behind Apple Diagnostics */ new section
6815
wikitext
text/x-wiki
== Uncovering the truth behind Apple Diagnostics ==
`If your device is newer than 2013 or you booting it online from some older devices, there's AD which is much less reliable and kind of helps you to book an appointment in Genius Bar '''instead of showing the real issue'''. Use Apple MRI to gather more information.`
What is Apple MRI?
How does one detect the real issue behind apples falsely display diagnostic code that always says nothings is wrong when we both know there is definitely something wrong with the hardware. . . ?
b8tn6myhdlsqzew7w72d8yhjz1oag5p
User talk:Pedro147
3
2002
5921
5920
2021-06-22T18:37:22Z
Inwerp
16
Blanked the page
5921
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
User talk:Ritesh thakur
3
2171
6552
2022-08-05T21:07:53Z
Orangera1n
640
/* Your recent edit. */ new section
6552
wikitext
text/x-wiki
== Your recent edit. ==
I have undone your edit due to it removing alot of content from the page. [[User:Orangera1n|Orangera1n]] ([[User talk:Orangera1n|talk]]) 17:07, 5 August 2022 (EDT)
ge0pnb0uh55fljs07pmo5tshrkrk2li
User talk:Universal Solution
3
308
775
2020-03-02T18:30:02Z
Chrisb
1
Created page with "Please create talk pages if you want to discuss something. Regarding your question, you have a bad trace on the Audio IC. You need to run jumpers. I am working on a page to..."
775
wikitext
text/x-wiki
Please create talk pages if you want to discuss something. Regarding your question, you have a bad trace on the Audio IC. You need to run jumpers. I am working on a page to describe that repair. In the meantime search the iPhone repair groups on Facebook for Audio IC repair. There is a lot of information there. Thank you for your questions!
4s4xxqpmtz592r255gdpacgoqtrmeca
User talk:Varsi
3
2045
6081
2021-09-18T22:26:53Z
Varsi
540
/* iPhone board swap ic list */ new section
6081
wikitext
text/x-wiki
== iPhone board swap ic list ==
Can someone make a list of needed iPhone ic chips for full transplant (board swap)? Thanks :)
iluf396l0zy545q54sz2lfl2sjzqo0j
LogiWiki:About
4
2270
7077
7076
2024-04-04T00:04:17Z
CBax
996
/* Collection of Data for AI Training and Inferencing Policy */
7077
wikitext
text/x-wiki
This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions.
=== Collection of Data for AI Training and Inferencing Policy ===
Since LogiWiki content is the result of the dedication and knowledge of highly skilled repair industry leaders, the content on the LogiWiki main site, and other properties generally may not be used for training or inferencing with machine learning or AI. If LogiWiki data becomes part of a training or inferencing data set, or is used by such an application, the company or individual using the data agrees to pay 1% of their annual revenue to the LogiWiki maintainers as a license, for as long as they have and continue to incorporate or store the data and/or its derivatives. Incorporating or storing LogiWiki data for the use of machine learning, AI, large language models, generative models, or other machine learning related tasks is an explicit agreement to pay this license fee. There are no exceptions.
cw6alr3wzf6iklbctrkj0fuu35id6z4
File:(2)S8 1 PNG.png
6
2044
6079
2021-09-18T15:42:08Z
Alpha Bravo Tech.
538
6079
wikitext
text/x-wiki
Corrected values
tevuv4p612avfar9j6w7kywwt3f227o
File:00239-Overall View 1 Edited.jpg
6
224
640
2020-02-06T15:45:47Z
Dusten04
30
640
wikitext
text/x-wiki
00239-Overall View 1 Edited
3cs3cicpw5cg68xw0stkpu4f40r64dr
File:00239 J3300.jpg
6
239
655
2020-02-06T15:58:39Z
Dusten04
30
655
wikitext
text/x-wiki
00239 J3300
l4y11v9slry8sw7aegj83fhwgz3x2j0
File:00239 J4401.jpg
6
237
653
2020-02-06T15:56:32Z
Dusten04
30
653
wikitext
text/x-wiki
00239 J4401
ojotmoj5q71vb8w77r6jjz63jibqgdr
File:00239 J4402.jpg
6
240
656
2020-02-06T15:59:23Z
Dusten04
30
656
wikitext
text/x-wiki
00239 J4402
6e6a8de98hhh5x3xi0vk1ttfal3kgc9
File:00239 J4500.jpg
6
232
648
2020-02-06T15:52:16Z
Dusten04
30
648
wikitext
text/x-wiki
00239 J4500
3m6mufcom3r9i1oxghptjzmykn7exad
File:00239 J4501.jpg
6
233
649
2020-02-06T15:52:56Z
Dusten04
30
649
wikitext
text/x-wiki
00239 J4501
r40oopyvh3t6w3qzh1bgjaedisaw73n
File:00239 J4900.jpg
6
226
642
2020-02-06T15:47:17Z
Dusten04
30
642
wikitext
text/x-wiki
00239 J4900
ntqh41va7fiwaxzxujloxb4pi2jkqqt
File:00239 J6200.jpg
6
238
654
2020-02-06T15:57:29Z
Dusten04
30
654
wikitext
text/x-wiki
00239 J6200
5tdvcmdaxjr15myf6v7gmknby9o8hq9
File:00239 J6410.jpg
6
235
651
2020-02-06T15:54:42Z
Dusten04
30
651
wikitext
text/x-wiki
00239 J6410
i18vmmqe1sqikez3sl8aez1u8pn89ov
File:00239 J6430.jpg
6
236
652
2020-02-06T15:55:35Z
Dusten04
30
652
wikitext
text/x-wiki
00239 J6430
phkphosuyfcy9o2zcvyqsr6rrxyi3a5
File:00239 J6500.jpg
6
230
646
2020-02-06T15:50:40Z
Dusten04
30
646
wikitext
text/x-wiki
00239 J6500
oq1iytpny6nqqu5rf69fp8uuhkmzf5o
File:00239 J6550.jpg
6
229
645
2020-02-06T15:49:37Z
Dusten04
30
645
wikitext
text/x-wiki
00239 J6550
qxylp0ptwtqwd7ow4exqo8zw7nxsi6c
File:00239 J6600.jpg
6
227
643
2020-02-06T15:48:04Z
Dusten04
30
643
wikitext
text/x-wiki
00239 J6600
5nufggnlokm5qpt7ezfegar33vqr96d
File:00239 J6951.jpg
6
234
650
2020-02-06T15:53:35Z
Dusten04
30
650
wikitext
text/x-wiki
00239 J6951
0j2eyxdn8s1opzterwc23o4t4cy9wlk
File:00239 J8500.jpg
6
241
657
2020-02-06T16:00:10Z
Dusten04
30
657
wikitext
text/x-wiki
00239 J8500
9a49wjx63wki2sxhp8ssdft2pqk2m5s
File:00239 J9600.jpg
6
231
647
2020-02-06T15:51:30Z
Dusten04
30
647
wikitext
text/x-wiki
00239 J9600
9u61tb02mi3ched2utpomqip17s2egz
File:00239 JB500.jpg
6
228
644
2020-02-06T15:48:51Z
Dusten04
30
644
wikitext
text/x-wiki
00239 JB500
k18o3q0dcb13thojuds21atrmxshcth
File:00244 J4801 Edited.jpg
6
456
1032
2020-04-07T18:13:42Z
Dusten04
30
1032
wikitext
text/x-wiki
00244 J4801 Edited
08499yekrcai969529w49244o3vggs6
File:00244 J6100 Edited.jpg
6
457
1033
2020-04-07T18:14:16Z
Dusten04
30
1033
wikitext
text/x-wiki
00244 J6100 Edited
iwksrphn35enrbhnrq4hm3nyjyp3hsw
File:00244 J6750 Edited.jpg
6
455
1031
2020-04-07T18:12:59Z
Dusten04
30
1031
wikitext
text/x-wiki
00244 J6750 Edited
rmdje8ilcwxw5urdujp80shxn877w3r
File:00244 J6751 Edited.jpg
6
459
1035
2020-04-07T18:15:55Z
Dusten04
30
1035
wikitext
text/x-wiki
00244 J6751 Edited
ovafrdadxv3ceypxjwr2s2dzfa3d4jm
File:00244 J6799 Edited.jpg
6
460
1036
2020-04-07T18:16:56Z
Dusten04
30
1036
wikitext
text/x-wiki
00244 J6799 Edited
kwdkk24u57pu8yssb72a5xjovejlizi
File:00244 J8500 Edited.jpg
6
458
1034
2020-04-07T18:15:10Z
Dusten04
30
1034
wikitext
text/x-wiki
00244 J8500 Edited
geqaty9dh4vr4wm6h5qg2be1zqfvc7u
File:00244 J9600 Edited.jpg
6
454
1030
2020-04-07T18:12:09Z
Dusten04
30
1030
wikitext
text/x-wiki
00244 J9600 Edited
mvg38giflinqki5vh24src6ma2bayti
File:00244 Overall Edited.jpg
6
453
1029
2020-04-07T18:11:35Z
Dusten04
30
1029
wikitext
text/x-wiki
00244 Overall Edited
poprg88kvsq2b5h4qhv7u60lvkiezij
File:00281 J3300.jpg
6
256
675
2020-02-06T23:07:00Z
Dusten04
30
675
wikitext
text/x-wiki
00281 J3300
jt0vdraxeib9rzhz34235sxg1zx6juj
File:00281 J4401.jpg
6
254
673
2020-02-06T23:05:45Z
Dusten04
30
673
wikitext
text/x-wiki
00281 J4401
9hhdxmtjrlrbrztjkzwgb0z9uev2owk
File:00281 J4402.jpg
6
257
676
2020-02-06T23:07:37Z
Dusten04
30
676
wikitext
text/x-wiki
00281 J4402
m96bxtqrkml7itwxizjkf4sh2ehsvz6
File:00281 J4500.jpg
6
251
670
2020-02-06T23:02:54Z
Dusten04
30
670
wikitext
text/x-wiki
00281 J4500
kkwb2htrcw43345l3dzgmk14754d6u0
File:00281 J4501.jpg
6
250
669
2020-02-06T23:02:10Z
Dusten04
30
669
wikitext
text/x-wiki
00281 J4501
ju899hadt2t9gw3a2jrq8mm2fe0az9f
File:00281 J6100.jpg
6
249
668
2020-02-06T23:01:14Z
Dusten04
30
668
wikitext
text/x-wiki
00281 J6100
0v4dw3o9klbyftblhdgs9cb8rsj7xoc
File:00281 J6200.jpg
6
255
674
2020-02-06T23:06:22Z
Dusten04
30
674
wikitext
text/x-wiki
00281 J6200
iy5z8frrbaizb5llw03e8yj9f4zeel4
File:00281 J6410.jpg
6
253
672
2020-02-06T23:05:04Z
Dusten04
30
672
wikitext
text/x-wiki
00281 J6410
pi7kepv16666sh1o01k0qjnaay5hn5q
File:00281 J6500.jpg
6
247
666
2020-02-06T22:59:31Z
Dusten04
30
666
wikitext
text/x-wiki
00281 J6500
s7w991eyli1nwiprpcsukid9joyt7cu
File:00281 J6951.jpg
6
252
671
2020-02-06T23:04:17Z
Dusten04
30
671
wikitext
text/x-wiki
00281 J6951
0c6x54mvelqi6bnzlspi060ybvlr49e
File:00281 J8500.jpg
6
258
677
2020-02-06T23:08:20Z
Dusten04
30
677
wikitext
text/x-wiki
00281 J8500
06pvwth41aok3od8syw6ir0xr488veh
File:00281 J9600.jpg
6
248
667
2020-02-06T23:00:24Z
Dusten04
30
667
wikitext
text/x-wiki
00281 J9600
11rpp2jgo489vo1g948zlls6m2bvfzu
File:00281 JB500.jpg
6
246
665
2020-02-06T22:58:43Z
Dusten04
30
665
wikitext
text/x-wiki
00281 JB500
eakgsowe5co3qinadsk7upzkup16nxq
File:00281 recto composite.jpg
6
1692
5042
2020-10-18T04:08:09Z
Nobluesky
182
5042
wikitext
text/x-wiki
820-00281 composite image
gkhv3izhhi2yr2ryj4paytrkx2euuxz
File:00281 recto composite v2.jpg
6
1703
5068
2020-10-20T22:32:52Z
Nobluesky
182
5068
wikitext
text/x-wiki
820-00281 composite image recto
5mwek4f83uudhys4tgyzofv3odlzihy
File:00281 recto low res.jpg
6
1693
5043
2020-10-18T04:09:49Z
Nobluesky
182
5043
wikitext
text/x-wiki
820-00281 low res
3hojtxy4v4j3cfiokgbryo5a0z6n7ws
File:00281 verso composite.jpg
6
1694
5044
2020-10-18T04:11:05Z
Nobluesky
182
5044
wikitext
text/x-wiki
820-00281 verso composite image
jinf35z9mlmvlhp13gxv85cp4c7ymjt
File:00281 verso composite v2.jpg
6
1704
5069
2020-10-20T22:34:20Z
Nobluesky
182
5069
wikitext
text/x-wiki
820-00281 composite image verso
7tujyhia0r3g0q4949ajd2zcpjenv5l
File:00281 verso low res.jpg
6
1695
5045
2020-10-18T04:11:53Z
Nobluesky
182
5045
wikitext
text/x-wiki
820-00281 verso low res
8pm3bo7z2tbm5hg4zqs9uh5oytdavrk
File:00875 J4801 Edited.jpg
6
433
981
2020-04-04T21:33:35Z
Dusten04
30
981
wikitext
text/x-wiki
00875 J4801 Edited
hiq9x9gmv8zuhl627ha6ax03qhsx9jg
File:00875 J4810 Edited.jpg
6
430
978
2020-04-04T21:31:14Z
Dusten04
30
978
wikitext
text/x-wiki
00875 J4810 Edited
si05wq7mrd4xqchoozksgjnja64rdkq
File:00875 J6600 Edited.jpg
6
428
976
2020-04-04T21:29:10Z
Dusten04
30
976
wikitext
text/x-wiki
00875 J6600 Edited
g887680tf4t0ypumk9mbfyf7cavrljm
File:00875 J6602 Edited.jpg
6
434
982
2020-04-04T21:34:21Z
Dusten04
30
982
wikitext
text/x-wiki
00875 J6602 Edited
5n84siecjbjdf9oblj08oz64hg9kjvm
File:00875 J6603 Edited.jpg
6
429
977
2020-04-04T21:30:31Z
Dusten04
30
977
wikitext
text/x-wiki
00875 J6603 Edited
3pbnccqur7erg0db9kkaueo6izga2ce
File:00875 J6951 Edited.jpg
6
432
980
2020-04-04T21:32:51Z
Dusten04
30
980
wikitext
text/x-wiki
00875 J6951 Edited
fq4ur46qfc9qgfvebts6p2wz3lxjmdw
File:00875 J8500 Edited.jpg
6
435
983
2020-04-04T21:35:01Z
Dusten04
30
983
wikitext
text/x-wiki
00875 J8500 Edited
5kdx7c76x5ja8g1pbd3zb24s1nbdirp
File:00875 Overall 1 Edited.jpg
6
426
974
2020-04-04T21:25:41Z
Dusten04
30
974
wikitext
text/x-wiki
00875 Overall 1 Edited
he73xq8t77aa8o2csx4f11sddjzkvwl
File:00875 Overall 2 Edited.jpg
6
427
975
2020-04-04T21:27:46Z
Dusten04
30
975
wikitext
text/x-wiki
00875 Overall 2 Edited
6u8poqoh5wlglud3g03izcvheq4io16
File:00923 recto composite.jpg
6
1711
5087
2020-10-23T02:55:23Z
Nobluesky
182
5087
wikitext
text/x-wiki
820-00923 composite image recto
ngh3mvhum4umh28tdcjm6ze1slytars
File:00923 verso composite.jpg
6
1712
5088
2020-10-23T02:55:51Z
Nobluesky
182
5088
wikitext
text/x-wiki
820-00923 composite image verso
jbz7h56vi0pyud1stl4z6b2sfvaetbf
File:00928 recto composite.jpg
6
1697
5047
2020-10-18T04:14:00Z
Nobluesky
182
5047
wikitext
text/x-wiki
820-00928 composite image
aayfec1t9nrqopqxh8pdn0agezg8xx1
File:00928 recto low res.jpg
6
1698
5048
2020-10-18T04:14:46Z
Nobluesky
182
5048
wikitext
text/x-wiki
820-00928 low res
tvnxmk2m3f0clmy1uvy1xngh84kmzyz
File:00928 verso composite.jpg
6
1699
5049
2020-10-18T04:15:25Z
Nobluesky
182
5049
wikitext
text/x-wiki
820-00928 verso composite image
22od9zsmepbe56qkbt3n97sahhfgjal
File:00928 verso low res.jpg
6
1700
5050
2020-10-18T04:15:55Z
Nobluesky
182
5050
wikitext
text/x-wiki
820-00928 verso low res
dt3605x6mzwjrvs3ho2l25ijsow06i2
File:01521 J6000 Edited.jpg
6
713
1511
2020-08-10T12:33:24Z
Dusten04
30
1511
wikitext
text/x-wiki
01521 J6000 Edited
hcd2drp2va77habd2wjip61vwcfehwn
File:01521 J6100 Edited.jpg
6
714
1512
2020-08-10T12:33:55Z
Dusten04
30
1512
wikitext
text/x-wiki
01521 J6100 Edited
49xluvmf4biw0b46028oe0btoeizbu2
File:01521 J6620 Edited.jpg
6
715
1513
2020-08-10T12:34:29Z
Dusten04
30
1513
wikitext
text/x-wiki
01521 J6620 Edited
2wn1g71b7m83e62076svvkaax88nmtw
File:01527 J6700 Edited.jpg
6
716
1514
2020-08-10T12:35:11Z
Dusten04
30
1514
wikitext
text/x-wiki
01527 J6700 Edited
r0kqb83ji8kon9ocy57e3rlwng7uztf
File:11 Pro dot projector pins.jpg
6
1726
5115
2020-10-25T17:57:55Z
Joesipaq
20
5115
wikitext
text/x-wiki
The sensor its self, and where the pins go on the flex
4mfklefjtn6mqol8m9fyzli6hlhb327
File:1 - Unmodded 2010-2011 A1286 LVDS Plug.jpg
6
1903
5619
2021-03-03T00:32:40Z
Crumblenaut
317
5619
wikitext
text/x-wiki
Unmodded 2010-2011 A1286 LVDS Plug
itjyzwkf028dpjtdijysmoezhj8bjpy
File:1i Giveaway.jpg
6
1977
5869
2021-05-28T05:58:04Z
Joesipaq
20
5869
wikitext
text/x-wiki
1i HUD Giveaway
o67pvn7ypgp6oi2h1vj4gafobcho7tj
File:2010 Hard Drive Thermal Sensor Jumper.jpg
6
1911
5632
2021-03-03T01:14:07Z
Crumblenaut
317
5632
wikitext
text/x-wiki
2010 Hard Drive Thermal Sensor Jumper
781qh4tf9px3gn5fqwr2t7w8xfddf4d
File:2015 A1398 gDPU HWmonitor.png
6
701
1462
2020-07-21T21:49:41Z
Danandrei96
166
1462
wikitext
text/x-wiki
HWMonitor screenshot on a fully working 2015 A1398 with a 820-00163 dGPU mainboard.
31wlh08c92kbvc7nv0xsyn24uwa927f
File:20220906 163314.png
6
2184
6586
2022-09-06T15:33:50Z
Francis
4
6586
wikitext
text/x-wiki
Macbook Pro 15" Mid 2012 to Early 2013 model number
3d50imjk7hudvub2jn33a93ew15g65j
File:20220906 174201.png
6
2185
6587
2022-09-06T15:54:41Z
Francis
4
6587
wikitext
text/x-wiki
Macbook Pro 15" Late 2013 to Mid 2014
1vvg2193hgg87wfbrelkjg0meydj23z
File:2 - Unmodded 2010-2011 LVDS vs 2012 LVDS Port.jpg
6
1904
5620
2021-03-03T00:34:14Z
Crumblenaut
317
5620
wikitext
text/x-wiki
Unmodded 2010-2011 LVDS vs 2012 LVDS Port
dldmmbnxfxg7ufvt6oevz0nnofga7na
File:3.5mm Plug Types.png
6
2123
6364
2022-01-24T22:56:43Z
Crumblenaut
317
6364
wikitext
text/x-wiki
TRS, TRRS, Mini-TOSLINK 3.5mm Plug Types
dl5epscn119oacd46raikdmq7hcd2yu
File:3435 J4002 Edited.jpg
6
450
1024
2020-04-07T15:00:09Z
Dusten04
30
1024
wikitext
text/x-wiki
3435 J4002 Edited
ew8n7z9om8j50c1jifk4f6nrs4ww02p
File:3435 J4800 Edited.jpg
6
444
1018
2020-04-07T14:55:48Z
Dusten04
30
1018
wikitext
text/x-wiki
3435 J4800 Edited
3ffekaivcm9een9158avckkyxrgypau
File:3435 J6000 Edited.jpg
6
448
1022
2020-04-07T14:58:49Z
Dusten04
30
1022
wikitext
text/x-wiki
3435 J6000 Edited
pctau9pvizepsbo3lpxt417kho2649z
File:3435 J6100 Edited.jpg
6
447
1021
2020-04-07T14:58:16Z
Dusten04
30
1021
wikitext
text/x-wiki
3435 J6100 Edited
hcz9eq6er7cncv8oe8vd1dk9vf0ae3b
File:3435 J6404 Edited.jpg
6
443
1017
2020-04-07T14:55:13Z
Dusten04
30
1017
wikitext
text/x-wiki
3435 J6404 Edited
pd30pqhkndk5mufqm69w1up7e65gcj9
File:3435 J6950 Edited.jpg
6
446
1020
2020-04-07T14:57:32Z
Dusten04
30
1020
wikitext
text/x-wiki
3435 J6950 Edited
hr2mv0azoe4uw9c5uy1cemiky5tictm
File:3435 J7000 Edited.jpg
6
449
1023
2020-04-07T14:59:31Z
Dusten04
30
1023
wikitext
text/x-wiki
3435 J7000 Edited
9w5tk3g3m67e2xssbi221tcrvm7uppl
File:3435 J7715 Edited.jpg
6
445
1019
2020-04-07T14:56:50Z
Dusten04
30
1019
wikitext
text/x-wiki
3435 J7715 Edited
4oblivr8e24nmf6ba8eoh1dcyw8yaqk
File:3435 J8300 Edited.jpg
6
442
1016
2020-04-07T14:53:51Z
Dusten04
30
1016
wikitext
text/x-wiki
3435 J8300 Edited
51spayeikw34iczmfsmtclbo7kpqye6
File:3435 J9500 Edited.jpg
6
451
1025
2020-04-07T15:00:54Z
Dusten04
30
1025
wikitext
text/x-wiki
3435 J9500 Edited
ah2lmpl0nk6vui5ybcaeuibxpmdruz2
File:3435 Overall View 1.jpg
6
441
1015
2020-04-07T14:52:56Z
Dusten04
30
1015
wikitext
text/x-wiki
3435 Overall View 1
ab1q65hw4qaqnnct2fmegief1wlfvtn
File:3 - Unmodded Top Closeup.jpg
6
1905
5621
2021-03-03T00:34:44Z
Crumblenaut
317
5621
wikitext
text/x-wiki
Unmodded Top Closeup
7qjmbomizpjelv4mgk4sx0h9f8b9no5
File:4 - Post-Mod Top Closeup.jpg
6
1906
5622
2021-03-03T00:35:00Z
Crumblenaut
317
5622
wikitext
text/x-wiki
Post-Mod Top Closeup
eoa2pctdk1uwxof212qelm0pehge18u
File:5 - Post-Mod Bottom Closeup.jpg
6
1907
5623
2021-03-03T00:35:17Z
Crumblenaut
317
5623
wikitext
text/x-wiki
Post-Mod Bottom Closeup
l8tag16g2zl6tx8fs322w98nla0pm10
File:6 - Post-Mod Fit in 2012 LVDS Port.jpg
6
1908
5624
2021-03-03T00:35:34Z
Crumblenaut
317
5624
wikitext
text/x-wiki
Post-Mod Fit in 2012 LVDS Port
546hxbktvi01gxy3u96m1cqm6qgnmoa
File:7 - Target for Cutting.jpg
6
1909
5625
2021-03-03T00:35:49Z
Crumblenaut
317
5625
wikitext
text/x-wiki
Target for Cutting
6g97n6f8y477saplx675m78y95oa4l5
File:820-001598-A Bottom.jpg
6
1702
5058
5055
2020-10-19T08:57:32Z
Satyricon
21
5058
wikitext
text/x-wiki
820-01598-A Bottom
astno819uw900392cf2bbnagexy4blw
File:820-001598-A Top.jpg
6
1701
5057
5054
2020-10-19T08:56:16Z
Satyricon
21
5057
wikitext
text/x-wiki
820-01598-A Top
p34su9dgpruroukod8i5apqy848nngt
File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf
6
785
1694
1680
2020-09-13T19:40:20Z
Joesipaq
20
Joesipaq uploaded a new version of [[File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf]]
1680
wikitext
text/x-wiki
S0 to Reset State for Ivy Bridge Haswell and Broadwell.pdf
hpajz7uyfxlov9lerekrjyozqr630tu
File:820-00165 2015 HWmonitor.png
6
699
1457
2020-07-20T19:17:10Z
Danandrei96
166
1457
wikitext
text/x-wiki
HWmonitor screenshot from an 820-00165 with no issues
25bmtg0xolm173w0t3tth28tkngqo8a
File:820-00165 2015 IStat menu.png
6
700
1458
2020-07-20T19:18:44Z
Danandrei96
166
1458
wikitext
text/x-wiki
IStat menu sensor readings from an 820-00165 with no issues
8bv0lybq28pupas70pmzppzkn4gkzg3
File:820-00165 Back.jpg
6
71
144
2019-11-12T21:32:58Z
Chrisb
1
144
wikitext
text/x-wiki
820-00165 Back
hbqj9p5rd5yjtfbo8ywaf3z86681bgx
File:820-00165 Back Middle.jpg
6
76
149
2019-11-12T21:35:40Z
Chrisb
1
149
wikitext
text/x-wiki
820-00165 Back Middle
deu8tprb49sua3h1nuu0pwkc2e91j4v
File:820-00165 Back Right.jpg
6
75
148
2019-11-12T21:35:13Z
Chrisb
1
148
wikitext
text/x-wiki
820-00165 Back Right
a73kgor0cqyaitbi4msynuan7o6vvhw
File:820-00165 Front.jpg
6
70
143
2019-11-12T21:32:07Z
Chrisb
1
143
wikitext
text/x-wiki
820-00165 Front
a48yu4rq7h2bf1fymmalszk5b8kgdmm
File:820-00165 Front Left.jpg
6
74
147
2019-11-12T21:34:45Z
Chrisb
1
147
wikitext
text/x-wiki
820-00165 Front Left
ewu0ydgnqqgm16bap6mqebre7dvaqgc
File:820-00165 Front Middle.jpg
6
73
146
2019-11-12T21:34:20Z
Chrisb
1
146
wikitext
text/x-wiki
820-00165 Front Middle
ltt91q2dsxbblu3t8uu1z095tkjmro6
File:820-00165 Front Right.jpg
6
72
145
2019-11-12T21:33:57Z
Chrisb
1
145
wikitext
text/x-wiki
820-00165 Front Right
kqk4p9y8k04wuacl8flay6j6yd03626
File:820-00165 J3501 Final.jpg
6
646
1338
2020-06-16T17:31:28Z
Dusten04
30
1338
wikitext
text/x-wiki
820-00165 J3501 Final
d5gquh2ik73wzozkk5yjhm9fexj0ak1
File:820-00165 J3700 Final.jpg
6
647
1339
2020-06-16T17:32:29Z
Dusten04
30
1339
wikitext
text/x-wiki
820-00165 J3700 Final
5glnijp9uzj4rd41das62ri7k3cbhj5
File:820-00165 J4002 Final.jpg
6
648
1340
2020-06-16T17:33:00Z
Dusten04
30
1340
wikitext
text/x-wiki
820-00165 J4002 Final
imchn46fe0v0dmxtysn4mbuqbqcxmwx
File:820-00165 J4800 Final.jpg
6
649
1341
2020-06-16T17:33:34Z
Dusten04
30
1341
wikitext
text/x-wiki
820-00165 J4800 Final
1eow5jixfcmtqmfqrl7e3gvctagb7xk
File:820-00165 J6000 FInal.jpg
6
650
1342
2020-06-16T17:34:11Z
Dusten04
30
1342
wikitext
text/x-wiki
820-00165 J6000 FInal
1zsoh96458uz8wstw5l8v59a2dho1w3
File:820-00165 J6100 FInal.jpg
6
651
1343
2020-06-16T17:34:50Z
Dusten04
30
1343
wikitext
text/x-wiki
820-00165 J6100 FInal
ig8s8k9ibbqdn2b3iqgr9l7yzagnv0b
File:820-00165 J6404 Final.jpg
6
652
1344
2020-06-16T17:35:32Z
Dusten04
30
1344
wikitext
text/x-wiki
820-00165 J6404 Final
ic9wclst7sbb6svqcskzmd8wyv6io4n
File:820-00165 J6950 Final.jpg
6
653
1345
2020-06-16T17:36:07Z
Dusten04
30
1345
wikitext
text/x-wiki
820-00165 J6950 Final
tr34teequ5l6ty9p3p311v579im7yqk
File:820-00165 J7000 Final.jpg
6
654
1346
2020-06-16T17:36:41Z
Dusten04
30
1346
wikitext
text/x-wiki
820-00165 J7000 Final
2zvadz3mxea0iypiuqp3marb8w51vkm
File:820-00165 J7715 FInal.jpg
6
655
1347
2020-06-16T17:37:21Z
Dusten04
30
1347
wikitext
text/x-wiki
820-00165 J7715 FInal
ink6qhg9r3my0oyfrlmj26frybshy89
File:820-00165 J8300 Final.jpg
6
656
1348
2020-06-16T17:37:55Z
Dusten04
30
1348
wikitext
text/x-wiki
820-00165 J8300 Final
dxz9fr5a6junbxghx56zqocz0e9bxyd
File:820-00165 J9500 Final.jpg
6
657
1349
2020-06-16T17:38:26Z
Dusten04
30
1349
wikitext
text/x-wiki
820-00165 J9500 Final
7ygszf4dlo6ci72y40inifuzvbqdi6q
File:820-00165 battery throttling.jpg
6
1872
5520
2021-01-21T00:43:08Z
Nobluesky
182
5520
wikitext
text/x-wiki
820-00165 throttling due to bad battery (same with no battery).
reolu44ed7by267efug99zgt6iovf2m
File:820-001949 OTP.png
6
2226
6829
2023-05-05T11:06:11Z
Inwerp
16
6829
wikitext
text/x-wiki
820-001949 OTP
1dkq742ewarr8we9zg6t1jb8h02o5ja
File:820-00426 J3501 Edited.jpg
6
662
1363
2020-06-23T21:12:54Z
Dusten04
30
1363
wikitext
text/x-wiki
820-00426 J3501 Edited
3wao47867rxp61qr2pohea0ub0wpf2s
File:820-00426 J3700 Edited.jpg
6
663
1364
2020-06-23T21:16:19Z
Dusten04
30
1364
wikitext
text/x-wiki
820-00426 J3700 Edited
9i42q77e6fg2lvaxgq6kud6skz4y298
File:820-00426 J4002 Edited.jpg
6
664
1365
2020-06-23T21:16:54Z
Dusten04
30
1365
wikitext
text/x-wiki
820-00426 J4002 Edited
2b9ydoayaip9mut0pldu29ivzp25fcz
File:820-00426 J4801 Edited.jpg
6
665
1366
2020-06-23T21:17:28Z
Dusten04
30
1366
wikitext
text/x-wiki
820-00426 J4801 Edited
5i22bgq0ph0ioudo50jw9gcjy0ybwrs
File:820-00426 J4813 Edited.jpg
6
666
1367
2020-06-23T21:18:02Z
Dusten04
30
1367
wikitext
text/x-wiki
820-00426 J4813 Edited
34soyw210sqxc9010w4j93d6649zuss
File:820-00426 J4915 Edited.jpg
6
667
1368
2020-06-23T21:18:34Z
Dusten04
30
1368
wikitext
text/x-wiki
820-00426 J4915 Edited
1pcnwd2tjkg0by4qmc6vv9q18m79fd9
File:820-00426 J6060 Edited.jpg
6
668
1369
2020-06-23T21:19:02Z
Dusten04
30
1369
wikitext
text/x-wiki
820-00426 J6060 Edited
03ojqtn5xry4fcuqvu16irxb4cdoryf
File:820-00426 J6100 Edited.jpg
6
669
1370
2020-06-23T21:19:39Z
Dusten04
30
1370
wikitext
text/x-wiki
820-00426 J6100 Edited
9lv0d08zcm60krlf7ub702gf8gb8qyq
File:820-00426 J6601 Edited.jpg
6
670
1371
2020-06-23T21:20:10Z
Dusten04
30
1371
wikitext
text/x-wiki
820-00426 J6601 Edited
2sg2t1hq3mflw3rtbbwgqycft8hj0uv
File:820-00426 J6602 Edited.jpg
6
671
1372
2020-06-23T21:20:42Z
Dusten04
30
1372
wikitext
text/x-wiki
820-00426 J6602 Edited
e2trvq9atlxpm3ht8zgva08pol09upp
File:820-00426 J6603 Edited.jpg
6
672
1373
2020-06-23T21:21:18Z
Dusten04
30
1373
wikitext
text/x-wiki
820-00426 J6603 Edited
smwnbni4ne7sbl3utxprivxnalvz2nz
File:820-00426 J7000 Edited.jpg
6
673
1374
2020-06-23T21:21:50Z
Dusten04
30
1374
wikitext
text/x-wiki
820-00426 J7000 Edited
ipg53zf5qmfix0r77wgrqf277wdgj7i
File:820-00426 J7050 Edited.jpg
6
674
1375
2020-06-23T21:22:17Z
Dusten04
30
1375
wikitext
text/x-wiki
820-00426 J7050 Edited
pel6wihl4ibkdk46jv21kt9ii3914vp
File:820-00426 J8300 Edited.jpg
6
675
1376
2020-06-23T21:22:42Z
Dusten04
30
1376
wikitext
text/x-wiki
820-00426 J8300 Edited
2qcfk74lf0oo5puxnob94n1s50b7dry
File:820-00426 J9500 Edited.jpg
6
676
1377
2020-06-23T21:23:07Z
Dusten04
30
1377
wikitext
text/x-wiki
820-00426 J9500 Edited
8r7qsvrghbtrrqapbrsmdi97eo9gwfa
File:820-00426 J9510 Edited.jpg
6
677
1378
2020-06-23T21:23:34Z
Dusten04
30
1378
wikitext
text/x-wiki
820-00426 J9510 Edited
jt15eryhojgk3jqxlkqda6craaexb8z
File:820-00840 12s EFI.png
6
1681
5017
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5017
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 12s EFI}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
eyaxe1tj4cmhvwzc59a3kb4n3kud4yf
File:820-00840 2.4s EFI.png
6
1680
5016
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5016
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 2.4s EFI}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
28ny6pgau90taeaoxsmfx4muewiqcvz
File:820-00840 24s EFI.png
6
1682
5018
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5018
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 24s EFI}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
6owtcjkwu7engndzfdn80d1pmkvx3cn
File:820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC.png
6
1683
5019
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5019
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
nja22itwnkkgdyinv5soszgso4u7l7q
File:820-00840 LPC FRAME L B SPI MLB CS L Y 24s EFI SMC.png
6
1684
5020
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5020
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 LPC FRAME L B SPI MLB CS L Y 24s EFI SMC}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
ns8ld6y4s6ksz10aqkuj2wdlctnpi73
File:820-00840 P13.jpg
6
2014
5963
2021-08-03T22:51:39Z
Joesipaq
20
5963
wikitext
text/x-wiki
820-00840 P13USB32 Diode readings
di8mxl1cctngy1du5eu1z1bx2hafygd
File:820-00840 SPIROM USEMLB B SPI MLB CS L Y 24s EFI.png
6
1685
5021
2020-10-14T22:57:29Z
Chrisb
1
Uploaded own work with UploadWizard
5021
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=820-00840 SPIROM USEMLB B SPI MLB CS L Y 24s EFI}}
|date=2020-10-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:EFI]]
mhceusl6pt85d830gqwieub5i1kvygu
File:820-01055 Component Placement.pdf
6
594
1242
2020-05-13T14:14:07Z
Chrisb
1
1242
wikitext
text/x-wiki
820-01055 Component Placement
satnyo16sxhf8tfr65eu4drnr1wp3xy
File:820-01055 Power On Chart.pdf
6
596
1244
2020-05-13T14:15:53Z
Chrisb
1
1244
wikitext
text/x-wiki
820-01055 Power On Chart
487lmsbf0xotl8jdmk9cg4c1dgo0dky
File:820-01055 Power Sequence.pdf
6
595
1243
2020-05-13T14:15:01Z
Chrisb
1
1243
wikitext
text/x-wiki
820-01055 Power Sequence
g0d0vdyekxuxc7qxoa5nvivn35izm5m
File:820-01598 Prometheus Power Sequence Diagram LO2.pdf
6
628
1310
2020-06-08T01:57:22Z
Chrisb
1
1310
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:820-01598 bottom brd.jpg
6
1707
5077
2020-10-22T16:32:20Z
Satyricon
21
5077
wikitext
text/x-wiki
for board view
np97p1nyxqads5at14i6pbjysgu9kvq
File:820-01598 top brd.jpg
6
1706
5076
2020-10-22T16:31:16Z
Satyricon
21
5076
wikitext
text/x-wiki
for board view
np97p1nyxqads5at14i6pbjysgu9kvq
File:820-2828 TP HDD OOB TEMP FB bridge.jpg
6
2264
7041
2024-01-15T10:24:32Z
Piernov
10
7041
wikitext
text/x-wiki
HDD_OOB_TEMP_FB test point bridged to ground plane on 2011 27" 820-2828
rzrseyb20c27gpz215s09jsmiwwr4i2
File:820-2850 bottom.jpg
6
1728
5121
5118
2020-10-26T17:55:46Z
Piernov
10
Piernov uploaded a new version of [[File:820-2850 bottom.jpg]]
5118
wikitext
text/x-wiki
820-2850 bottom
9zvhze7yycadj8t3tzuwlsr7oo3r64b
File:820-2850 top.jpg
6
1727
5120
5117
2020-10-26T17:55:35Z
Piernov
10
Piernov uploaded a new version of [[File:820-2850 top.jpg]]
5117
wikitext
text/x-wiki
820-2850 top
iheh7caegr5kytpt3lokcx54fjpej36
File:820-2936 sensors no battery.jpg
6
2025
6022
2021-08-25T18:36:07Z
Piernov
10
6022
wikitext
text/x-wiki
820-2936 sensors no battery
ku6v7imwkh0l0pw4nuaznmt8qvlnvic
File:820-2936 sensors with battery.jpg
6
2026
6023
2021-08-25T18:36:40Z
Piernov
10
6023
wikitext
text/x-wiki
820-2936 sensors with battery
6nc7a47fayv7ugp3bz4w4nbzhq7enac
File:820-3023 bottom.jpg
6
1730
5123
2020-10-26T18:04:07Z
Piernov
10
5123
wikitext
text/x-wiki
820-3023 bottom
rrt1izembxv92ut5lk2w0isftydi3z3
File:820-3023 top.jpg
6
1729
5122
2020-10-26T18:03:51Z
Piernov
10
5122
wikitext
text/x-wiki
820-3023 top
r7bjmahnws22xu17grcqkzohbo81u7x
File:820-3115 bottom.jpg
6
1732
5127
2020-10-26T18:08:18Z
Piernov
10
5127
wikitext
text/x-wiki
820-3115 bottom
mpnbc1doky0pvogtiyewzkzfxy6uczx
File:820-3115 top.jpg
6
1731
5126
2020-10-26T18:08:06Z
Piernov
10
5126
wikitext
text/x-wiki
820-3115 top
trc7czrqhtad22yaazzecfk7eu1mz5y
File:820-3209 bottom.jpg
6
1734
5130
2020-10-26T18:12:31Z
Piernov
10
5130
wikitext
text/x-wiki
820-3209 bottom
m4we6p5tm9aijj78d2fme0w8psdat5d
File:820-3209 top.jpg
6
1733
5129
2020-10-26T18:12:20Z
Piernov
10
5129
wikitext
text/x-wiki
820-3209 top
o2c6zd9quvoexdox068jsgusgvu09rm
File:820-3437 Beeping SPI CS0 L.jpg
6
863
1946
2020-09-28T09:35:39Z
Piernov
10
1946
wikitext
text/x-wiki
820-3437 with RAM issue, SPI_CS0_L
8fb6ieszziv3tdwezzotzwcqzzslado
File:820-3437 Pulsing CPU VCore.jpg
6
860
1943
2020-09-28T09:32:43Z
Piernov
10
1943
wikitext
text/x-wiki
820-3437 Pulsing CPU VCore when R6120 is removed, simulating communication issue with SPI ROM causing power cycling.
smlolnb3q1122sgssivuxe0jr02i45x
File:820-3437 Pulsing PM SLP S5 L.jpg
6
861
1944
2020-09-28T09:33:40Z
Piernov
10
1944
wikitext
text/x-wiki
820-3437 Pulsing PM_SLP_S5_L when R6120 is removed on a 3437, simulating communication issue with SPI ROM causing power cycling.
gt0m2h78m8nfodg3m4ftr24jq8ccgpf
File:820-3437 Pulsing SPI CS0 L.jpg
6
862
1945
2020-09-28T09:34:11Z
Piernov
10
1945
wikitext
text/x-wiki
820-3437 Pulsing SPI_CS0_L when R6120 is removed on a 3437, simulating communication issue with SPI ROM causing power cycling.
rvdh91oz6cfm8rlhwbkqwyfckdkeg54
File:820-3476 bottom.jpg
6
1736
5133
2020-10-26T18:17:05Z
Piernov
10
5133
wikitext
text/x-wiki
820-3476 bottom
1ije5afi5ehb6lvbey0hawz4p44exzb
File:820-3476 top.jpg
6
1735
5132
2020-10-26T18:16:52Z
Piernov
10
5132
wikitext
text/x-wiki
820-3476 top
rad2z6nqxr5jrm8xarmk2iqyeh7tuhy
File:820-3662 bottom.jpg
6
1740
5139
2020-10-26T18:24:45Z
Piernov
10
5139
wikitext
text/x-wiki
820-3662 bottom
eegrd6gxzluc5d3z2hj4t78w6dxqy9g
File:820-3662 top.jpg
6
1739
5138
2020-10-26T18:24:34Z
Piernov
10
5138
wikitext
text/x-wiki
820-3662 top
337dknz3owfrnlvmfk4xdt6u68i9z47
File:820-3787.jpg
6
2118
6338
2022-01-09T16:21:47Z
Inwerp
16
6338
wikitext
text/x-wiki
Both LP8548 + LP8549 on one page
ksj945pjm92wi886doglhor9jy9iaoh
File:820-3787 bottom.jpg
6
1738
5136
2020-10-26T18:19:27Z
Piernov
10
5136
wikitext
text/x-wiki
820-3787 bottom
pbyav8f5f5mtmca2yuesu7ln59639c5
File:820-3787 top.jpg
6
1737
5135
2020-10-26T18:19:17Z
Piernov
10
5135
wikitext
text/x-wiki
820-3787 top
frbznorv9mm4528yhyxvzbqrgkjuzg2
File:A1417 battery for A1398 adh pattern 1.jpg
6
2006
5927
2021-07-03T00:11:02Z
Augytek
482
5927
wikitext
text/x-wiki
Adhesive pattern for reference Early 2013 A1398 Macbook Pro, model A1417 battery
3d91gwndkjpyg6u6en5pxwfil1f7j9w
File:A1417 battery for A1398 adh pattern 1fixed.jpg
6
2007
5928
2021-07-03T00:22:45Z
Augytek
482
5928
wikitext
text/x-wiki
removed A1417 battery intact adhesive pattern
5ll9yr11mp1dmmeeca0gxjccslmohrf
File:A1417 battery for A1398 adh pattern 2.jpg
6
2008
5929
2021-07-03T00:29:39Z
Augytek
482
5929
wikitext
text/x-wiki
Inverse pic of pattern 1 picture
ikvjqx2gduo0qt629dli9oskkwspbfx
File:A1419 12V Good.png
6
94
174
2019-11-14T21:38:31Z
Chrisb
1
User created page with UploadWizard
174
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 12V Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
tf0vb9o06d8o7cuh9ldw068cb4jyd7e
File:A1419 12V Shutting Down.png
6
88
168
2019-11-14T21:38:29Z
Chrisb
1
User created page with UploadWizard
168
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 12V Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
89hywspems91hufxz3y7423ubo5rpw8
File:A1419 Power Pin 1 Good.png
6
92
172
2019-11-14T21:38:31Z
Chrisb
1
User created page with UploadWizard
172
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 1 Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
mfu0368rtm27vh44t0wq8u8rtnqndjp
File:A1419 Power Pin 1 Shutting Down.png
6
86
166
2019-11-14T21:38:29Z
Chrisb
1
User created page with UploadWizard
166
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 1 Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
rlghgps3kggm855j0ab54uzporjcjqd
File:A1419 Power Pin 3 Good.png
6
93
173
2019-11-14T21:38:31Z
Chrisb
1
User created page with UploadWizard
173
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 3 Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
i69qhh4ny6xnmt141ust4sjem950hkp
File:A1419 Power Pin 3 Shutting Down.png
6
87
167
2019-11-14T21:38:29Z
Chrisb
1
User created page with UploadWizard
167
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 3 Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
ckpm1k7xn7k699neo8ctu3w2jhkzhfb
File:A1419 Power Pin 4 Good.png
6
89
169
2019-11-14T21:38:30Z
Chrisb
1
User created page with UploadWizard
169
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 4 Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
4jgzyjnusl42qkisuiljo4polj4yupj
File:A1419 Power Pin 4 Shutting Down.png
6
83
163
2019-11-14T21:38:28Z
Chrisb
1
User created page with UploadWizard
163
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 4 Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
edeghkc62tiyl00um6tyl16g35rzgb0
File:A1419 Power Pin 5 Good.png
6
90
170
2019-11-14T21:38:30Z
Chrisb
1
User created page with UploadWizard
170
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 5 Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
rfws431curgdkziklrrkiyz95leuaaz
File:A1419 Power Pin 5 Shutting Down.png
6
84
164
2019-11-14T21:38:28Z
Chrisb
1
User created page with UploadWizard
164
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 5 Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
siqrtsgxe68ou56afido004l087e83q
File:A1419 Power Pin 7 Good.png
6
91
171
2019-11-14T21:38:30Z
Chrisb
1
User created page with UploadWizard
171
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 7 Good}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
hlfslzdaaremrzpwwtlja8k8c5r3yg6
File:A1419 Power Pin 7 Shutting Down.png
6
85
165
2019-11-14T21:38:28Z
Chrisb
1
User created page with UploadWizard
165
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=A1419 Power Pin 7 Shutting Down}}
|date=2019-11-14
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
7c0mgb1gguzq7pybabb3fffl0a0yb2y
File:A1494 OEM BOTTOM.jpg
6
1752
5215
2020-11-12T19:08:58Z
Inwerp
16
5215
wikitext
text/x-wiki
Bottom view A1494
kixlbm5wk584kcyrulyyhylu8sle6gm
File:A1494 OEM PCB.jpg
6
1753
5216
2020-11-12T19:10:27Z
Inwerp
16
5216
wikitext
text/x-wiki
PCB
d4ke8vvy4gorqiu6lku4lmnipce3ty6
File:A1494 OEM TEMP.jpg
6
1755
5221
2020-11-12T19:29:12Z
Inwerp
16
5221
wikitext
text/x-wiki
temperature protection
i860c2gqgc8i6h83j6ujkqwg9kds2or
File:A1494 OEM TOP.jpg
6
1751
5214
2020-11-12T19:07:39Z
Inwerp
16
5214
wikitext
text/x-wiki
Overview
1r0jtnjmajwj3iih9ssob52ql71mokn
File:A1502 Keyboard flex.png
6
756
1607
2020-09-04T14:15:33Z
Inwerp
16
1607
wikitext
text/x-wiki
How to reinstall
6ri1sm7gsvgyufsor9omuvrhhrp2zgx
File:A1502 Sleep Sensor 1.png
6
1424
3137
2020-10-08T21:43:11Z
Chrisb
1
3137
wikitext
text/x-wiki
A1502 Sleep Sensor 1
8xn2r9l0idy2yk3te2z7w20ai53mo7c
File:A1502 Sleep Sensor 2.png
6
1425
3138
2020-10-08T21:43:45Z
Chrisb
1
3138
wikitext
text/x-wiki
A1502 Sleep Sensor 2
mt5byhfxxwixg5u3isprzdsqbvafjj1
File:A1534 SMC ONOFF Trackpad Test point.jpg
6
678
1387
2020-07-02T15:48:25Z
Satyricon
21
1387
wikitext
text/x-wiki
SMC_ONOFF test point on A1534 Trackpad
j53yd1ennea9c05h5s8huz3ifbih7tz
File:A1582 OEM BOTTOM.jpg
6
1757
5225
2020-11-12T19:44:06Z
Inwerp
16
5225
wikitext
text/x-wiki
bottom view of a1582 macbook battery
rbh0zm4bjv5ldpouzijkjijp0iha7k6
File:A1582 OEM PCB.jpg
6
1758
5226
2020-11-12T19:46:00Z
Inwerp
16
5226
wikitext
text/x-wiki
PCB of a1582 OEM macbook battery
gn4zfnrjvb0nsp4kpxq5lvjlkzwkm1x
File:A1582 OEM TEMP.jpg
6
1759
5227
2020-11-12T19:49:11Z
Inwerp
16
5227
wikitext
text/x-wiki
Thermal cutoff is present on every cell
90snlbvxrqmnzp0ef2uuy7rl30ete90
File:A1582 OEM TOP.jpg
6
1756
5224
2020-11-12T19:42:23Z
Inwerp
16
5224
wikitext
text/x-wiki
Topview
8ftam37lpgwxmzjt7pcfuhemea828lv
File:A1706-1708 Backlight Pinout.jpg
6
621
1284
2020-05-19T13:13:07Z
Chrisb
1
1284
wikitext
text/x-wiki
A1706-1708 Backlight Pinout
4vq1algiauuhcfmgh3h7l18pkjr2asq
File:A1706 A1708 Backlight Flex Pinout.jpg
6
624
1289
2020-05-19T13:16:11Z
Chrisb
1
1289
wikitext
text/x-wiki
A1706 A1708 Backlight Flex Pinout
n6smszt2c27f3mbebxtx4quyf6zao5k
File:A1706 USB-C Sequence.jpg
6
17
5172
5171
2020-10-29T04:57:15Z
Drdiff
236
Drdiff reverted [[File:A1706 USB-C Sequence.jpg]] to an old version
18
wikitext
text/x-wiki
A1707 USB-C Sequence
89i2ij4t4ncfsliipx0dfyt498mu47g
File:A1707 Layer 3.jpg
6
150
447
2020-01-31T16:31:51Z
Chrisb
1
447
wikitext
text/x-wiki
layer 3 of A1707 TP area
33shfx8ul781fh392p4rtw6p96b6uwn
File:A1707 USB-C Sequence.jpg
6
659
1355
2020-06-18T04:14:23Z
Chrisb
1
Chrisb moved page [[File:A1707 USB-C Sequence.jpg]] to [[File:A1706 USB-C Sequence.jpg]]
1355
wikitext
text/x-wiki
#REDIRECT [[File:A1706 USB-C Sequence.jpg]]
s53tjvjrzv5wla905xug7s4us9savpu
File:A1707 layer 3.jpg
6
151
448
2020-01-31T16:33:49Z
Chrisb
1
448
wikitext
text/x-wiki
A1707 layer 3 near TP connector
qpm16ya3z4wh5movlv5mif9q7lji3b7
File:A1707 scraped TP connector.jpg
6
152
449
2020-01-31T16:34:59Z
Chrisb
1
449
wikitext
text/x-wiki
A1707 scraped TP connector
3nq5c39grs12j5ndz3qmtfarhevt1c2
File:A1707 scraped TP connector zoom.jpg
6
153
450
2020-01-31T16:35:39Z
Chrisb
1
450
wikitext
text/x-wiki
A1707 scraped TP connector zoom
rfgsvvgn560meyxa4perbzwyj1bu6kg
File:A1708 2016 to 2017 SSD MOD.png
6
1974
5840
2021-05-18T09:09:04Z
Inwerp
16
5840
wikitext
text/x-wiki
This pic describes difference between 00840 and 00875 boards.
99dxaz7bmq19n6xw5dqvr3upenulao3
File:A1708 USB-C port teardown.png
6
1416
3071
2020-10-06T19:47:55Z
Chrisb
1
3071
wikitext
text/x-wiki
A1708 USB-C port teardown
ha9m71ojg8z4hyl1nkkbpre3mjmrzo8
File:A1819 recto.jpg
6
1865
5487
2021-01-15T15:04:42Z
Nobluesky
182
5487
wikitext
text/x-wiki
A1819 recto
jwwglvgyd3c32tztullk277woq81xh6
File:A1819 recto pcb.jpg
6
1866
5488
2021-01-15T15:05:45Z
Nobluesky
182
5488
wikitext
text/x-wiki
A1819 recto pcb
1ayc5em9g97s5k5dy48ckvg97ekbwd3
File:A1819 verso.jpg
6
1867
5489
2021-01-15T15:06:19Z
Nobluesky
182
5489
wikitext
text/x-wiki
A1819 verso
5gy7bsob2tyxxaqfvgbt6ylry8j0ivp
File:A1819 verso pcb.jpg
6
1868
5490
2021-01-15T15:06:58Z
Nobluesky
182
5490
wikitext
text/x-wiki
A1819 verso pcb
frbd85x5m4y3galyxjptoeot4dk2p4n
File:A1819 verso thermalcouple.jpg
6
1869
5491
2021-01-15T15:08:07Z
Nobluesky
182
5491
wikitext
text/x-wiki
A1819 verso thermalcouple
96xr80s6qd6ee3mag4okrn9rwpatvy6
File:A1993 Power Supply Voltage Test 01.jpg
6
1338
2938
2020-10-04T19:28:53Z
Alan.l
19
2938
wikitext
text/x-wiki
A1993 Power Supply Voltage Test 01
4ln0d8scmvl6e2z3kom392cqpsq92ff
File:A1993 Power Supply Voltage Test 02.jpg
6
1339
2939
2020-10-04T19:29:17Z
Alan.l
19
2939
wikitext
text/x-wiki
A1993 Power Supply Voltage Test 02
hax8mimqykwo23952p7xy8fnzbqmmkr
File:A2442LidAngle.jpg
6
2236
6909
2023-09-14T12:43:02Z
Alex6337
28
6909
wikitext
text/x-wiki
Lid Angle sensor schematics for A2442
0hsa5ow77fieozdb89tfi0slxq3tk0j
File:A2442 820-02098 Diode measurnments.png
6
2167
6542
2022-07-14T08:59:24Z
Inwerp
16
6542
wikitext
text/x-wiki
A2442 820-02098 main PMU diode
r9nn4i2ohx7vd12jqn63zjq8nlbphby
File:A2442 820-02098 Secondary PMU.jpg
6
2168
6543
2022-07-14T09:00:20Z
Inwerp
16
6543
wikitext
text/x-wiki
A2442 820-02098 Secondary PMU
jbqfkpwfgrlivssy6tkrxkq5b4hm7zp
File:A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements.png
6
2173
6558
2022-08-12T21:35:56Z
IT-Solve
181
6558
wikitext
text/x-wiki
A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements
9tleuzyt7bh1gtmsp92y8qxgi5a41db
File:ALL SYS PWRGD on 820-3332.png
6
205
604
2020-02-02T16:36:35Z
Piernov
10
604
wikitext
text/x-wiki
ALL_SYS_PWRGD on 820-3332
abv4tu935h9joh8ux78i81zq80n0xat
File:ALS and IRCAM 13pm dfcloud6(2).jpg
6
2659
7713
2024-12-31T12:43:22Z
Dfcloud6
1726
7713
wikitext
text/x-wiki
ALS and IR-CAM 13pm dfcloud6
8qlrpmow746nvrgn7jf3ifvqcnxt9zt
File:ANT POWER KEY SE 2022 final.jpg
6
2664
7719
2024-12-31T12:56:11Z
Dfcloud6
1726
7719
wikitext
text/x-wiki
RF and PWRKEY iphone se 2022 dfcloud6
5xikpqin4g9ulak6800p2mtzz85u09k
File:Ambox warning pn.svg
6
2179
6576
2022-08-31T18:04:26Z
Chrisb
1
6576
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Apple-DB15-13w3-pinout-diagram-cropped.jpg
6
1864
5485
2021-01-15T13:47:51Z
Chrisb
1
5485
wikitext
text/x-wiki
DB15 to 13W3 pinout
stu8qpfpw6jscvb8h209mssdacz5ako
File:Apple Diagnostics.png
6
211
618
2020-02-02T18:24:48Z
Inwerp
16
618
wikitext
text/x-wiki
Apple Diagnostics result
0jcla8f51ffhywdk6gm634sjycjzpeq
File:Apple M1 Wifi module.png
6
2211
6735
2023-02-12T17:08:59Z
Inwerp
16
6735
wikitext
text/x-wiki
Apple M1 Wifi module
a91970xxdrnmpbetphz9h2o6v0ooket
File:Apple Memory Guide.pdf
6
1862
5479
2021-01-14T05:21:20Z
Chrisb
1
5479
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Audio Jack Schematic (820-2936).png
6
2127
6368
2022-01-25T01:30:32Z
Crumblenaut
317
6368
wikitext
text/x-wiki
Audio Jack Schematic (820-2936)
0vao5hoglgpumf9c9ssbubmwkoqhv83
File:BBOX Media 1.jpg
6
772
1649
2020-09-12T02:51:18Z
Eden
191
1649
wikitext
text/x-wiki
Device in normal mode
k8xrygqcop3ckms24c7xkrbbcessfzx
File:BBOX Media 2.jpg
6
773
1650
2020-09-12T02:54:10Z
Eden
191
1650
wikitext
text/x-wiki
BBOX online & device booted to DFU
m7mk14p8yn0nucyxxzn9obpznwf69ym
File:BBOX Media 3.png
6
774
1652
2020-09-12T03:19:43Z
Eden
191
1652
wikitext
text/x-wiki
BBOX Media 3
b8dn6a65a3zh2a7s4vhpvdx50sf1ese
File:BBOX Media 4.png
6
775
1653
2020-09-12T03:23:15Z
Eden
191
1653
wikitext
text/x-wiki
BBOX Media 4
q9n2hxiq6kewlatir8hynn5vj6xk4lp
File:BBOX Media 5.png
6
776
1654
2020-09-12T03:24:54Z
Eden
191
1654
wikitext
text/x-wiki
BBOX Media 5
r5vzlo2k2igfmj2ixfuci6m484bqe2c
File:BBOX Media 6.png
6
777
1655
2020-09-12T03:26:56Z
Eden
191
1655
wikitext
text/x-wiki
BBOX Media 6
qg3qa6qhhcf4guv4ma0h6dg0nsc8h61
File:Backlight Flex Failure.jpg
6
625
1291
2020-05-19T22:59:49Z
Joesipaq
20
1291
wikitext
text/x-wiki
This is what a crack looks like in the flex. This is Flexgate
mr9160e369urqn23q7dwvin2awcf1l0
File:Basic Troubleshooting.drawio.png
6
743
1571
2020-08-28T17:32:19Z
Chrisb
1
1571
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Battey-connector.jpg
6
15
16
2019-11-06T16:12:30Z
Chrisb
1
16
wikitext
text/x-wiki
Battey-connector
65px8ckigzj23ytu5vadu74xh9cgksp
File:Blown Touch Filter.jpg
6
142
416
2020-01-19T06:17:13Z
EstebanM
25
416
wikitext
text/x-wiki
Blown Touch Filter on iPad Pro 12.9
0f9wfcroycj8xzyj5ayavq70drlzdjk
File:Booster circuit.jpg
6
2114
6334
2022-01-09T16:00:33Z
Inwerp
16
6334
wikitext
text/x-wiki
lp8545 booster circuit
tlbt2lra0lbysp01abakgy8r6qf7j6k
File:Boot-on-rEFIt.jpg
6
1946
5800
2021-05-12T12:32:01Z
Alex6337
28
5800
wikitext
text/x-wiki
Booting on rEFIt bootable USB key
bq8nvvyngzbs31ycrldz3zifghzbha3
File:CAMERAS 13pm dfcloud6.jpg
6
2660
7714
2024-12-31T12:46:06Z
Dfcloud6
1726
7714
wikitext
text/x-wiki
Cameras diode scale values 13pm dfcloud6
k1k0j4fvns4x1jck6waornlx8sxdscf
File:CAMERAS IPHONE SE 2022 final.jpg
6
2663
7718
2024-12-31T12:55:23Z
Dfcloud6
1726
7718
wikitext
text/x-wiki
Cameras diode scale values iphone se 2022 dfcloud6
tw54gc6vag3vrwciourfwle9wtata36
File:CD3215C Chip off Board.jpg
6
712
1507
2020-08-09T14:42:09Z
Dusten04
30
1507
wikitext
text/x-wiki
CD3215C Chip off Board
n1uxr05jr9z2x4eq2cvo7fmycc8hdj4
File:CD3215 Single USB-C Side - 5V 0.05A.jpg
6
2175
6560
2022-08-12T21:37:18Z
IT-Solve
181
6560
wikitext
text/x-wiki
CD3215 Single USB-C Side - 5V 0.05A
bmdiufpbpgfgqzyr6eknnkasskhp36y
File:CD3215 Single USB-C Side Unknown IC - 5V 0.05A.jpg
6
2176
6561
2022-08-12T21:38:31Z
IT-Solve
181
6561
wikitext
text/x-wiki
CD3215 Single USB-C Side Unknown IC - 5V 0.05A
0ply1x68o4gu0pf79xoct7ahuik8rh2
File:CD3215 bottom USB-C - 5V 0.25 - 0.05A.jpg
6
2174
6559
2022-08-12T21:36:49Z
IT-Solve
181
6559
wikitext
text/x-wiki
CD3215 bottom USB-C - 5V 0.25 - 0.05A
qpbw2sqdcqormhxya0lejmsuskjqrm8
File:CD3217 Addr.png
6
2249
6961
2023-10-19T13:05:44Z
Inwerp
16
6961
wikitext
text/x-wiki
CD3217 Addr
nceyk6ldd3wlrfgb6obehfi17znmzel
File:CS pin 820-00165.jpg
6
753
1597
2020-08-30T21:24:54Z
Nobluesky
182
1597
wikitext
text/x-wiki
truncated because no further activity.
j63mgbkqdy3jqh8p7lxymdn2pej4vm2
File:CXMhriTlspAPXA6p.jpg
6
2193
6629
2022-09-20T10:31:42Z
Alan.l
19
6629
wikitext
text/x-wiki
USB-C Port
2p6piqtzdtloh3fchg9gizm5x5driun
File:Calpe LDO and Bypass.png
6
2241
6919
2023-09-26T11:17:43Z
Inwerp
16
6919
wikitext
text/x-wiki
Calpe LDO and Bypass
c0ilivqzabok75nifwfl3hsybsdhaki
File:Camera Flex.jpg
6
1941
5769
2021-05-03T18:23:26Z
Joesipaq
20
5769
wikitext
text/x-wiki
Camera side flex
t0k5m24ytqf31vhgzaf65mrm82h19iu
File:Caution.png
6
2178
6575
2022-08-31T18:00:00Z
Chrisb
1
6575
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Cert error example.png
6
2075
6169
2021-10-14T13:36:06Z
Francis
4
6169
wikitext
text/x-wiki
Cert error example
3b8uzyn6ovtcl8e293siri8neyy0tr2
File:Cert invalid example.png
6
2076
6170
2021-10-14T13:36:36Z
Francis
4
6170
wikitext
text/x-wiki
Cert invalid example
0va7v444w74s4sahg26a7nt5ahnfr3v
File:Charger IC Threshold on 820-3437.png
6
326
795
2020-03-05T18:00:14Z
Piernov
10
795
wikitext
text/x-wiki
Charger IC Threshold on 820-3437
89s06jn0iqtc86py4qffri1z51210qu
File:Charging Port Edited 2.jpg
6
533
1163
2020-05-01T23:48:37Z
Dusten04
30
1163
wikitext
text/x-wiki
Charging Port Edited 2
hvmscxtjjfcz4cf9iz9lqvsmu2u3gv6
File:Charging Port View 1.jpg
6
532
1162
2020-05-01T23:48:08Z
Dusten04
30
1162
wikitext
text/x-wiki
Charging Port View 1
fzi9v6d83i9ww0lnj0o4wlarj5ipjcu
File:Classic Mac Tech Info.pdf
6
474
1073
1072
2020-04-19T16:46:56Z
Chrisb
1
Chrisb moved page [[File:Classic ac Tech Info.pdf]] to [[File:Classic Mac Tech Info.pdf]] without leaving a redirect
1063
wikitext
text/x-wiki
Classic Mac Tech Docs
r6f0j2yfo797zby6q5t9qvgpb66y83h
File:Combined Examples.png
6
2082
6222
2021-11-14T21:06:25Z
WGACA
420
6222
wikitext
text/x-wiki
Example of how HT-A2 looks with and without the lens.
prnaynu9ksc0aum8162tg8jlid4379x
File:Community-Universe.jpg
6
2144
6439
2022-02-28T11:12:52Z
Alex6337
28
6439
wikitext
text/x-wiki
Community Universe update check
26mhb3l88awk4zbxo1ta5eqo4ol3d3i
File:Compatible devices.jpg
6
2252
6975
2023-10-23T23:48:34Z
Infosquad
1036
6975
wikitext
text/x-wiki
usb to uart compatible devices
9q9qcs3y8ztkqvc96rjgig10b1d31hx
File:Connector 1 Edited.jpg
6
156
453
2020-02-01T01:57:02Z
Dusten04
30
453
wikitext
text/x-wiki
Connector 1
pl46fdj9j56dj5u1oj1m66kcjn1mimw
File:Corrected iPad 6 3.jpg
6
167
477
2020-02-01T03:10:38Z
Dusten04
30
477
wikitext
text/x-wiki
Corrected iPad 6 Connector 3
h11ehtjx9r3wwpkx40aobz1dqt0j0ef
File:Craig Federighi tries to troubleshoot M1 backlight.jpg
6
2087
6236
2021-11-16T22:21:07Z
Inwerp
16
6236
wikitext
text/x-wiki
Craig Federighi tries to troubleshoot M1 backlight
ddoov5ol6ztonu287gynl5g2y8y3oir
File:Critical Update Required.jpg
6
115
247
2019-12-08T16:52:19Z
Chrisb
1
247
wikitext
text/x-wiki
Critical Update Required
emhrmt29lo940yo7ibwzjbouv1l1awj
File:Crumblenaut.jpg
6
1913
5637
2021-03-03T04:13:01Z
Crumblenaut
317
5637
wikitext
text/x-wiki
Super crumbled at the moment...
dzpotzn7upbkwzd5ba5j56v85z6zsb9
File:DALL-E T2.png
6
2245
6930
2023-09-26T21:17:08Z
Inwerp
16
6930
wikitext
text/x-wiki
DALL-E T2
mnd2qh77570qehcwq5544tilw5m1pbz
File:DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m.png
6
2255
6991
2023-10-25T00:18:06Z
Inwerp
16
6991
wikitext
text/x-wiki
DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m
c23nwxpbl4s6ohowz7jirjjamng6bf0
File:DC-in MOFET and gates on 820-3437.png
6
325
794
2020-03-05T17:59:49Z
Piernov
10
794
wikitext
text/x-wiki
DC-in MOFET and gates on 820-3437
f7xd4vt8ec3c0zm5uyfly90fpbwns0i
File:DFU + ONOFF.jpg
6
2269
7069
2024-03-29T17:09:08Z
2informaticos
1112
7069
wikitext
text/x-wiki
SOC_FORCE_DFU and PMU_ONOFF_L switches
4qsam84zcfhdrfradla0dqrldmfl99j
File:DFU on Sonoma.png
6
2260
7020
2023-11-27T12:28:12Z
Inwerp
16
7020
wikitext
text/x-wiki
DFU on Sonoma
r498io511ztdi6pw9sshwkvm7ys1oew
File:Debug Led.png
6
424
971
2020-04-04T14:21:09Z
Inwerp
16
971
wikitext
text/x-wiki
You have all PM_SLP rails as well as PP3V3_S5 all together, on most MacBooks this circuit is placed on top of the board which means you can start the diagnostics without even removing it from case.
k4iyx08m935jm6snt1l3aff390p4apg
File:Deglaze 10 - Armour Etch Wiped 2.jpg
6
1988
5893
2021-06-04T20:18:10Z
Crumblenaut
317
5893
wikitext
text/x-wiki
Deglaze 10 - Armour Etch Wiped 2
27ifdzgzogi6w9yj7yrr8ilii5ntdnp
File:Deglaze 11 - Isopropyl 70 Cleaning.jpg
6
1989
5894
2021-06-04T20:18:29Z
Crumblenaut
317
5894
wikitext
text/x-wiki
Deglaze 11 - Isopropyl 70 Cleaning
6zzw085khg89kelg1nz3ztc36ovwlfl
File:Deglaze 12 - Edges 1.jpg
6
1990
5895
2021-06-04T20:18:48Z
Crumblenaut
317
5895
wikitext
text/x-wiki
Deglaze 12 - Edges 1
1z9ngnnhnrj2qkxld6yxm9fcuv75dt2
File:Deglaze 13 - Edges 2.jpg
6
1991
5896
2021-06-04T20:19:21Z
Crumblenaut
317
5896
wikitext
text/x-wiki
Deglaze 13 - Edges 2
c1z02ykc2pp1c9s5ebry9d97b1xxj43
File:Deglaze 14 - Screen Finished.jpg
6
1992
5897
2021-06-04T20:19:42Z
Crumblenaut
317
5897
wikitext
text/x-wiki
Deglaze 14 - Screen Finished
mbhfw399ojh1htrg3k4boc1tjgtga3i
File:Deglaze 2 - Strapped for Protection.jpg
6
1980
5885
2021-06-04T20:14:55Z
Crumblenaut
317
5885
wikitext
text/x-wiki
Deglaze 2 - Strapped for Protection
mx3udn4pkaxekzpj3mkrq45khpwjm3k
File:Deglaze 3 - Screen Before.jpg
6
1981
5886
2021-06-04T20:15:22Z
Crumblenaut
317
5886
wikitext
text/x-wiki
Deglaze 3 - Screen Before
1uj98t1ov5hzysc9vt3kdispn3ydwhm
File:Deglaze 4 - Screen Alcohol.jpg
6
1982
5887
2021-06-04T20:15:46Z
Crumblenaut
317
5887
wikitext
text/x-wiki
Deglaze 4 - Screen Alcohol
5dsj3atimo2zukxge9iwkya8zouyuok
File:Deglaze 5 - Prepared Screen.jpg
6
1983
5888
2021-06-04T20:16:08Z
Crumblenaut
317
5888
wikitext
text/x-wiki
Deglaze 5 - Prepared Screen
pnciodjbikrixa09kxk84tluoi43e75
File:Deglaze 6 - Armour Etch Application.jpg
6
1984
5889
2021-06-04T20:16:38Z
Crumblenaut
317
5889
wikitext
text/x-wiki
Deglaze 6 - Armour Etch Application
e7o6ybskw76cmpl1l3bwiqw289lh0k3
File:Deglaze 7 - Waiting with Armour Etch.jpg
6
1985
5890
2021-06-04T20:16:59Z
Crumblenaut
317
5890
wikitext
text/x-wiki
Deglaze 7 - Waiting with Armour Etch
5za8h1kx852h3z5wr6svpsax4eo3ilz
File:Deglaze 8 - Armour Etch Congealing.jpg
6
1986
5891
2021-06-04T20:17:22Z
Crumblenaut
317
5891
wikitext
text/x-wiki
Deglaze 8 - Armour Etch Congealing
12t1vuf3g9xpyt6tpzluffpeie91svh
File:Deglaze 9 - Armour Etch Wiped 1.jpg
6
1987
5892
2021-06-04T20:17:47Z
Crumblenaut
317
5892
wikitext
text/x-wiki
Deglaze 9 - Armour Etch Wiped 1
poq7fshsf5uvajtrbs6ezcxmatkq1wu
File:Diode7701.png
6
1673
4995
2020-10-11T06:47:17Z
Chrisb
1
4995
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK.jpg
6
2134
6401
2022-02-07T06:14:28Z
Alpha Bravo Tech.
538
6401
wikitext
text/x-wiki
Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK
q4o0b1ps9gu1wgmom0dl5z6cebqxndy
File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT.jpg
6
2135
6403
2022-02-07T06:16:01Z
Alpha Bravo Tech.
538
6403
wikitext
text/x-wiki
Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT
ftptjdklqcpq6ogbdvpndh6q8gzc5yu
File:EEECODE.jpg
6
2209
6709
2023-01-13T10:11:55Z
Alan.l
19
6709
wikitext
text/x-wiki
EEECODE
1yhtqjqvdr6rdwudtzjmdddsh1mjjl7
File:EEE CODE.jpg
6
2208
6705
2023-01-13T10:07:00Z
Alan.l
19
6705
wikitext
text/x-wiki
eee code
67dmeh4aqo0sxnfr757wxmztsii9233
File:EFI Boot up Diagram.jpg
6
29
30
2019-11-06T16:25:21Z
Chrisb
1
30
wikitext
text/x-wiki
EFI Boot up Diagram
hcjzl35do8nks4sg35w5htdwkoqj6jx
File:EFI shell.jpg
6
1948
5802
2021-05-12T12:35:26Z
Alex6337
28
5802
wikitext
text/x-wiki
EFI shell prompt
sx88lbb3y37pf81apmcujshc76anjbz
File:Early-2013 vs 2015 Comparison.jpg
6
626
1296
1294
2020-05-20T14:57:06Z
Steve
48
Clarified positioning.
1296
wikitext
text/x-wiki
Comparison of the batteries from an Early-2013 (top) and a 2015 (bottom) 15" Retina MacBook.
5w3vw2reu5o94b8js4jynl1k6lm3lpj
File:Ebay Email Page.png
6
2088
6238
2021-11-19T17:01:50Z
Matty
22
6238
wikitext
text/x-wiki
Ebay Email Page
qyq45rgpepx1b8xclp5z2ouvhg58ssl
File:Edp pinout.png
6
2224
6809
2023-04-05T22:27:46Z
Inwerp
16
6809
wikitext
text/x-wiki
edp Pinout on A1707/1990/A2141
msz0a9kjye4vfbalx3ifyp8eez0teq3
File:Efi-flasher-USB-content.jpg
6
1945
5799
2021-05-12T12:29:29Z
Alex6337
28
5799
wikitext
text/x-wiki
Content of a USB key to force flash an SMC
qjbwzdipoknf48kh7x5h00xyumqm3nf
File:FB IMG 1564050051190.jpg
6
108
237
2019-12-05T06:23:43Z
Thingalong
18
237
wikitext
text/x-wiki
iOS kernel panic codes 1
8odtjlyja2im6gbjs8xxq1uiknnzfw2
File:FB IMG 1564050058516.jpg
6
109
238
2019-12-05T06:24:10Z
Thingalong
18
238
wikitext
text/x-wiki
iOS kernel panic codes 2
1262hx47nkuv717u7cj76e27501k6yv
File:FB IMG 1564050065579.jpg
6
110
239
2019-12-05T06:24:30Z
Thingalong
18
239
wikitext
text/x-wiki
iOS kernel panic codes 3
b5tkp0vn7p0ttkbcvavt5luopyz0p3i
File:FB IMG 1564050071098.jpg
6
111
240
2019-12-05T06:29:43Z
Thingalong
18
240
wikitext
text/x-wiki
iOS kernel panic codes 4
72u67k324fv0hvql575p9u8hc71c1vc
File:FPC Measurements.png
6
144
418
2020-01-19T06:21:01Z
EstebanM
25
418
wikitext
text/x-wiki
FPC Measurements
sksblp9llhul9gbeqpoeqj2bceteoxw
File:Face ID Troubleshooting.jpg
6
32
33
2019-11-06T16:27:13Z
Chrisb
1
33
wikitext
text/x-wiki
Face ID Troubleshooting
cibc3gq2f3eff73mhinqjul0084hsvq
File:FailedSmart.png
6
2029
6036
2021-09-05T18:50:41Z
Inwerp
16
6036
wikitext
text/x-wiki
example of garbage software showing "caution" on the almost dead HDD drive
kjhqlwrmijte3cl4q4fjz3ng60lv8v7
File:Ferret incorporated.jpg
6
1942
5778
2021-05-06T13:49:34Z
Inwerp
16
5778
wikitext
text/x-wiki
Ferret is a friendly animal, threat it like a cat-dog who sleeps 14-20 hours a day. It sleeps for you, your friends so dont wake it.
cy4ll3dbcajd2vpftggvx9tsq9ebkk3
File:Find and launch Software & Updates in Ubuntu.jpg
6
2143
6438
2022-02-28T11:11:20Z
Alex6337
28
6438
wikitext
text/x-wiki
Find and launch Software & Updates in Ubuntu
n0bc2go3oa8m54zf6itogqa555mlyzh
File:Flexgate with microscopy.png
6
1931
5703
2021-03-28T20:56:04Z
Inwerp
16
5703
wikitext
text/x-wiki
Flexgate with microscopy
mkwoob70z8dojo9oyjwyydxtmbwdag5
File:G3-S3 Ivy Bridge - Broadwell.dia.gz
6
331
813
808
2020-03-26T22:41:32Z
Chrisb
1
Chrisb uploaded a new version of [[File:G3-S3 Ivy Bridge - Broadwell.dia.gz]]
808
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=dia file}}
|date=2020-03-25
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
pjxrchs6k2mr2ml6d4ozvxik8ic404u
File:G3-S3 Ivy Bridge - Broadwell.png
6
332
812
809
2020-03-26T22:30:51Z
Chrisb
1
Chrisb uploaded a new version of [[File:G3-S3 Ivy Bridge - Broadwell.png]]
809
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=boot up diagram}}
|date=2020-03-25
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
kiw6cafvqs2mgc5qlpwwr8ki51e1d50
File:G3 - S3 Ivy Bridge - Broadwell.drawio.png
6
337
1551
1550
2020-08-27T22:38:51Z
Chrisb
1
Chrisb uploaded a new version of [[File:G3 - S3 Ivy Bridge - Broadwell.drawio.png]]
834
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Galaxy Note 10+ Button Connector.jpg
6
303
766
2020-02-28T21:46:14Z
Dusten04
30
766
wikitext
text/x-wiki
Galaxy Note 10+ Button Connector
4yliee6dzlxd5781l04m7fnt5pe3hhj
File:Galaxy Note 10+ Digitizer Connector.jpg
6
302
765
2020-02-28T21:45:12Z
Dusten04
30
765
wikitext
text/x-wiki
Galaxy Note 10+ Digitizer Connector
pi6yetz9sllly18q8axm3dx0z751fzo
File:Galaxy Note 10+ Dock Connector 1.jpg
6
300
763
2020-02-28T21:42:33Z
Dusten04
30
763
wikitext
text/x-wiki
Galaxy Note 10+ Dock Connector 1
pwk606rnh413aqd941rtcma3fwrjfdc
File:Galaxy Note 10+ Dock Connector 2.jpg
6
301
764
2020-02-28T21:43:52Z
Dusten04
30
764
wikitext
text/x-wiki
Galaxy Note 10+ Dock Connector 2
pz3i3p6l2n8l42hwpuqgc8wy7gpcyra
File:Galaxy Note 10+ Front Camera.jpg
6
295
758
2020-02-28T21:34:56Z
Dusten04
30
758
wikitext
text/x-wiki
Galaxy Note 10+ Front Camera
915pwsyt918ovdg9z3q2p7vn63dt6ej
File:Galaxy Note 10+ OLED.jpg
6
299
762
2020-02-28T21:39:57Z
Dusten04
30
762
wikitext
text/x-wiki
Galaxy Note 10+ OLED
l9kfbkitnd6q3w5jqvkt98z30hzlgne
File:Galaxy Note 10+ Rear Camera 1.jpg
6
304
767
2020-02-28T21:46:51Z
Dusten04
30
767
wikitext
text/x-wiki
Galaxy Note 10+ Rear Camera 1
cqnoq6nsetsz9p01ibzmbc21mb5ti3a
File:Galaxy Note 10+ Rear Camera 2.jpg
6
305
768
2020-02-28T21:48:29Z
Dusten04
30
768
wikitext
text/x-wiki
Galaxy Note 10+ Rear Camera 2
84m3c8bm1nx3zreu64fmf20vnz97uzi
File:Galaxy Note 10+ Rear Camera 3.jpg
6
306
769
2020-02-28T21:49:02Z
Dusten04
30
769
wikitext
text/x-wiki
Galaxy Note 10+ Rear Camera 3
0de6y5kw1kejwkiaac830onsbk6zkjf
File:General information.png
6
2089
6239
2021-11-19T17:05:30Z
Matty
22
6239
wikitext
text/x-wiki
General information
c9wt1391ok4ai5rdegsf5wzetij8d5x
File:HDMI Diode Readings.jpeg
6
2198
6652
2022-10-26T20:56:57Z
Laup
815
6652
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:HDMI IC Diode Readings.jpeg
6
2201
6655
2022-10-26T20:58:33Z
Laup
815
6655
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:HDMI Standby Voltages.jpeg
6
2199
6653
2022-10-26T20:57:25Z
Laup
815
6653
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:HDMI Voltages.jpeg
6
2200
6654
2022-10-26T20:58:01Z
Laup
815
6654
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Hardcase A2442.png
6
2652
7687
2024-09-02T18:36:36Z
Inwerp
16
7687
wikitext
text/x-wiki
USC fix
l6rsbn2vvf1ygf9jwp674jwaobj87g7
File:IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD.jpg
6
203
597
2020-02-02T12:11:07Z
Piernov
10
597
wikitext
text/x-wiki
IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD
9mybhs16y80kbi8whognui6jwza3if3
File:IPHONE XR AURICULAR CONECTOR VALUES (7).jpg
6
2669
7725
2024-12-31T13:06:44Z
Dfcloud6
1726
7725
wikitext
text/x-wiki
PWRKEY and receiver diode scale values iphone xr dfcloud6
5er3mq589xd1kihqd7kw0i7de81gxiq
File:IPHONE XR BATTERY CONECTOR VALUES (2).jpg
6
2667
7723
2024-12-31T13:03:33Z
Dfcloud6
1726
7723
wikitext
text/x-wiki
RF VBATT and SIM CARD diode scale values iphone xr dfcloud6
q8t6xgd0t34f19o75eapejfm36rorjt
File:IPHONE XR CAMERA CONECTOR VALUES (2).jpg
6
2668
7724
2024-12-31T13:05:27Z
Dfcloud6
1726
7724
wikitext
text/x-wiki
FACE ID and F-CAM diode scale values iphone xr dfcloud6
7ergfvaprw0axovaap7adnishizlgcc
File:IPHONE XR VIDEO AND TOUCH CONECTOR VALUES (4).jpg
6
2666
7722
2024-12-31T13:00:14Z
Dfcloud6
1726
7722
wikitext
text/x-wiki
LCD and TOUCH
choq0uoocdagriobtz2t7set7smhmuq
File:IPad 6 Home Button FPC Diode.jpg
6
105
234
2019-12-03T16:29:45Z
KevinShort
17
234
wikitext
text/x-wiki
Diode measurements of the home button FPC connector on the iPad 9.7 6th Gen
n6zkx112dllvho86g1f01lf7vlyvadr
File:IPad Pro 12.9 2nd Gen WiFi.jpg
6
64
136
2019-11-12T21:23:29Z
Chrisb
1
136
wikitext
text/x-wiki
IPad Pro 12.9 2nd Gen WiFi
l21a7ex0iicuntllqyhzow628yj382s
File:IPad Pro 12.9 2nd Gen WiFi 2.jpg
6
66
138
2019-11-12T21:25:28Z
Chrisb
1
138
wikitext
text/x-wiki
IPad Pro 12.9 2nd Gen WiFi
l21a7ex0iicuntllqyhzow628yj382s
File:IPad Pro 12.9 2nd Gen WiFi 3.jpg
6
67
139
2019-11-12T21:26:05Z
Chrisb
1
139
wikitext
text/x-wiki
IPad Pro 12.9 2nd Gen WiFi
l21a7ex0iicuntllqyhzow628yj382s
File:IPad Pro 12.9 2nd Gen WiFi 4.jpg
6
68
140
2019-11-12T21:26:36Z
Chrisb
1
140
wikitext
text/x-wiki
IPad Pro 12.9 2nd Gen WiFi
l21a7ex0iicuntllqyhzow628yj382s
File:IPad Pro 12.9 2nd Gen WiFi 5.jpg
6
69
141
2019-11-12T21:27:09Z
Chrisb
1
141
wikitext
text/x-wiki
IPad Pro 12.9 2nd Gen WiFi
l21a7ex0iicuntllqyhzow628yj382s
File:IPhone-iPad Tristar 3.jpg
6
38
39
2019-11-06T16:29:58Z
Chrisb
1
39
wikitext
text/x-wiki
iPhone/iPad Tristar 3
2t9l4zp1o3ln3y57nrbcktjcht52ukd
File:IPhone LCD Model.jpg
6
34
35
2019-11-06T16:27:59Z
Chrisb
1
35
wikitext
text/x-wiki
iPhone LCD Model
kfawxfvpw2ajxv7a2jf06hrkigpmd63
File:ISL Edited.jpg
6
645
1334
2020-06-14T17:28:27Z
Dusten04
30
1334
wikitext
text/x-wiki
ISL Edited
k6nm18dj1b6volb4g1yr3qhyrov3b8g
File:Iconic Book 1.jpg
6
1436
3169
2020-10-11T01:02:57Z
Chrisb
1
3169
wikitext
text/x-wiki
Iconic Book 1
sfkzpdsmli5pjh8ktlyvt9dpzc33sg0
File:Image 2-28-20 at 1.19 PM.jpg
6
750
1579
2020-08-28T17:44:46Z
Chrisb
1
1579
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Image 2-28-20 at 1.22 PM.jpg
6
751
1580
2020-08-28T17:44:59Z
Chrisb
1
1580
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Imagen.jpg
6
2172
6555
2022-08-11T22:25:18Z
Juan carlos donoso gonzalez
523
6555
wikitext
text/x-wiki
J4511
c9r66fv06sgw2z21ydh8lzoiw3lweuc
File:Information icon4.svg
6
2180
6577
2022-08-31T18:06:37Z
Chrisb
1
6577
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Intel SR40F.png
6
2163
6530
2022-06-10T21:55:01Z
Inwerp
16
6530
wikitext
text/x-wiki
SR40F
suhguky0qgqpyr0w4nsvcvjywll57yf
File:Ios kernel panic codes.png
6
107
236
2019-12-05T06:23:16Z
Thingalong
18
236
wikitext
text/x-wiki
iOS kernel panic codes 5
gbum1vhiu3hzrhwyy1iueaiky6kdxzm
File:J3300 Edited.jpg
6
717
1515
2020-08-10T12:35:49Z
Dusten04
30
1515
wikitext
text/x-wiki
J3300 Edited
28saebpwym7aan5dxwcn1q5fmu2pcql
File:J4900.jpg
6
244
663
2020-02-06T22:56:54Z
Dusten04
30
663
wikitext
text/x-wiki
J4900
4zcoj6du6yz6b1707dtxqctxpnlbu5j
File:J6600.jpg
6
245
664
2020-02-06T22:58:00Z
Dusten04
30
664
wikitext
text/x-wiki
J6600
0l2tu2k1xdm1njyu3997epn7a0a9u5u
File:J8500 Edited.jpg
6
718
1516
2020-08-10T12:36:16Z
Dusten04
30
1516
wikitext
text/x-wiki
J8500 Edited
7bhdovnwdon9yak1hrt5m1odu3tc230
File:LCD iMac Temp Sensor.png
6
2097
6284
2021-12-05T10:27:47Z
Bobcov
604
6284
wikitext
text/x-wiki
Schematic of the temp sensor of 2009 imac lcd
nmhx46skvdt1y95q1uebbplh72ho8or
File:LED Return.jpg
6
2115
6335
2022-01-09T16:04:48Z
Inwerp
16
6335
wikitext
text/x-wiki
Led return part
00puqhzn27jexnxl6l751mfmmr8x5xd
File:LED Return 2.jpg
6
2116
6336
2022-01-09T16:06:31Z
Inwerp
16
6336
wikitext
text/x-wiki
LP8545 PWM generator
nbjkqn1z455s0dpnlingbyhkb5izxut
File:LMP A1494 Board.jpg
6
1893
5571
2021-02-15T11:05:06Z
Inwerp
16
5571
wikitext
text/x-wiki
MacBook Pro 13" A1502 2015E Model: LMP A1582
bazvlz3wihgl5m1n7hkcvy37r12f68m
File:LMP A1494 Front.jpg
6
1892
5570
2021-02-15T11:01:16Z
Inwerp
16
5570
wikitext
text/x-wiki
Apple MacBook Pro 15 A1398 (Late 2013, Mid 2014) A1494 Battery (Manufacturer: LMP )
h4cqbyv9dl3k2jx7th2j4utixqjwktp
File:LP8545 Logic part.jpg
6
2117
6337
2022-01-09T16:11:11Z
Inwerp
16
6337
wikitext
text/x-wiki
This part connects IC to the MCU / PCH / gMUX
tanvakyokqtluz8vogok54gae8t8y8y
File:LidAngleSensorMBAM2.jpg
6
2237
6910
2023-09-14T12:45:08Z
Alex6337
28
6910
wikitext
text/x-wiki
Lid Angle sensor schematics for M2 MBA
4jyoq31aeobpuddx2ugqsu513edox3a
File:LidAnglesensorepair.jpg
6
2238
6911
2023-09-14T12:48:53Z
Alex6337
28
6911
wikitext
text/x-wiki
Claimed to be working angle sensor circuit repair.
bk2jsfudgo2ylbks4eusqbpiq196cy9
File:Linux facetimehd error.jpg
6
1900
5608
5607
2021-02-28T14:22:58Z
Piernov
10
Piernov uploaded a new version of [[File:Linux facetimehd error.jpg]]
5607
wikitext
text/x-wiki
Linux facetimehd error
laorzhwba9ez5zh5rsvdqboa31uiagk
File:Linux facetimehd log.jpg
6
1899
5606
2021-02-28T14:08:50Z
Piernov
10
5606
wikitext
text/x-wiki
Linux facetimehd log
6qhpclw7id22dxk744syssj69ne3e87
File:M1WIFI Traces.png
6
2223
6800
2023-03-23T20:31:21Z
Inwerp
16
6800
wikitext
text/x-wiki
WIFI Footprint of a Macbook Pro 13 2020 820-2020 board
8oj9a4ogijhh61ftnn2l4gscr3kc27r
File:M1WifiFootprint.png
6
2222
6799
2023-03-23T20:29:43Z
Inwerp
16
6799
wikitext
text/x-wiki
M1WifiFootprint
k5la2rn3v2g9cin17ry1awxdsx74n1z
File:M1 WIFI Chip footprint.png
6
2221
6798
2023-03-23T20:29:13Z
Inwerp
16
6798
wikitext
text/x-wiki
M1 WIFI Chip footprint
kw5iqei4hzx5e9f39crkh5osey9ybit
File:MLASCT.jpg
6
2248
6957
2023-10-06T21:43:55Z
Vladislav98759
951
6957
wikitext
text/x-wiki
Picture of LAS calibration tool
iexe628uel1c4huwf3gp2woh1ttnryk
File:MacBook-power-up-1.jpg
6
23
24
2019-11-06T16:21:44Z
Chrisb
1
24
wikitext
text/x-wiki
MacBook-power-up-1
ah70g0gn17wyma7j8xa6jvpnjgww3hc
File:MacBook-power-up-2.jpg
6
24
25
2019-11-06T16:22:07Z
Chrisb
1
25
wikitext
text/x-wiki
MacBook-power-up-2
hlh8qp34gdeuubq655xrfk668xxyg8x
File:MacBook Air 13" 2015-2017.jpg
6
135
377
374
2019-12-19T19:28:08Z
Matty
22
Matty uploaded a new version of [[File:MacBook Air 13" 2015-2017.jpg]]
374
wikitext
text/x-wiki
MacBook Air 13" 2015-17
m2cyegyjsidh929puw7v6u3lhbvyy6b
File:MacBook M1 Air 2020 DFU Jumper.png
6
2234
6875
2023-07-03T20:01:34Z
Inwerp
16
6875
wikitext
text/x-wiki
MacBook M1 Air 2020 DFU Jumper
7ovq6sfpxydr66djlrfdh55o01czl97
File:MacBook Pro M1 13 A-Key 2020 Mapping.png
6
2195
6645
2022-10-11T19:38:01Z
Inwerp
16
6645
wikitext
text/x-wiki
MacBook Pro M1 13 A/Key 2020 Mapping
3olscojugfdo4mpc9ti9llcu251ztg0
File:Mac Headphone Jack Revealed (1).jpg
6
2124
6365
2022-01-24T23:35:41Z
Crumblenaut
317
6365
wikitext
text/x-wiki
Headphone Jack - Unoccupied
lei7u6masdennznqc3ux0645ovyfl4f
File:Mac Headphone Jack Revealed (2).jpg
6
2125
6366
2022-01-24T23:37:05Z
Crumblenaut
317
6366
wikitext
text/x-wiki
Headphone Jack - Occupied
hmaih7vr5bod1gzdwwtuumqgq0w18xt
File:Mac Headphone Jack Revealed (3).jpg
6
2126
6367
2022-01-24T23:43:42Z
Crumblenaut
317
6367
wikitext
text/x-wiki
Headphone jack populated - ZOOM
rmmnmbdi3hzf6v3scs51vrlpgzdnzhw
File:Macbook Pinkbars (Flexgate).png
6
2079
6209
2021-11-07T08:43:03Z
Inwerp
16
6209
wikitext
text/x-wiki
Pinkbars Flexgate might be caused by physical damage on flex cable, possibly caused by dust or sand on display edge.
c1g5iqn6d9fu1yst5vhn4ovy5b2qtyq
File:Macbook Pro-2015-13-A1502-A1582-back.jpg
6
1878
5541
2021-02-03T20:46:16Z
Inwerp
16
5541
wikitext
text/x-wiki
Back side of the board. Note much more advanced design compared to regular knock-offs. Thermal pair is present and balanced charging implemented. Pretty suprised, instead of battery controller it actually uses ARM Microcontroller Atmel samd 10u.
hpt3y6p2wll49qwa749m03tjddqtz17
File:Macbook Pro-2015-13-A1502-A1582-front-LMP.jpg
6
1877
5540
2021-02-03T20:39:54Z
Inwerp
16
5540
wikitext
text/x-wiki
Macbook Pro 2015 13 LMP Battery A1582
8hxbfwbniytr1h2r8cgrzfg77cof3ut
File:Macbook Pro-2015-13-A1502-A1582-front2.jpg
6
1879
5542
2021-02-03T21:00:23Z
Inwerp
16
5542
wikitext
text/x-wiki
LMP Battery A1582 sticker removed
fx4gldikjxqtld5fcn9e9zbi0id3a0u
File:Macbook SSD Gen1.png
6
1925
5670
2021-03-16T21:11:16Z
Inwerp
16
5670
wikitext
text/x-wiki
Macbook Air SSD (2010 2011)
khcni4gtrbwgq5abvxam9g7g2eil3yo
File:Macbook SSD Gen2.png
6
1926
5671
2021-03-16T21:12:48Z
Inwerp
16
5671
wikitext
text/x-wiki
Macbook Pro & Air 2012 2013
rfqld8mhue4qy102mlna02i1215vn94
File:Macbook SSD Gen3 4.png
6
1927
5672
2021-03-16T21:13:57Z
Inwerp
16
5672
wikitext
text/x-wiki
Macbook Pro 2013-2015, Air 2013-2017 SSD Connector
ob7x7ziunfkw9ts4cjwtmd84z38t2ls
File:Macintosh LCIII Capacitor Placement.jpg
6
1999
5911
2021-06-16T18:05:59Z
Matty
22
5911
wikitext
text/x-wiki
Macintosh LCIII Capacitor Placement
1qe4nfse9pv5g12foevaxh926ye7a02
File:Macintosh LCII Capacitor Placement 01 Corrected 2.jpg
6
2000
5912
2021-06-16T18:09:38Z
Matty
22
5912
wikitext
text/x-wiki
Macintosh LCII Capacitor Placement 01 Corrected 2
2gliclrocelltkuet1bqedst99xjaok
File:Macintosh LCII Capacitor Placement 02.jpg
6
1997
5909
2021-06-16T17:40:43Z
Matty
22
5909
wikitext
text/x-wiki
Macintosh LCII Capacitor Placement 02
m9xhxa1o7szou8oz2b8ln042rqws0jg
File:Macintosh LC Capacitor Placement 01.jpg
6
1993
5905
2021-06-16T16:25:32Z
Matty
22
5905
wikitext
text/x-wiki
Macintosh LC Capacitor Placement 01
kh9g1n93ukvdb51dkahlvsoiddo0x4h
File:Macintosh LC Capacitor Placement 02.jpg
6
1994
5906
2021-06-16T16:27:20Z
Matty
22
5906
wikitext
text/x-wiki
Macintosh LC Capacitor Placement 02
69pqiwixwq9uph9xer8l00to9dl52p3
File:Macintosh Repair and Upgrade Secrets.pdf
6
476
1069
2020-04-19T16:33:44Z
Chrisb
1
1069
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Macintosh SE-30 Capacitor Placement.jpg
6
1995
5907
2021-06-16T17:05:18Z
Matty
22
5907
wikitext
text/x-wiki
Macintosh SE/30 Capacitor Placement
ccz0e389pd7y4ml5ddrc1qw399gagdc
File:Magsafe pinout.png
6
2206
6699
2023-01-08T21:18:40Z
Inwerp
16
6699
wikitext
text/x-wiki
Magsafe pinout
8dokh8qk9cialg2gv9vj74cdi4sywgv
File:Magsafe schematics.png
6
2204
6697
2023-01-08T21:17:15Z
Inwerp
16
6697
wikitext
text/x-wiki
Magsafe schematics
1ayoff25s0ejqt71acu1hetrbypppmx
File:MosFet Step2.png
6
1676
5001
2020-10-11T18:29:59Z
Inwerp
16
5001
wikitext
text/x-wiki
Step 2 of testing the mosfet.
oi75cza3tlwvkiyh48wg51hsjrmktei
File:MosFet step 3.png
6
1677
5002
2020-10-11T18:34:24Z
Inwerp
16
5002
wikitext
text/x-wiki
mosfet dischage gate
9kbcmfoo5bm8jv7xocp97v2as603aye
File:Mosfet Step1.png
6
1675
5000
2020-10-11T18:26:45Z
Inwerp
16
5000
wikitext
text/x-wiki
Black on drain, red on Source
dth8s26r8conv0wxmm0skj52tvl3dp1
File:Mosfet step3 fixed.png
6
1678
5003
2020-10-11T18:55:12Z
Inwerp
16
5003
wikitext
text/x-wiki
Gate discharging
arb5hnezfvjnm5xcmc0ohpaqw83qc6w
File:My Happy Place - Daytime.jpg
6
1914
5638
2021-03-03T04:13:43Z
Crumblenaut
317
5638
wikitext
text/x-wiki
My Happy Place - Daytime
1zl5i0vcuh4dmhhwn4kspch8s8dsldz
File:My Happy Place - Nighttime.jpg
6
1915
5639
2021-03-03T04:14:02Z
Crumblenaut
317
5639
wikitext
text/x-wiki
My Happy Place - Nighttime
cxder6hzlmbdu2qy5t37i3j9e918774
File:NAND capacity.jpg
6
2169
6546
2022-07-23T09:34:45Z
Pedro147
26
A photo chart of determining NAND sizes based on the brand and part ID printed on the NAND
6546
wikitext
text/x-wiki
== Summary ==
A photo chart of determining NAND sizes based on the brand and part ID printed on the NAND
aw35lgypp6lkbc25h0v7mgee3u7cmjc
File:NFC DCDC S.png
6
1380
3020
2020-10-06T13:57:01Z
Dusten04
30
3020
wikitext
text/x-wiki
NFC DCDC S
q2fokedniol8hc4vyfch8npq4qk46i1
File:NbecTDBRsudat45Z2.jpg
6
1870
5500
2021-01-19T17:11:30Z
Alan.l
19
5500
wikitext
text/x-wiki
parts
gw5g5fuu04tkfzx068qw1mjyri61cyq
File:Nintendo Switch 2 Edited.jpg
6
561
1197
2020-05-06T01:32:26Z
Dusten04
30
1197
wikitext
text/x-wiki
Nintendo Switch 2 Edited
hwqnwe5hy195v4cfjxmnj9wj321fbel
File:Nintendo Switch 3 Edited cORRECTED.jpg
6
617
1275
2020-05-16T22:32:48Z
Dusten04
30
1275
wikitext
text/x-wiki
Nintendo Switch 3 Edited cORRECTED
mh1ci6qxyf2w4gzq5o82friqzhssjle
File:Nintendo Switch 4 Edited.jpg
6
563
1199
2020-05-06T01:33:29Z
Dusten04
30
1199
wikitext
text/x-wiki
Nintendo Switch 4 Edited
dudmk5wkky25jpkzghyp2i2oztd66e4
File:Nintendo Switch FPC 1 Edited.jpg
6
560
1196
2020-05-06T01:31:55Z
Dusten04
30
1196
wikitext
text/x-wiki
Nintendo Switch FPC 1 Edited
42eio1n1kmu61a1p8k9xe5llw8sjp4n
File:Nintendo Switch Lite Battery Edited.jpg
6
551
1184
2020-05-05T19:09:14Z
Dusten04
30
1184
wikitext
text/x-wiki
Nintendo Switch Lite Battery Edited
3ys72u4axysqi2mshx01g1i6tnbtbo1
File:Nintendo Switch Lite FPC 2 Edited.jpg
6
552
1185
2020-05-05T19:09:43Z
Dusten04
30
1185
wikitext
text/x-wiki
Nintendo Switch Lite FPC 2 Edited
m1luax863qfxxsr7ytgnsn967rthe9q
File:Nintendo Switch Lite FPC 3 Edited.jpg
6
553
1186
2020-05-05T19:10:16Z
Dusten04
30
1186
wikitext
text/x-wiki
Nintendo Switch Lite FPC 3 Edited
0llprblp9tl7lzlbnpa1dvhli7bg18b
File:Nintendo Switch Lite FPC 4 Edited.jpg
6
554
1187
2020-05-05T19:10:43Z
Dusten04
30
1187
wikitext
text/x-wiki
Nintendo Switch Lite FPC 4 Edited
79ky7qaij8wkw3tdlouetb6glivzlbt
File:Nintendo Switch Lite FPC 5 Edited.jpg
6
555
1188
2020-05-05T19:11:14Z
Dusten04
30
1188
wikitext
text/x-wiki
Nintendo Switch Lite FPC 5 Edited
sixralisce17ttj3fe6vqnatyupktim
File:Nintendo Switch Lite FPC 6 Edited.jpg
6
556
1189
2020-05-05T19:11:42Z
Dusten04
30
1189
wikitext
text/x-wiki
Nintendo Switch Lite FPC 6 Edited
8rli2tza95o9j2yxlkppw6n6law3sff
File:Nintendo Switch Lite FPC 7 Edited.jpg
6
557
1190
2020-05-05T19:12:16Z
Dusten04
30
1190
wikitext
text/x-wiki
Nintendo Switch Lite FPC 7 Edited
lrb67vn5apwnlsildv481zcpkf5i0a9
File:Nintendo Switch Lite FPC 8 Edited.jpg
6
558
1191
2020-05-05T19:12:45Z
Dusten04
30
1191
wikitext
text/x-wiki
Nintendo Switch Lite FPC 8 Edited
25p4hsjg9z78cwbti8qedfhp0it4inf
File:Nintendo Switch Lite Overall View 1 Edited.jpg
6
550
1183
2020-05-05T19:08:42Z
Dusten04
30
1183
wikitext
text/x-wiki
Nintendo Switch Lite Overall View 1 Edited
b2ba3uiyyk26kns03g95kjff3j42dzw
File:Not charging pro 11 PP3v3 LDO SHORT.jpg
6
2157
6480
2022-04-19T18:29:05Z
Dusten04
30
6480
wikitext
text/x-wiki
Not charging pro 11 PP3v3 LDO SHORT
bd3e5enqmdfotcz2ml6wp3j3dkbdyeq
File:Note 10+ Battery.jpg
6
298
761
2020-02-28T21:39:05Z
Dusten04
30
761
wikitext
text/x-wiki
Note 10+ Battery
h4y6576wxa6tft0597x2c2q5hs1vv1k
File:Note 10+ Overall 1.jpg
6
293
756
2020-02-28T21:33:44Z
Dusten04
30
756
wikitext
text/x-wiki
Note 10+ Overall 1
o8kqzapsbt39kh5vgfsr4qtgsxtk7yx
File:Note 10+ Overall 2.jpg
6
294
757
2020-02-28T21:34:19Z
Dusten04
30
757
wikitext
text/x-wiki
Note 10+ Overall 2
gqfhe6txamjh7w7petdpiwk4as158gy
File:Note 10+ S Pen.jpg
6
296
759
2020-02-28T21:35:36Z
Dusten04
30
759
wikitext
text/x-wiki
Note 10+ S Pen
9dxcn5e9e0bm43p7ok0c2ry6f14l5de
File:Note 10+ Wireless Charger.jpg
6
297
760
2020-02-28T21:36:28Z
Dusten04
30
760
wikitext
text/x-wiki
Note 10+ Wireless Charger
540v7jddlba0k5dajjtc7fmfzv48lje
File:Note 9 FPC 1.png
6
685
1403
2020-07-12T13:49:54Z
Dusten04
30
1403
wikitext
text/x-wiki
Note 9 FPC 1
oag974rlq3wbh8inz524jz9dg9puzqm
File:Note 9 FPC 2.png
6
686
1404
2020-07-12T13:50:57Z
Dusten04
30
1404
wikitext
text/x-wiki
Note 9 FPC 2
3t47lh0nu39pw643zdilfz6wftg9go0
File:Note 9 FPC 3.png
6
687
1405
2020-07-12T13:51:38Z
Dusten04
30
1405
wikitext
text/x-wiki
Note 9 FPC 3
kn9igbo91hvy329tog22k5vt1abczfe
File:Note 9 FPC 5.png
6
689
1407
2020-07-12T13:53:58Z
Dusten04
30
1407
wikitext
text/x-wiki
Note 9 FPC 5
9jku6njum7j63avg98kdm2strjyxmpf
File:Note 9 FPC 6.png
6
690
1408
2020-07-12T13:55:28Z
Dusten04
30
1408
wikitext
text/x-wiki
Note 9 FPC 6
e0cii38ps1gup3sokmihexkj9botula
File:Note 9 FPC 7.png
6
691
1409
2020-07-12T13:56:05Z
Dusten04
30
1409
wikitext
text/x-wiki
Note 9 FPC 7
tbow62pls6tdpbxmk2jvsy6acao6r1w
File:Note 9 FPC 8.png
6
692
1410
2020-07-12T13:56:43Z
Dusten04
30
1410
wikitext
text/x-wiki
Note 9 FPC 8
f857mxus0qy6zm3vxj62ep7bg1imnaj
File:Optimize Logic Repair.png
6
1922
5661
2021-03-11T14:41:28Z
Chrisb
1
5661
wikitext
text/x-wiki
Optimize Logic Repair logo
j5t98ourey2e4kfwv86mcudk8cja6bd
File:Original XS screen.jpg
6
864
1949
2020-09-28T17:25:47Z
Joesipaq
20
1949
wikitext
text/x-wiki
This is an original XS screen pulled form a working iPhone XS
e0wziekgciqza7mwuksbq10wxn3ydvx
File:Overall 1 Edited.jpg
6
159
468
2020-02-01T02:49:57Z
Dusten04
30
468
wikitext
text/x-wiki
Overall View of FPC
a445h2f0d0p3bz6mw0ke0u0elvclyfj
File:Overall Edited.jpg
6
155
452
2020-02-01T01:45:43Z
Dusten04
30
452
wikitext
text/x-wiki
iPad 6 FPC Overall View
cz6zsq4a3sxzev9yurwnvksj8yv5sjc
File:Overall J6100 Edited.jpg
6
431
979
2020-04-04T21:32:00Z
Dusten04
30
979
wikitext
text/x-wiki
Overall J6100 Edited
pp8mb2k313mdkflnwp69yaebhx7avr2
File:Overall View 1.jpg
6
242
661
2020-02-06T22:55:29Z
Dusten04
30
661
wikitext
text/x-wiki
Overall View 1
sk4njk5owml9xfnt4ayog74gzi1jv8z
File:Overall View 1 Edited.jpg
6
464
1051
2020-04-16T21:07:52Z
Dusten04
30
1051
wikitext
text/x-wiki
Overall View 1 Edited
7c7dbngkark8tv7lvsidkyqrldhble3
File:Overall View 1 Note 9.jpg
6
684
1402
2020-07-12T13:48:59Z
Dusten04
30
1402
wikitext
text/x-wiki
Overall View 1 Note 9
2jk36toto89w5tfkfm0zmg58yc3ryx0
File:Overall View 2.jpg
6
243
662
2020-02-06T22:56:11Z
Dusten04
30
662
wikitext
text/x-wiki
Overall View 2
j0o8nfuiicct4yhatvlz0imjwwsz5zs
File:Overall View 2 Edited.jpg
6
225
641
2020-02-06T15:46:30Z
Dusten04
30
641
wikitext
text/x-wiki
Overall View 2 Edited
hyr2klotci81injae8drqlbbhab2vcx
File:Overall View Back.jpg
6
608
1260
2020-05-15T10:47:50Z
Dusten04
30
1260
wikitext
text/x-wiki
Overall View Back
d6022e3b9ewwl4jc4y0ew269ttr02us
File:PCH ME Disable Strap.png
6
11
11
2019-11-06T16:09:15Z
Chrisb
1
11
wikitext
text/x-wiki
PCH ME Disable Strap
0jjw9zp7s2sz2nkbyz4b9o5jb7whfyl
File:PP5V SW LCD Schematic.png
6
2095
6266
2021-11-27T22:59:15Z
Dusten04
30
6266
wikitext
text/x-wiki
PP5V_SW_LCD Schematic
3ofof1et20x9afuxuf5ftw56vkg2tcg
File:PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437.png
6
327
796
2020-03-05T18:00:35Z
Piernov
10
796
wikitext
text/x-wiki
PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437
sryy7okdnc46c0voo302jklowto1xl9
File:PS5 SB diode Readings.jpeg
6
2197
6651
2022-10-26T20:56:14Z
Laup
815
6651
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:PS5 SSD Diode Readings.jpeg
6
2196
6650
2022-10-26T20:55:19Z
Laup
815
Diode readings for SSD and surrounding area
6650
wikitext
text/x-wiki
== Summary ==
Diode readings for SSD and surrounding area
hky7ep41yqiso0ikb74mt955t0pmj8b
File:Panic FULL.txt
6
2142
6437
2022-02-25T11:50:04Z
PRO-mobile
124
Decryption of frequently encountered panic logs in Russian from me personally.
6437
wikitext
text/x-wiki
== Summary ==
Decryption of frequently encountered panic logs in Russian from me personally.
6icybup83dobbmu21wgh51v3d4o8tvy
File:Piernov's github.jpg
6
2147
6442
2022-02-28T11:25:09Z
Alex6337
28
6442
wikitext
text/x-wiki
Piernov's github
8h4rpy3arv6yywgxikh3ourebdd0s7a
File:Pixel 4 Battery Edited.jpg
6
491
1091
2020-04-19T19:45:58Z
Dusten04
30
1091
wikitext
text/x-wiki
Pixel 4 Battery Edited
8tni7j4car1sj5khg4cvczk32217g7g
File:Pixel 4 Bottom MiC Edited.jpg
6
492
1092
2020-04-19T19:46:51Z
Dusten04
30
1092
wikitext
text/x-wiki
Pixel 4 Bottom MiC Edited
fcwzwcjdap08sxjjq20bootgwge4bpx
File:Pixel 4 Charging Port Edited.jpg
6
488
1088
2020-04-19T19:44:16Z
Dusten04
30
1088
wikitext
text/x-wiki
Pixel 4 Charging Port Edited
0bba71xyyio3tylujy2xgrbhl7kj7we
File:Pixel 4 Face ID Edited.jpg
6
486
1086
2020-04-19T19:36:17Z
Dusten04
30
1086
wikitext
text/x-wiki
Pixel 4 Face ID Edited
pcepzpgq9lu2vxs8177x2e48y8l8nc5
File:Pixel 4 Flash Mic Edited.jpg
6
481
1081
2020-04-19T19:32:34Z
Dusten04
30
1081
wikitext
text/x-wiki
Pixel 4 Flash Mic Edited
ltphvkzfq81p7hy2hb5w7fjovpias5p
File:Pixel 4 Front Camera Edited.jpg
6
484
1084
2020-04-19T19:34:45Z
Dusten04
30
1084
wikitext
text/x-wiki
Pixel 4 Front Camera Edited
6hxoutm715os53rkk46jqqepyf6br6g
File:Pixel 4 Left Squeeze Edited.jpg
6
490
1090
2020-04-19T19:45:25Z
Dusten04
30
1090
wikitext
text/x-wiki
Pixel 4 Left Squeeze Edited
d1afr3d17rjf7gooy3zkrqab9d2hcc1
File:Pixel 4 OLED Edited.jpg
6
489
1089
2020-04-19T19:44:47Z
Dusten04
30
1089
wikitext
text/x-wiki
Pixel 4 OLED Edited
awn8xocbwnmhlkdfb9brchgk4q4d6fr
File:Pixel 4 Overall View Final.jpg
6
479
1079
2020-04-19T19:30:05Z
Dusten04
30
1079
wikitext
text/x-wiki
Pixel 4 Overall View Final
oc6u9947y8hi3do86ko5iym28nc4m64
File:Pixel 4 Power Button Volume Edited.jpg
6
482
1082
2020-04-19T19:33:19Z
Dusten04
30
1082
wikitext
text/x-wiki
Pixel 4 Power Button Volume Edited
ttrbzcj6703ip7pbttdip2vcy3bu0eq
File:Pixel 4 Proximity Sensor Edited.jpg
6
483
1083
2020-04-19T19:34:01Z
Dusten04
30
1083
wikitext
text/x-wiki
Pixel 4 Proximity Sensor Edited
tlfst2wts99foju6ey9mel2ehtkt08v
File:Pixel 4 Right Squeeze Edited.jpg
6
487
1087
2020-04-19T19:37:35Z
Dusten04
30
1087
wikitext
text/x-wiki
Pixel 4 Right Squeeze Edited
ou572k7tubsldgr2j7ctux8jfxc2xw7
File:Pixel 4 Tele Camera Edited.jpg
6
480
1080
2020-04-19T19:31:39Z
Dusten04
30
1080
wikitext
text/x-wiki
Pixel 4 Tele Camera Edited
o2xjcputmixc8wiq1tgdthcy2rcr71c
File:Pixel 4 Top SpeakerMic Edited.jpg
6
485
1085
2020-04-19T19:35:34Z
Dusten04
30
1085
wikitext
text/x-wiki
Pixel 4 Top SpeakerMic Edited
3ofn1rvypyxsiw1qxcyj8ppbsjydar4
File:Pixel 4 Wide Camera Edited.jpg
6
493
1093
2020-04-19T19:47:19Z
Dusten04
30
1093
wikitext
text/x-wiki
Pixel 4 Wide Camera Edited
mgl55jjuahe9dbq8glju2o5xsiq0oo9
File:Prepared Workspace.jpg
6
1979
5884
2021-06-04T19:59:41Z
Crumblenaut
317
5884
wikitext
text/x-wiki
Prepared Workspace with a cleared surface, paper towels, 99% and 70% isopropyl alcohol, extra gloves, a mask, eye protection, painter's tape, and cotton swabs.
41cbcme42qk5ztgzswq88ljk70iy54c
File:RAW SoC Debug log.png
6
2261
7022
2023-11-27T16:19:13Z
Inwerp
16
7022
wikitext
text/x-wiki
RAW SoC Debug log
hkvvj7m3qghkd088hha3dvju6qi293u
File:RF 13pm dfcloud6.jpg
6
2658
7712
2024-12-31T12:40:03Z
Dfcloud6
1726
7712
wikitext
text/x-wiki
rf 13pm diode scale values dfcloud6
sppvguki7ikt7gvoqa0uxrhtf4ctj8o
File:Real vs Fake Amtech flux package.jpg
6
1686
5027
2020-10-17T13:42:49Z
Satyricon
21
5027
wikitext
text/x-wiki
Top Amtech flux is a knock off
Bottom Amtech flux is the real one
k46dl1g7xy8phsq3vcghovry9k49o3s
File:Replacement Filter- Coils.png
6
145
419
2020-01-19T06:22:33Z
EstebanM
25
419
wikitext
text/x-wiki
Replacement Filter-Coils
6vnojhexovc5jodzuta6mcc82lhjo7s
File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf
6
782
3118
1668
2020-10-07T08:18:37Z
Piernov
10
Piernov uploaded a new version of [[File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf]]
1668
wikitext
text/x-wiki
Reset to EFI POST State for Ivy Bridge Haswell and Broadwell
auhg51qrtn8lxjcvmr81vi8w1ult7rr
File:Rossmann Repair HDD Recovery.pdf
6
1420
3121
3120
2020-10-07T13:43:45Z
Chrisb
1
Chrisb uploaded a new version of [[File:Rossmann Repair HDD Recovery.pdf]]
3120
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:S3 to S0 State.pdf
6
778
3119
1663
2020-10-07T08:19:24Z
Piernov
10
Piernov uploaded a new version of [[File:S3 to S0 State.pdf]]
1663
wikitext
text/x-wiki
S3 to S0 State
5ko4izgsd50rl5vjstpvsf7vqthszws
File:S8 1 PNG.png
6
2037
6069
2021-09-17T13:50:31Z
Alpha Bravo Tech.
538
6069
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 2.png
6
2038
6070
2021-09-17T13:51:44Z
Alpha Bravo Tech.
538
6070
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 3 PNG.png
6
2039
6071
2021-09-17T13:52:19Z
Alpha Bravo Tech.
538
6071
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 4 PNG.png
6
2040
6072
2021-09-17T13:52:54Z
Alpha Bravo Tech.
538
6072
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 5 PNG.png
6
2041
6073
2021-09-17T13:53:32Z
Alpha Bravo Tech.
538
6073
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 6 PNG.png
6
2042
6074
2021-09-17T13:54:26Z
Alpha Bravo Tech.
538
6074
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S8 7 PNG.png
6
2043
6075
2021-09-17T13:55:10Z
Alpha Bravo Tech.
538
6075
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:S9+Battery Edited.jpg
6
473
1061
2020-04-16T21:19:23Z
Dusten04
30
1061
wikitext
text/x-wiki
S9+Battery Edited
pb3xj8ti2i19awkohous7lnzp2ua51e
File:S9+Charging Port Edited.jpg
6
472
1059
2020-04-16T21:16:39Z
Dusten04
30
1059
wikitext
text/x-wiki
S9+Charging Port Edited
4dyt0kqs2sew3yjf7ls81sqxiomy1y6
File:S9+Finger Print Scanner Edited.jpg
6
470
1057
2020-04-16T21:14:01Z
Dusten04
30
1057
wikitext
text/x-wiki
S9+Finger Print Scanner Edited
qwpb773s2t1r2j05w0li46rpow70hjo
File:S9+Front Facing Camera Edited.jpg
6
468
1055
2020-04-16T21:12:02Z
Dusten04
30
1055
wikitext
text/x-wiki
S9+Front Facing Camera Edited
bc5dwpooc3lxsv4tx4p1dkvb3krm11m
File:S9+Iris Scanner Edited.jpg
6
467
1054
2020-04-16T21:11:11Z
Dusten04
30
1054
wikitext
text/x-wiki
S9+Iris Scanner Edited
30d8ujy0n0ivpqv71me8njufxdojiw5
File:S9+OLED Edited.jpg
6
466
1053
2020-04-16T21:10:22Z
Dusten04
30
1053
wikitext
text/x-wiki
S9+OLED Edited
i3900zz3nypa9qovz9urgw1zswdlxtd
File:S9+Overall View 2 Edited.jpg
6
465
1052
2020-04-16T21:09:28Z
Dusten04
30
1052
wikitext
text/x-wiki
S9+Overall View 2 Edited
tufqthxvxlz6ctf0cxk9axfwucm7iyg
File:S9+Prox Sensor Edited.jpg
6
469
1056
2020-04-16T21:12:57Z
Dusten04
30
1056
wikitext
text/x-wiki
S9+Prox Sensor Edited
bh6widrycrry01ozne9ju5ug07vqtp0
File:S9+Rear Camera Edited.jpg
6
471
1058
2020-04-16T21:15:59Z
Dusten04
30
1058
wikitext
text/x-wiki
S9+Rear Camera Edited
sql5pvt3eqjfnqcq4o2rks7ke5jibjc
File:SAMSUNG S8 BACK.jpg
6
2035
6067
2021-09-17T13:39:54Z
Alpha Bravo Tech.
538
6067
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:SAMSUNG S8 FRONT.jpg
6
2036
6068
2021-09-17T13:49:51Z
Alpha Bravo Tech.
538
6068
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:SATA Temp.png
6
1705
5073
2020-10-21T17:07:39Z
Inwerp
16
5073
wikitext
text/x-wiki
Lovely sensor
733dlffkir3uhd0yor4i0au8a31tmxv
File:SCSI SCA-2 to IDC-50pin.jpg
6
201
595
2020-02-02T11:54:16Z
Piernov
10
595
wikitext
text/x-wiki
SCSI SCA-2 to IDC-50pin
3w8y10igso9mx2kbeztvjyrq69hr2x7
File:SM-G935A BACK.png
6
2051
6102
2021-09-22T18:21:16Z
Alpha Bravo Tech.
538
6102
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A FRONT.png
6
2050
6101
2021-09-22T18:20:38Z
Alpha Bravo Tech.
538
6101
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 1.png
6
2052
6103
2021-09-22T18:21:43Z
Alpha Bravo Tech.
538
6103
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 10.png
6
2061
6112
2021-09-22T18:26:22Z
Alpha Bravo Tech.
538
6112
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 2.png
6
2053
6104
2021-09-22T18:23:07Z
Alpha Bravo Tech.
538
6104
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 3.png
6
2054
6105
2021-09-22T18:23:31Z
Alpha Bravo Tech.
538
6105
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 4.png
6
2055
6106
2021-09-22T18:23:58Z
Alpha Bravo Tech.
538
6106
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 5.png
6
2056
6107
2021-09-22T18:24:19Z
Alpha Bravo Tech.
538
6107
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 6.png
6
2057
6108
2021-09-22T18:24:45Z
Alpha Bravo Tech.
538
6108
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 7.png
6
2058
6109
2021-09-22T18:25:06Z
Alpha Bravo Tech.
538
6109
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 8.png
6
2059
6110
2021-09-22T18:25:32Z
Alpha Bravo Tech.
538
6110
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SM-G935A PIC 9.png
6
2060
6111
2021-09-22T18:26:00Z
Alpha Bravo Tech.
538
6111
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:SMCSensor.png
6
2030
6045
2021-09-06T15:31:45Z
Muerto
527
6045
wikitext
text/x-wiki
Issue Summary
9qsrutnpbt2bbbs8ggac9kjwutu0fnn
File:SMCSensorRevised.png
6
2032
6047
2021-09-06T15:44:30Z
Muerto
527
6047
wikitext
text/x-wiki
Summary
26p95b46tqi2swic8u1etbclxsyxq5k
File:SMC 820-3209-A Crop.jpg
6
627
1299
2020-05-20T23:48:28Z
Dusten04
30
1299
wikitext
text/x-wiki
SMC 820-3209-A Crop
7r0tebw0dbu3a96eplno89fke8jrdhp
File:SMC AVREF .png
6
2205
6698
2023-01-08T21:18:02Z
Inwerp
16
6698
wikitext
text/x-wiki
SMC AVREF
rwbxh0ro6zqxdd68a9stogabhvmip7w
File:SMC Flashing done.jpg
6
1952
5806
2021-05-12T12:42:26Z
Alex6337
28
5806
wikitext
text/x-wiki
SMC Flashing done
pg47f29y2476nmtuo1c31mgkpzzaey9
File:SMC ONOFF L POWERPAD BOTTOM.jpg
6
681
1392
2020-07-02T16:36:58Z
Satyricon
21
1392
wikitext
text/x-wiki
SMC ONOFF L POWERPAD BOTTOM
bcx1qoozjate0xkqpj9x6q0o77z7xyn
File:SMC ONOFF L POWERPAD TOP.jpg
6
680
1391
2020-07-02T16:36:15Z
Satyricon
21
1391
wikitext
text/x-wiki
SMC ONOFF L POWERPAD TOP
9pud45yivhem1mchi50bav42odpqq2r
File:SMC ON OFF Keyboard TP.jpg
6
679
1389
2020-07-02T16:10:34Z
Satyricon
21
1389
wikitext
text/x-wiki
SMC ON OFF Keyboard TP
qkhvfqs09pw7xszkt19irbex91dqpcy
File:SMC Power up.jpg
6
12
13
2019-11-06T16:10:59Z
Chrisb
1
13
wikitext
text/x-wiki
SMC Power up
e9dfqavkza4sls1gh8bstvbvbxlmis1
File:SOC FORCE DFU Jumper.jpg
6
2011
5952
2021-07-23T22:21:56Z
Crumblenaut
317
5952
wikitext
text/x-wiki
Long jumper that's been cut after the system booted into DFU mode successfully.
qj0yaoadssyjmo2gy2pxl4dlvg9ja7q
File:SR17D.png
6
2164
6531
2022-06-10T21:57:34Z
Inwerp
16
6531
wikitext
text/x-wiki
SR17D
l4kzibyqshzlspooyv8dq0454zbuvjo
File:SR2C4.png
6
2162
6529
2022-06-10T21:52:33Z
Inwerp
16
6529
wikitext
text/x-wiki
SR2C4 Intel PCH
cv75ggfuafm9z3ua4ghjcjisa953uc6
File:SR40B.png
6
2165
6532
2022-06-10T22:04:18Z
Inwerp
16
6532
wikitext
text/x-wiki
Intel SR40B PCH
5iudmy11va8zs6gfol1r1fw01nfod9e
File:SYSDETECT L.png
6
2152
6464
2022-04-13T11:28:48Z
Inwerp
16
6464
wikitext
text/x-wiki
Battery trigger
lpbyn9sufwbw7qyohuzj87gvt2gzbyl
File:Samsung S10+ Front Camera Edited.jpg
6
574
1212
2020-05-09T15:22:35Z
Dusten04
30
1212
wikitext
text/x-wiki
Samsung S10+ Front Camera Edited
jk78j5qhd717evngvtumj27i4q6sbtb
File:Samsung S10+ Headphone Jack Edited.jpg
6
575
1213
2020-05-09T15:23:02Z
Dusten04
30
1213
wikitext
text/x-wiki
Samsung S10+ Headphone Jack Edited
o8q2sys5cw45uylgk2bie33hn50mv7p
File:Samsung S10+ OLED Edited.jpg
6
573
1211
2020-05-09T15:22:07Z
Dusten04
30
1211
wikitext
text/x-wiki
Samsung S10+ OLED Edited
7t4929ofejdg5agi9fzwu0ur6bal1ue
File:Samsung S10 Battery Edited.jpg
6
586
1228
2020-05-10T16:55:19Z
Dusten04
30
1228
wikitext
text/x-wiki
Samsung S10 Battery Edited
5ebpmy6depc4knusywr1u5y9a62d9r2
File:Samsung S10 Charging Port Edited.jpg
6
585
1227
2020-05-10T16:54:39Z
Dusten04
30
1227
wikitext
text/x-wiki
Samsung S10 Charging Port Edited
gbkzxlporul6x423jl6otutw9owb5ct
File:Samsung S10 Front Camera.jpg
6
587
1229
2020-05-10T16:55:47Z
Dusten04
30
1229
wikitext
text/x-wiki
Samsung S10 Front Camera
qavpfcpzv2ey3wz388pca426s7o3676
File:Samsung S10 Headphone Jack Edited.jpg
6
588
1230
2020-05-10T16:56:20Z
Dusten04
30
1230
wikitext
text/x-wiki
Samsung S10 Headphone Jack Edited
ankdqffwnpn405g989imzaz1cqni52u
File:Samsung S10 Left Rear Camera Edited.jpg
6
589
1231
2020-05-10T16:56:51Z
Dusten04
30
1231
wikitext
text/x-wiki
Samsung S10 Left Rear Camera Edited
pqea1z9slm0dc3v745h74hdo386ndop
File:Samsung S10 OLED Edited.jpg
6
584
1226
2020-05-10T16:54:09Z
Dusten04
30
1226
wikitext
text/x-wiki
Samsung S10 OLED Edited
aycwpfrkwqdr9v5x4o7ykt4hemmqo74
File:Samsung S10 Right Rear Camera Edited.jpg
6
590
1232
2020-05-10T16:57:27Z
Dusten04
30
1232
wikitext
text/x-wiki
Samsung S10 Right Rear Camera Edited
qklboddtrgdzjxeg9z0n2tccd05276p
File:Samsung S10e 12mp Camera Edited.jpg
6
579
1220
2020-05-09T19:18:47Z
Dusten04
30
1220
wikitext
text/x-wiki
Samsung S10e 12mp Camera Edited
3ndjetsalse3t4kyos3f0cu9gzslxiw
File:Samsung S10e 16MP Camera Edited.jpg
6
580
1221
2020-05-09T19:19:17Z
Dusten04
30
1221
wikitext
text/x-wiki
Samsung S10e 16MP Camera Edited
bowzsdhc99my8oxgcuz582gn0ys8asa
File:Samsung S10e Front Camera.jpg
6
581
1222
2020-05-09T19:19:47Z
Dusten04
30
1222
wikitext
text/x-wiki
Samsung S10e Front Camera
0cu7yjzy7q6g33z6xu8dwkz7eas4uj7
File:Samsung S10e Headphone Jack Edited.jpg
6
582
1223
2020-05-09T19:20:20Z
Dusten04
30
1223
wikitext
text/x-wiki
Samsung S10e Headphone Jack Edited
79j6sqluofs8npfkuzd975hp7dq4yli
File:Samsung S10e OLED Edited.jpg
6
578
1219
2020-05-09T19:18:03Z
Dusten04
30
1219
wikitext
text/x-wiki
Samsung S10e OLED Edited
ecpciamat292jl4l23qdv5ti0jcxat0
File:Samsung S10e Power Button Edited.jpg
6
583
1224
2020-05-09T19:21:30Z
Dusten04
30
1224
wikitext
text/x-wiki
Samsung S10e Power Button Edited
22q9vpb3w7shuk7xn3xadwbhk8d8ltp
File:Samsung S20 Ultra Battery Edited.jpg
6
600
1251
2020-05-14T01:43:24Z
Dusten04
30
1251
wikitext
text/x-wiki
Samsung S20 Ultra Battery Edited
cs9bk6j4sg4pqelxxsqg6ct3cutufed
File:Samsung S20 Ultra Charging Port 2 Edited.jpg
6
604
1255
2020-05-14T01:48:11Z
Dusten04
30
1255
wikitext
text/x-wiki
Samsung S20 Ultra Charging Port 2 Edited
kdpxvpwz5cc4ewdofc8914jkidu5czx
File:Samsung S20 Ultra Charging Port Edited.jpg
6
603
1254
2020-05-14T01:47:13Z
Dusten04
30
1254
wikitext
text/x-wiki
Samsung S20 Ultra Charging Port Edited
ez44ay9kvtc0u7ayjf0p5wcleb9za99
File:Samsung S20 Ultra Edited OLED.jpg
6
602
1253
2020-05-14T01:46:24Z
Dusten04
30
1253
wikitext
text/x-wiki
Samsung S20 Ultra Edited OLED
m4lzbqugi11ftoqp665dvds32vcxe7u
File:Samsung S20 Ultra Front Camera Edited.jpg
6
605
1256
2020-05-14T01:48:57Z
Dusten04
30
1256
wikitext
text/x-wiki
Samsung S20 Ultra Front Camera Edited
sj0xltkac5oalelccd2steedeeq07wg
File:Samsung S20 Ultra Overall.jpg
6
599
1250
2020-05-14T01:41:43Z
Dusten04
30
1250
wikitext
text/x-wiki
Samsung S20 Ultra Overall
mh2tk7emvkzac9fwttu6z9kg1hy5hac
File:Samsung S20 Ultra Power Button.jpg
6
601
1252
2020-05-14T01:45:03Z
Dusten04
30
1252
wikitext
text/x-wiki
Samsung S20 Ultra Power Button
az4okxr5t6ujcra4ulvewgh3d2lvk7e
File:Samsung S20 Ultra Rear Camera 2 Edited.jpg
6
610
1262
2020-05-15T10:49:46Z
Dusten04
30
1262
wikitext
text/x-wiki
Samsung S20 Ultra Rear Camera 2 Edited
mf9xgrw1ds0tygpos9w9exsqoa3oj88
File:Samsung S20 Ultra Rear Camera 3 Edited.jpg
6
611
1263
2020-05-15T10:50:27Z
Dusten04
30
1263
wikitext
text/x-wiki
Samsung S20 Ultra Rear Camera 3 Edited
79fqztqnq3yxobwi4vix0nv8qs5ha17
File:Samsung S20 Ultra Rear Camera 4 Edited.jpg
6
612
1264
2020-05-15T10:51:03Z
Dusten04
30
1264
wikitext
text/x-wiki
Samsung S20 Ultra Rear Camera 4 Edited
mcjhibbep98cjexo0g9au9dx7lipn1o
File:Samsung S20 Ultra Rear Camera Edited.jpg
6
609
1261
2020-05-15T10:49:15Z
Dusten04
30
1261
wikitext
text/x-wiki
Samsung S20 Ultra Rear Camera Edited
e0e2k7u3s48f0l2zxa0wt4lxxv7nfdf
File:Samsung S20 Ultra Side Sensor Edited.jpg
6
614
1266
2020-05-15T10:52:23Z
Dusten04
30
1266
wikitext
text/x-wiki
Samsung S20 Ultra Side Sensor Edited
s7p2pbslnidub2vsrjef7j3ez7kkzja
File:Samsung S20 Ultra Wireless Edited.jpg
6
613
1265
2020-05-15T10:51:38Z
Dusten04
30
1265
wikitext
text/x-wiki
Samsung S20 Ultra Wireless Edited
6fiymak93u7egzt6go2vzhac2ef57pl
File:Samsung S7 Edge SM-G935A.pdf
6
2049
6098
2021-09-22T18:02:00Z
Alpha Bravo Tech.
538
6098
wikitext
text/x-wiki
Samsung S7 Edge SM-G935A
f662xvccy1nwy1bwkgqocas9j5alg9w
File:Samsung S8 SM-G950U Diode Mode Readings.pdf
6
2033
6090
6065
2021-09-21T13:59:40Z
Alpha Bravo Tech.
538
Alpha Bravo Tech. uploaded a new version of [[File:Samsung S8 SM-G950U Diode Mode Readings.pdf]]
6065
wikitext
text/x-wiki
Samsung S8 SM-G950U Diode Mode Readings
tkzdv68hf7w9v9a3ge8mm50i7g9msqn
File:Samsung S8 SM-G950U diode mode readingsV2.pdf
6
2048
6091
2021-09-21T14:06:21Z
Alpha Bravo Tech.
538
6091
wikitext
text/x-wiki
Samsung S8 SM-G950U diode mode readings v2
gr58pjl9rqj9br4z8xphbrd5w64wa1q
File:Save in "home".jpg
6
2149
6444
2022-02-28T11:28:15Z
Alex6337
28
6444
wikitext
text/x-wiki
Save in "home"
7zcj0wzu7tqhvbtiipxpsyqtkth3tdm
File:Scissors A2179 Bottom.jpg
6
1714
5091
2020-10-23T08:38:17Z
Satyricon
21
5091
wikitext
text/x-wiki
bottom view
1qjvvhhaei21tdz26u5vb901646ci9a
File:Scissors A2179 Top.jpg
6
1713
5090
2020-10-23T08:37:21Z
Satyricon
21
5090
wikitext
text/x-wiki
top view
coaxy6e016jnozhma4hbkfl5s4v3vns
File:Screen Shot 2021-08-04 at 4.57.13 PM.png
6
2015
5965
2021-08-04T14:00:38Z
ProMoe
502
5965
wikitext
text/x-wiki
A 13" 2015 at minimal usage. 2.7 i5, 8GB, 128GB Sitting on 1026 battery cycles.
gz7j4z4yo5rqmcuoolpeaozorvsdza7
File:Screen Shot 2021-08-04 at 5.40.47 PM.png
6
2016
5971
2021-08-04T14:42:34Z
ProMoe
502
5971
wikitext
text/x-wiki
n
oh2rif7evp5obgx16x2w2t6pjpreh7u
File:Screenshot 2021-09-29 17-35-15.png
6
2077
6191
2021-10-20T10:37:40Z
Hpibmx
555
6191
wikitext
text/x-wiki
iPad 8 touch 1/2
dgmxvmtrv2yitsjqrup5mpztpn5y44t
File:Screenshot 2021-09-29 17-37-09.png
6
2078
6192
2021-10-20T10:38:36Z
Hpibmx
555
6192
wikitext
text/x-wiki
Finger
tp9y7feebypeiwe1bi3k3w5wea5i9em
File:Shiny Search 1.png
6
818
1862
1861
2020-09-27T20:11:08Z
Chrisb
1
1862
wikitext
text/x-wiki
Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]]
dlm1s7c5595rdy1cdyze7owo3cccnoc
File:Shiny Search 2.png
6
819
1860
1859
2020-09-27T20:10:30Z
Chrisb
1
1860
wikitext
text/x-wiki
Shiny Search 2
Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]]
7a233apbxu1jhxwfnz2izc9n2t8ix82
File:Smasung S20 Ultra Sensor Edited.jpg
6
615
1267
2020-05-15T10:52:56Z
Dusten04
30
1267
wikitext
text/x-wiki
Smasung S20 Ultra Sensor Edited
l9idjja6uxmb4ir2ga43da5h93adqrw
File:Smc-crystal-circuit.jpg
6
13
14
2019-11-06T16:11:27Z
Chrisb
1
14
wikitext
text/x-wiki
Smc-crystal-circuit
lvsu95xyyg6rboicol3u5dd9wy3vnzn
File:Smc-reset-circuit.jpg
6
14
15
2019-11-06T16:12:04Z
Chrisb
1
15
wikitext
text/x-wiki
Smc-reset-circuit
fcq525zvu4m62odq9abqgkx6maadfm3
File:Steam Deck 512GB Diode Readings.png
6
2191
6627
2022-09-19T14:00:03Z
Kroman
522
6627
wikitext
text/x-wiki
Diode readings of the Steam Deck USB charging port using the USB-C breakout board from OSS Team.
n66yyfj8tvxeydo68ovqccw4nljgjf0
File:Successful Boot EFI 1.jpg
6
26
27
2019-11-06T16:23:32Z
Chrisb
1
27
wikitext
text/x-wiki
Successful Boot EFI 1
85ewwsb1ei6wta150epy9muiql3dr1j
File:Successful Boot EFI 2.jpg
6
27
28
2019-11-06T16:24:02Z
Chrisb
1
28
wikitext
text/x-wiki
Successful Boot EFI 2
1cxq2qywal8jwa942m85q95u1bz58tz
File:Switch Lite Charging Port 1 Edited.jpg
6
559
1192
2020-05-05T19:13:17Z
Dusten04
30
1192
wikitext
text/x-wiki
Switch Lite Charging Port 1 Edited
0rqutejsgp146an027srvgjp5u3co1l
File:Switch P13USB Edited.jpg
6
593
1240
2020-05-12T23:23:14Z
Dusten04
30
1240
wikitext
text/x-wiki
Switch P13USB Edited
k9ouqob1xqsyirgep3fc4q8untpdi3c
File:T2 PMIC 001700 early revision.png
6
2137
6412
2022-02-09T12:20:24Z
Inwerp
16
6412
wikitext
text/x-wiki
T2 PMIC 001700 early revision
jd0kiuqrmj2l448emz6esks9h6s268o
File:T2 PMIC 001700 revision 2.png
6
2138
6413
2022-02-09T12:25:07Z
Inwerp
16
6413
wikitext
text/x-wiki
T2 PMIC 001700 revision 2
35w78loh9g9rn8znrkxpndymfrl30o4
File:T2 RAM Pinout.jpg
6
2259
7014
2023-11-03T16:18:05Z
Inwerp
16
7014
wikitext
text/x-wiki
credits to @leshuq / @lisochenko
8ln7orudflbj648ndjqcrgs1q0deyua
File:T2 Ram balls.png
6
2243
6924
2023-09-26T12:08:05Z
Inwerp
16
6924
wikitext
text/x-wiki
T2 Ram balls
7cpp0xvimwzqdexraf04q9mpcxj559w
File:T2 WiFi IC Replacement.jpg
6
1885
5555
2021-02-08T00:14:41Z
EstebanM
25
5555
wikitext
text/x-wiki
Replace WiFI iC, BT Serial Flash, WiFi EEPROM
oo0430s3ydv9a7xt38qyozpoheylwz7
File:TCON Backlight VOUT.png
6
1976
5858
2021-05-20T14:11:51Z
Inwerp
16
5858
wikitext
text/x-wiki
TCON Backlight VOUT testpoint
5sk2o9m9hzjxc4080aar0101e3q671b
File:TCON Backlight communication.png
6
1975
5857
2021-05-20T14:11:03Z
Inwerp
16
5857
wikitext
text/x-wiki
TCON Backlight SDA / SLC lines
p1invyk2gcpuo21gryvpa5xw6ib5rsj
File:TCON Testpoints.png
6
2085
6231
2021-11-16T08:52:22Z
Inwerp
16
6231
wikitext
text/x-wiki
There are many testpoints behind wide flex cable including feedback
92688m9tgq8d2bcrbyesii2ru7x36zy
File:TempComparator.png
6
719
1518
2020-08-12T19:20:49Z
Inwerp
16
1518
wikitext
text/x-wiki
HDD Temp circuit
7ri0o7d8quqvjro1p3lt2c2kslbp96v
File:Temp sensor processing for imac 2009.png
6
2098
6285
2021-12-05T10:29:16Z
Bobcov
604
6285
wikitext
text/x-wiki
temperature sensor circuits
rvwjr3cyc11r47cw79ci5anqyuo5byt
File:The Dead Mac Scrolls 1992.pdf
6
477
1070
2020-04-19T16:34:26Z
Chrisb
1
1070
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:Top Amtech flux is a knock off. The bottom is genuine..jpg
6
1687
5028
2020-10-17T13:44:43Z
Satyricon
21
5028
wikitext
text/x-wiki
Top Amtech flux is a knock off. The bottom is genuine.
6xmm8e46u8l1s0j8v58jhrj3c2pqm9v
File:Touchbar controller board.png
6
710
1501
2020-08-09T12:58:52Z
Inwerp
16
1501
wikitext
text/x-wiki
easilly destroyed by waterdamage
k9bi3jctgw8y37r8xc304atgdta8amw
File:USB-C pinout.png
6
811
1731
2020-09-14T14:25:42Z
Satyricon
21
1731
wikitext
text/x-wiki
USB-C pinout
3s18ul6n6xul0y77gs2o1f557swelgq
File:USPS Help 01.png
6
1352
2986
2020-10-05T19:21:41Z
Matty
22
2986
wikitext
text/x-wiki
USPS Help 01
27xk2opfpoiawzbu9ab6s5hwjkse5l0
File:USPS Help 02.png
6
1353
2989
2020-10-05T19:25:31Z
Matty
22
2989
wikitext
text/x-wiki
USPS Help 02
d4ydxef9cq9ultamszkpvjtdzf8qipo
File:USPS Help 03.png
6
1354
2991
2020-10-05T19:28:39Z
Matty
22
2991
wikitext
text/x-wiki
USPS Help 03
4vw746on7b4gvhcpj2urr5rmwjc4tfv
File:USPS Help 04.png
6
1355
2992
2020-10-05T19:29:34Z
Matty
22
2992
wikitext
text/x-wiki
USPS Help 04
o9sldh4vlttk3w5rt1gxf5koyp99u61
File:USPS Help 05.png
6
1356
2993
2020-10-05T19:33:53Z
Matty
22
2993
wikitext
text/x-wiki
USPS Help 05
93zjyjt7s2ffyu7teun48oyl6ypwoki
File:USPS Help 06.png
6
1357
2994
2020-10-05T19:36:06Z
Matty
22
2994
wikitext
text/x-wiki
USPS Help 06
tle8zgja4ksanoyngsfvi539bicdq0k
File:USPS Help 07.png
6
1358
2995
2020-10-05T19:37:04Z
Matty
22
2995
wikitext
text/x-wiki
USPS Help 07
1s49qexlcffhi5ceve4r161nf8fiarb
File:USPS Help 08.png
6
1359
2996
2020-10-05T19:39:00Z
Matty
22
2996
wikitext
text/x-wiki
USPS Help 08
rstd61q3egk6hdbzu3tv0uiq0hfj1tf
File:USPS Help 09.png
6
1360
2997
2020-10-05T19:41:02Z
Matty
22
2997
wikitext
text/x-wiki
USPS Help 09
iicqntjj00rsjh5kn8bfkfgl6g8m6e8
File:USPS Help 10.png
6
1361
2998
2020-10-05T19:42:16Z
Matty
22
2998
wikitext
text/x-wiki
USPS Help 10
b35e430osakozi4s8bwdkky6ahnq3aq
File:USPS Help 11.png
6
1362
2999
2020-10-05T19:45:38Z
Matty
22
2999
wikitext
text/x-wiki
USPS Help 11
suy08bf96qgar596jug2r86nhlib8bo
File:USPS Help 12.png
6
1363
3000
2020-10-05T19:49:39Z
Matty
22
3000
wikitext
text/x-wiki
USPS Help 12
flnna5o3aqghqrsb3rtzxhmxiuuwdd0
File:USPS Help 13.png
6
1364
3001
2020-10-05T19:50:19Z
Matty
22
3001
wikitext
text/x-wiki
USPS Help 13
o6l0d4j80rb6vavliys8mtblmp36l70
File:USPS Help 14.png
6
1365
3002
2020-10-05T19:51:30Z
Matty
22
3002
wikitext
text/x-wiki
USPS Help 14
6e474ktqrw2e9f137nxw13eywefo4or
File:USPS Help 15.png
6
1366
3003
2020-10-05T19:52:14Z
Matty
22
3003
wikitext
text/x-wiki
USPS Help 15
nrpm6qh0d7h1faivgoduqgdtwjvy2q4
File:VIDEO Y TOUCH SE 2022.jpg
6
2662
7717
2024-12-31T12:54:17Z
Dfcloud6
1726
7717
wikitext
text/x-wiki
LCD and TOUCH-ID diode scale values iphone se 2022 dfcloud6
plq4fmsqm2qw7oujp0oag6stfcui3z9
File:WIFFI.png
6
1331
2911
2020-10-02T15:19:59Z
Hunmax
201
2911
wikitext
text/x-wiki
iPhone X intel Logic Board
gc5jue8rllq7zxpkyvg88as5efr9edx
File:What to look for.png
6
143
417
2020-01-19T06:18:56Z
EstebanM
25
417
wikitext
text/x-wiki
What to look for
qs1wwqh6rrc0b2c7hgsgy1i2atcfx4t
File:WiFi Error.jpg
6
1883
5553
2021-02-07T23:52:34Z
EstebanM
25
5553
wikitext
text/x-wiki
Error in System Information if ROM chips are not transferred.
nx2k57th1x78831wbe32vzaxxeasfne
File:WiFi Replacement.jpg
6
1882
5552
2021-02-07T23:46:18Z
EstebanM
25
5552
wikitext
text/x-wiki
WiFi IC U3700 Replacement
0ugrm7xfkrkuwj6k0oyl2gvbsk55jsc
File:Wifi Pinout.png
6
2212
6736
2023-02-12T17:09:45Z
Inwerp
16
6736
wikitext
text/x-wiki
Wifi Pinout
35tnpiqqc567ao0lvst1g93pur2nwxg
File:Wiring diagram.jpg
6
2253
6976
2023-10-23T23:49:43Z
Infosquad
1036
6976
wikitext
text/x-wiki
UART wiring diagram
j9g7jhlu3h2w7zijl3fetnvrixs9g8s
File:Working tcon Testcable (Intel only).png
6
2086
6233
2021-11-16T12:42:04Z
Inwerp
16
6233
wikitext
text/x-wiki
Working tcon Testcable (Intel only)
ebcozzw2rts6ycf1m0lv8eite4qnnlp
File:a1347 power supply 01.jpg
6
1335
2933
2020-10-04T19:17:19Z
Alan.l
19
2933
wikitext
text/x-wiki
a1347 power supply 01
f1f0u7va2pj69n84jj4eo0soa6bqtve
File:a1347 power supply 02.jpg
6
1336
2934
2020-10-04T19:19:02Z
Alan.l
19
2934
wikitext
text/x-wiki
a1347 power supply 02
4rlvdtb9wlad6zbqgxm683o6qwnxexa
File:als iphone 13 dfcloud6.jpg
6
2671
7728
2024-12-31T13:38:09Z
Dfcloud6
1726
7728
wikitext
text/x-wiki
Als IR-CAM TORCH and SIM CARD diode scale values iphone 13 dfcloud6
35fvpprqdlvn2azcpckboywn14l9z62
File:anode cap removal.png
6
2018
5984
2021-08-05T02:03:49Z
Nobluesky
182
5984
wikitext
text/x-wiki
anode cap removal
8zvjuqwqdsgpn3o5w7qf3t1taru1o6w
File:apple-iphone-11pro nand.png
6
2202
6664
2022-11-03T09:57:51Z
Ninos22
819
6664
wikitext
text/x-wiki
11 Pro/ProMax NAND readings
01cnktqzw1rc6x6l9ytyvnaj349ifa5
File:backlightflexcable.jpg
6
2215
6751
2023-02-14T14:19:06Z
Alan.l
19
6751
wikitext
text/x-wiki
backlightflexcable
o17olbqwq7jnj4nlgbhruku08s0csip
File:backlightflexcable2.png
6
2216
6754
2023-02-14T14:21:05Z
Alan.l
19
6754
wikitext
text/x-wiki
backlightflexcable2
bji15k7pax2v70n372q0n0goi6co1ez
File:backlightflexcable3.jpg
6
2217
6757
2023-02-14T22:49:56Z
Alan.l
19
6757
wikitext
text/x-wiki
backlightflexcable3
h73homf2qll2tpt53sj9orxtyma8djt
File:balls cut.png
6
2244
6925
2023-09-26T12:09:51Z
Inwerp
16
6925
wikitext
text/x-wiki
balls cut
a3ac8tfkio5n0wu20jtdmr3bmc1n8au
File:batlow l to 3v3 s5.png
6
2139
6427
2022-02-18T18:06:36Z
Inwerp
16
6427
wikitext
text/x-wiki
How to start 15" MacBook Pro with Start with 65w charger and no battery
hg7lq9g8im7mwqrfo88p4rvji158gmw
File:calibration2.jpg
6
1709
5083
2020-10-22T21:15:52Z
Alan.l
19
5083
wikitext
text/x-wiki
calibration2
ca6qqbog7q6n46cls2qt38jcxm9tzk1
File:cameras iphone 13 dfcloud6.jpg
6
2674
7731
2024-12-31T13:42:19Z
Dfcloud6
1726
7731
wikitext
text/x-wiki
cameras diode scale values iphone 13
k6mx1oqb40iuhglrh4mkv5pakyrnbk9
File:charge fpc 13pm dfcloud6.jpg
6
2657
7711
2024-12-31T12:37:28Z
Dfcloud6
1726
7711
wikitext
text/x-wiki
Charging dock diode scale values dfcloud6
4zqvp6gkctsu2d3t6gtmq22c7qola2x
File:content-installer.jpg
6
1953
5809
2021-05-12T13:00:38Z
Alex6337
28
5809
wikitext
text/x-wiki
Content of MacOS Mojave installer package
2cum2g6q8w4qv0rlr8zitv6676440d2
File:crt monitor details 1.jpg
6
2019
5985
2021-08-05T02:04:59Z
Nobluesky
182
5985
wikitext
text/x-wiki
crt monitor details 1
6ux5klq436qtuhojrn11vkqdwjj3zel
File:crt monitor details 2.jpg
6
2020
5986
2021-08-05T02:05:23Z
Nobluesky
182
5986
wikitext
text/x-wiki
crt monitor details 2
9fdcfpxs4r3zspq2ozfb09qs0rtqenl
File:crt tv details 1.jpg
6
2021
5987
2021-08-05T02:05:44Z
Nobluesky
182
5987
wikitext
text/x-wiki
crt tv details 1
sjtrrfx8yrp171tv6j87yx6jipy7sxa
File:crt tv details 2.png
6
2022
5988
2021-08-05T02:06:10Z
Nobluesky
182
5988
wikitext
text/x-wiki
crt tv details 2
kwlm24cyoprlhlvoar3xc9rui7beu81
File:crt tv details 3.jpg
6
2023
5989
2021-08-05T02:06:29Z
Nobluesky
182
5989
wikitext
text/x-wiki
crt tv details 3
guwo4tzi3cplczvp0xebhw6p0yuxw5u
File:debug 1.png
6
2250
6963
2023-10-22T16:32:09Z
Infosquad
1036
6963
wikitext
text/x-wiki
debug aliases block in Apple Macbook schematics
kchjvv3oczgeq53ztpctntn3aborhb8
File:dock iphone 13 dfcloud6.jpg
6
2673
7730
2024-12-31T13:41:09Z
Dfcloud6
1726
7730
wikitext
text/x-wiki
Charging dock diode scale values iphone 13
tkoe6ux5dmprtpc1ecjwzc487rf4wmp
File:factory calibrated colour.jpg
6
1708
5082
2020-10-22T21:10:01Z
Alan.l
19
5082
wikitext
text/x-wiki
factory calibrated colour
h01zimebiaftuavvtvoif7ya5yj7y2l
File:firmwarepkg.jpg
6
1954
5810
2021-05-12T13:02:22Z
Alex6337
28
5810
wikitext
text/x-wiki
Firmware.pkg location in InstallESD.dmg
a5uh6iz1yltu0z445e8m51npedi5ne2
File:funfact3.png
6
722
1525
2020-08-12T20:07:34Z
Inwerp
16
1525
wikitext
text/x-wiki
fun fact abouth the hdd temp sensor
mq6okp6b6mo5sdtgis8pdge2i93ltmh
File:game console small parts list as of Jan 21st 2022.xlsx
6
2122
6361
2022-01-21T19:18:41Z
Alpha Bravo Tech.
538
List of game console parts and components. Provided by http://repairlegion.com
6361
wikitext
text/x-wiki
== Summary ==
List of game console parts and components. Provided by http://repairlegion.com
3znibfc7vjtig2fy38jh3embi5krm2i
File:goldfoilxs.png
6
1887
5560
2021-02-10T05:18:31Z
PaladinJax
199
5560
wikitext
text/x-wiki
gold foil iphone xs
47q3gpcmk2zvyptz9dul0dmtzawo6zm
File:hddboy.png
6
2161
6527
2022-06-10T19:55:20Z
Inwerp
16
6527
wikitext
text/x-wiki
This image describes the process of QA analysis
iitpqxv02whzlybm68ypzl2498v2c25
File:header.jpg
6
1417
3111
3106
2020-10-06T22:07:44Z
Chrisb
1
Chrisb uploaded a new version of [[File:header.jpg]]
3075
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:iMac EDP.png
6
2232
6869
2023-06-21T12:42:46Z
Inwerp
16
6869
wikitext
text/x-wiki
iMac EDP connector pinout
oaywh4yllnuw3r7gg0bdb0bn8o8eexa
File:iPHONE XR DOCK CONECTOR VALUES.jpg
6
2665
7721
2024-12-31T12:59:26Z
Dfcloud6
1726
7721
wikitext
text/x-wiki
Charging dock diode scale values iphone xr dfcloud6
bujsxga6lt5kieln67r3judoc2x3wxo
File:iPadLaminatedOrientation.jpg
6
1817
5342
2020-12-18T23:14:40Z
PaladinJax
199
5342
wikitext
text/x-wiki
iPad Laminated Display Orientation
gp1iqtnougsessdt03f8zeh1pt3l691
File:iPad 10.2 Connector 4 Edited.jpg
6
268
703
2020-02-17T20:54:59Z
Dusten04
30
703
wikitext
text/x-wiki
iPad 10.2 Connector 4 Edited
t2bocu8w5d0pfl6423a5l01xf9o0hp8
File:iPad 10.2 Digi Connector 2 Edited.jpg
6
266
701
2020-02-17T20:53:42Z
Dusten04
30
701
wikitext
text/x-wiki
iPad 10.2 Digi Connector 2 Edited
qdrikf37xep6f8ocjhjwshecn4l7fb4
File:iPad 10.2 Digitizer Connector 1 Edited.jpg
6
265
700
2020-02-17T20:53:03Z
Dusten04
30
700
wikitext
text/x-wiki
iPad 10.2 Digitizer Connector 1 Edited
ke1f1gthpyl46rdxaq64ryjv2ggauqh
File:iPad 10.2 Home button connector Edited.jpg
6
269
704
2020-02-17T20:55:36Z
Dusten04
30
704
wikitext
text/x-wiki
iPad 10.2 Home button connector Edited
a71i5xz0d49tjvt5oqyddzsz6pih9xg
File:iPad 10.2 LCD Connector Edited.jpg
6
267
702
2020-02-17T20:54:18Z
Dusten04
30
702
wikitext
text/x-wiki
iPad 10.2 LCD Connector Edited
gcxltsk37ljyyf297gycnfzd1vmm1fk
File:iPad 10.2 Overall View 1 Edited.jpg
6
264
699
2020-02-17T20:52:02Z
Dusten04
30
699
wikitext
text/x-wiki
iPad 10.2 Overall View 1 Edited
hgupu0cp31llp2pfjlnfardhy99095k
File:iPad 10.2 SIM Connector Edited.jpg
6
270
705
2020-02-17T20:56:38Z
Dusten04
30
705
wikitext
text/x-wiki
iPad 10.2 SIM Connector Edited
gb7pkwpct4496zuqje7702wlyolj3t1
File:iPad 5 Charging Port Edited.jpg
6
549
1181
2020-05-05T00:45:50Z
Dusten04
30
1181
wikitext
text/x-wiki
iPad 5 Charging Port Edited
kmroj7e1imx4l08eh0d1qdnjylx5kw2
File:iPad 5 Digitizer 1 Edited.jpg
6
539
1170
2020-05-05T00:36:47Z
Dusten04
30
1170
wikitext
text/x-wiki
iPad 5 Digitizer 1 Edited
26917xls8yz748whqp4u9bbc7crxkte
File:iPad 5 Digitizer 2 Edited.jpg
6
540
1171
2020-05-05T00:37:19Z
Dusten04
30
1171
wikitext
text/x-wiki
iPad 5 Digitizer 2 Edited
hebqcv4rmwqvyne00rhib992470kbai
File:iPad 5 Front Camera Edited.jpg
6
546
1177
2020-05-05T00:40:52Z
Dusten04
30
1177
wikitext
text/x-wiki
iPad 5 Front Camera Edited
n4dsgcrrjrfd188itlnxrb93mp1dcmb
File:iPad 5 Headphone Jack Edited.jpg
6
547
1178
2020-05-05T00:41:34Z
Dusten04
30
1178
wikitext
text/x-wiki
iPad 5 Headphone Jack Edited
eiztfe66nhgdyi9thkvv6k6cmkfm7o0
File:iPad 5 Home Button Edited.jpg
6
542
1173
2020-05-05T00:38:17Z
Dusten04
30
1173
wikitext
text/x-wiki
iPad 5 Home Button Edited
fc7assyhotzo5z0wqclq5hi87mxx7ft
File:iPad 5 LCD Edited.jpg
6
543
1174
2020-05-05T00:38:52Z
Dusten04
30
1174
wikitext
text/x-wiki
iPad 5 LCD Edited
h60w3nmrxdfxo0v1ka2pdablvaci23r
File:iPad 5 Mic Edited.jpg
6
548
1179
2020-05-05T00:42:15Z
Dusten04
30
1179
wikitext
text/x-wiki
iPad 5 Mic Edited
ffdzcx86v76rlmc3o9g5ay9vkfhm4uh
File:iPad 5 Overall View Edited.jpg
6
538
1169
2020-05-05T00:36:17Z
Dusten04
30
1169
wikitext
text/x-wiki
iPad 5 Overall View Edited
1abceam2q1d6hm5yj1etq2wg8qnd41i
File:iPad 5 Power Button edited.jpg
6
544
1175
2020-05-05T00:39:30Z
Dusten04
30
1175
wikitext
text/x-wiki
iPad 5 Power Button edited
h16wucnq7zqlwqp97mjgmt7o9gy8sy3
File:iPad 5 Rear Camera Edited.jpg
6
545
1176
2020-05-05T00:40:24Z
Dusten04
30
1176
wikitext
text/x-wiki
iPad 5 Rear Camera Edited
gqhvw9u2epakx6nt3s3vvx0kpgtn0bq
File:iPad 5 SIM.jpg
6
541
1172
2020-05-05T00:37:51Z
Dusten04
30
1172
wikitext
text/x-wiki
iPad 5 SIM
4j25fnk7glduqsqr35jbylnjy56y6ny
File:iPad 6 Connector 2 Edited.jpg
6
157
454
2020-02-01T02:11:48Z
Dusten04
30
454
wikitext
text/x-wiki
iPad 6 Connector 2
4hy0ty764u9l39uv9q1xq2d4mrgi5ft
File:iPad Air 3 Final DM.jpg
6
704
1466
2020-07-22T12:10:17Z
Dusten04
30
1466
wikitext
text/x-wiki
iPad Air 3 Final DM
kngvmykpot8jxaxyz26zaozyo6kilfs
File:iPad Air 3 Final FPC 1 and 2.jpg
6
703
1465
2020-07-22T12:09:43Z
Dusten04
30
1465
wikitext
text/x-wiki
iPad Air 3 Final FPC 1 and 2
dkpwjg62rwlt5e0aso9wd43qs3ag99z
File:iPad Air 3 Front Camera.jpg
6
1347
2966
2020-10-05T13:38:28Z
Dusten04
30
2966
wikitext
text/x-wiki
iPad Air 3 Front Camera
shykdlv6q6xqh8z7rzrcrsv1nbw8s43
File:iPad Air 3 Headphone Jack.jpg
6
1346
2965
2020-10-05T13:37:52Z
Dusten04
30
2965
wikitext
text/x-wiki
iPad Air 3 Headphone Jack
diiu3ek71ok2ck785jtyerpm71lrhfy
File:iPad Air 3 Power Button.jpg
6
1348
2967
2020-10-05T13:39:17Z
Dusten04
30
2967
wikitext
text/x-wiki
iPad Air 3 Power Button
f6hfmy1p27pz4rjozfsjhltfi1u5w9h
File:iPad Air 3 Top Mic.jpg
6
1349
2968
2020-10-05T13:39:50Z
Dusten04
30
2968
wikitext
text/x-wiki
iPad Air 3 Top Mic
qu8rmf4vbaayrh7csm5gikcze9uhczs
File:iPad Air Flex Cables.jpg
6
768
1638
2020-09-12T02:19:33Z
Joesipaq
20
1638
wikitext
text/x-wiki
iPad Air original flex cables
ipcma888p6de4vng6abcokf7ykzq4ex
File:iPad Air Homebutton.jpg
6
767
1637
2020-09-12T02:18:34Z
Joesipaq
20
1637
wikitext
text/x-wiki
iPad Air homebutton Original
ohqeqbgo3a6rfc98eiaht4x36std443
File:iPad Air digi Alignment.jpg
6
769
1639
2020-09-12T02:20:33Z
Joesipaq
20
1639
wikitext
text/x-wiki
Alignment marks on iPad Air original digitizer
2s0l08x4t18qsuih2j19qh9c8wkme2t
File:iPad Air silk screening.jpg
6
770
1640
2020-09-12T02:21:19Z
Joesipaq
20
1640
wikitext
text/x-wiki
iPad Air original silk screening
h3mnff0wvnh7uwlsvrb0uturj2oqqxa
File:iPad Mini 4 Battery Edited.jpg
6
567
1204
2020-05-07T00:12:22Z
Dusten04
30
1204
wikitext
text/x-wiki
iPad Mini 4 Battery Edited
7611gb5n7n7izsmmznfwnjkzq4ecix6
File:iPad Mini 4 Digi Edited.jpg
6
566
1203
2020-05-07T00:10:16Z
Dusten04
30
1203
wikitext
text/x-wiki
iPad Mini 4 Digi Edited
egagzxwuhy6qfzt1lhfdnf410gs0zp0
File:iPad Mini 4 Front Camera Edited.jpg
6
571
1208
2020-05-07T00:16:44Z
Dusten04
30
1208
wikitext
text/x-wiki
iPad Mini 4 Front Camera Edited
n6zattistgvywef2v0v1nm25egff845
File:iPad Mini 4 Headphone Jack Edited.jpg
6
572
1209
2020-05-07T00:18:39Z
Dusten04
30
1209
wikitext
text/x-wiki
iPad Mini 4 Headphone Jack Edited
5dnni16ac5pahib4mghvly21gxvjj66
File:iPad Mini 4 LCD Edited.jpg
6
565
1202
2020-05-07T00:08:53Z
Dusten04
30
1202
wikitext
text/x-wiki
iPad Mini 4 LCD Edited
b5kjrckessmgp70e2qfds93tudx55ww
File:iPad Mini 4 Overall View Edited.jpg
6
564
1201
2020-05-07T00:05:19Z
Dusten04
30
1201
wikitext
text/x-wiki
iPad Mini 4 Overall View Edited
n6fr2bjrjzlhbju0c8leiokbuieuwvz
File:iPad Mini 4 Power Button Edited.jpg
6
570
1207
2020-05-07T00:15:07Z
Dusten04
30
1207
wikitext
text/x-wiki
iPad Mini 4 Power Button Edited
hsfs9j1ddz14hwijsc1kns1b05dyett
File:iPad Mini 4 Volume Mic Edited.jpg
6
568
1205
2020-05-07T00:12:50Z
Dusten04
30
1205
wikitext
text/x-wiki
iPad Mini 4 Volume Mic Edited
9dmgykhrfv3hzv7hv4djkzh98527tzo
File:iPad Mini 5 4G Antenna Edited.jpg
6
1832
5431
2021-01-05T02:27:47Z
Dusten04
30
5431
wikitext
text/x-wiki
iPad Mini 5 4G Antenna Edited
skbh2h70no2szkow243itl2cjmxmzel
File:iPad Mini 5 Battery Connector.jpg
6
1831
5430
2021-01-05T02:26:58Z
Dusten04
30
5430
wikitext
text/x-wiki
iPad Mini 5 Battery Connector
qoreqzy395h2dt5dk7bu1hjccx68vj9
File:iPad Mini 5 Charging Port Edited.jpg
6
1833
5432
2021-01-05T02:28:18Z
Dusten04
30
5432
wikitext
text/x-wiki
iPad Mini 5 Charging Port Edited
8jl6uez7zlwx6m4vzx453sow9lhmflg
File:iPad Mini 5 Connector 2 Edited.jpg
6
1829
5428
2021-01-05T02:25:55Z
Dusten04
30
5428
wikitext
text/x-wiki
iPad Mini 5 Connector 2 Edited
s79baf2dxtg8xrl0h1bj58uhgidiwu7
File:iPad Mini 5 Connector 3 Edited.jpg
6
1830
5429
2021-01-05T02:26:28Z
Dusten04
30
5429
wikitext
text/x-wiki
iPad Mini 5 Connector 3 Edited
11z4pndtthf1f5y0dhvo0xr4vw405dt
File:iPad Mini 5 Front Camera Edited.jpg
6
1834
5433
2021-01-05T02:28:54Z
Dusten04
30
5433
wikitext
text/x-wiki
iPad Mini 5 Front Camera Edited
m4uaxn8b4h179ywpfbnocngg3zg9rr8
File:iPad Mini 5 Front Mic Edited.jpg
6
1835
5434
2021-01-05T02:29:43Z
Dusten04
30
5434
wikitext
text/x-wiki
iPad Mini 5 Front Mic Edited
gbhvvcha875l7d2mgr5beckgvgqe8kj
File:iPad Mini 5 Headphone Jack Edited.jpg
6
1836
5435
2021-01-05T02:31:40Z
Dusten04
30
5435
wikitext
text/x-wiki
iPad Mini 5 Headphone Jack Edited
5jp1pf02szsfndc38w6vb7ebs5jhxdz
File:iPad Mini 5 Overall Edited.jpg
6
1827
5426
2021-01-05T02:24:22Z
Dusten04
30
5426
wikitext
text/x-wiki
iPad Mini 5 Overall Edited
johh1tr6a1mekr3eo6kbhc4us14u0yi
File:iPad Mini 5 Power Button Edited.jpg
6
1837
5436
2021-01-05T02:32:37Z
Dusten04
30
5436
wikitext
text/x-wiki
iPad Mini 5 Power Button Edited
5xl9cfp9jrk86mrcdcrbkt9mxqzkry5
File:iPad Mini 5 Rear Camera Edited.jpg
6
1838
5437
2021-01-05T02:33:12Z
Dusten04
30
5437
wikitext
text/x-wiki
iPad Mini 5 Rear Camera Edited
f9kks47bif07jl0igmmjs4qbi9u5hwx
File:iPad Mini Rear Camera Edited.jpg
6
569
1206
2020-05-07T00:13:17Z
Dusten04
30
1206
wikitext
text/x-wiki
iPad Mini Rear Camera Edited
1v2nw2hfyptkfedojxb56mf2rd7s3w6
File:iPad Pro105 Connector 1 Edited.jpg
6
160
469
2020-02-01T02:54:37Z
Dusten04
30
469
wikitext
text/x-wiki
iPad Pro 10.5 Connector 1
cuufigoniu6298z62j99030sf5a6yxl
File:iPad Pro105 Connector 2 Edited.jpg
6
161
470
2020-02-01T02:56:27Z
Dusten04
30
470
wikitext
text/x-wiki
iPad Pro 10.5 Connector 2
d5yrq8q7h1tujyyt6xtyzeeclmrx8u6
File:iPad Pro105 Connector 3 Edited.jpg
6
162
471
2020-02-01T02:57:42Z
Dusten04
30
471
wikitext
text/x-wiki
iPad Pro 10.5 Connector 3
dkqb79e6qjoo1jb1k5jcfq810xew0to
File:iPad Pro105 Connector 4 Edited.jpg
6
163
472
2020-02-01T02:58:59Z
Dusten04
30
472
wikitext
text/x-wiki
iPad Pro 10.5 Connector 4
id93l93vs7gkgwp3np6tmqxz7ih5ol2
File:iPad Pro 105 Charging Port Edited.jpg
6
577
1217
2020-05-09T15:25:59Z
Dusten04
30
1217
wikitext
text/x-wiki
iPad Pro 105 Charging Port Edited
rd7ib9se17ut55eln1vhj3w74gkwtf0
File:iPad Pro 11" 3rd Gen WiFi.jpg
6
128
357
2019-12-19T16:00:41Z
Matty
22
357
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi
beypviij5etu4kbsg9wqs8a2qrqrrdk
File:iPad Pro 11" 3rd Gen WiFi Logic Board (Fulll).jpg
6
132
362
2019-12-19T16:14:26Z
Matty
22
362
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi Logic Board (Fulll)
asoidb7p13h9gcqk59wbptgmini4si4
File:iPad Pro 11" 3rd Gen WiFi Logic Board (Screen Connectors).jpg
6
133
363
2019-12-19T16:16:04Z
Matty
22
363
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi Logic Board (Screen Connectors)
iu0e0uourtao5ragwikzclf0o5znckp
File:iPad Pro 11" 3rd Gen WiFi Logic Board (Top, Speaker Section).jpg
6
134
364
2019-12-19T16:17:43Z
Matty
22
364
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi Logic Board (Top, Speaker Section)
852sm7cikzxv7x3aclf41dq2t9y6ufo
File:iPad Pro 11" 3rd Gen WiFi Screen (Camera & IR Sensors).jpg
6
130
359
2019-12-19T16:06:09Z
Matty
22
359
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi (Camera & IR Sensors)
am6bvspwfbwk48bn6ojjvtbw48udyqt
File:iPad Pro 11" 3rd Gen WiFi Screen Cables.jpg
6
129
358
2019-12-19T16:02:35Z
Matty
22
358
wikitext
text/x-wiki
iPad Pro 11" 3rd Gen WiFi Screen Cables
9z79mi2d9lnr78zt38douo5jlodjw9p
File:iPad Pro 11 Board Only.jpg
6
2159
6482
2022-04-19T18:39:08Z
Dusten04
30
6482
wikitext
text/x-wiki
iPad Pro 11 Board Only
bqr7vip98t1jvpzboq2n9py443926ij
File:iPad Pro 11 Display on offreal.jpg
6
2155
6478
2022-04-19T18:24:30Z
Dusten04
30
6478
wikitext
text/x-wiki
iPad Turned on, showing display turned on and off
obqm93nya68ezfhtsa0kkmyizu20m5x
File:iPad Pro 11 Drained Battery.jpg
6
2156
6479
2022-04-19T18:27:53Z
Dusten04
30
6479
wikitext
text/x-wiki
iPad Pro 11 Drained Battery
oet5vnwylg54r2yjrty6f78p1whkubt
File:iPad Pro 11 FPC 10 Edited.jpg
6
507
1118
2020-04-23T23:36:44Z
Dusten04
30
1118
wikitext
text/x-wiki
iPad Pro 11 FPC 10 Edited
s580rkbvfdqzc1mkzuk9cqo4djan9of
File:iPad Pro 11 FPC 11 Edited.jpg
6
508
1119
2020-04-23T23:37:15Z
Dusten04
30
1119
wikitext
text/x-wiki
iPad Pro 11 FPC 11 Edited
791vtwwvk42r5o0mgw03ubhroqxd4h4
File:iPad Pro 11 FPC 12 Edited.jpg
6
509
1120
2020-04-23T23:37:46Z
Dusten04
30
1120
wikitext
text/x-wiki
iPad Pro 11 FPC 12 Edited
76etk38wijybgw9fgx36jgqb5ribwmq
File:iPad Pro 11 FPC 13 Edited.jpg
6
510
1121
2020-04-23T23:38:22Z
Dusten04
30
1121
wikitext
text/x-wiki
iPad Pro 11 FPC 13 Edited
qtsu6x7qaeuiqafii7jd8p5o5fnnf54
File:iPad Pro 11 FPC 14 Edited.jpg
6
511
1122
2020-04-23T23:38:53Z
Dusten04
30
1122
wikitext
text/x-wiki
iPad Pro 11 FPC 14 Edited
ejg0z3b3klira9ad83tyoczemliayjf
File:iPad Pro 11 FPC 1 Edited.jpg
6
498
1109
2020-04-23T23:30:40Z
Dusten04
30
1109
wikitext
text/x-wiki
iPad Pro 11 FPC 1 Edited
tcf90aam7jpr1c8okkn8nejbfdluwvd
File:iPad Pro 11 FPC 2 Edited.jpg
6
499
1110
2020-04-23T23:31:32Z
Dusten04
30
1110
wikitext
text/x-wiki
iPad Pro 11 FPC 2 Edited
kdztq88jxxown2u79agqscwn36z95vb
File:iPad Pro 11 FPC 3 Edited.jpg
6
500
1111
2020-04-23T23:32:06Z
Dusten04
30
1111
wikitext
text/x-wiki
iPad Pro 11 FPC 3 Edited
ewtp3p17bdvsc049i9871wzeup2wzsu
File:iPad Pro 11 FPC 4 Edited.jpg
6
501
1112
2020-04-23T23:32:44Z
Dusten04
30
1112
wikitext
text/x-wiki
iPad Pro 11 FPC 4 Edited
lyhz5bvmwi8nogrwhrv6py5pj45ftr8
File:iPad Pro 11 FPC 5 Edited.jpg
6
502
1113
2020-04-23T23:33:39Z
Dusten04
30
1113
wikitext
text/x-wiki
iPad Pro 11 FPC 5 Edited
trvntgkagnw0gi8w6kxzhb4rmmvpjob
File:iPad Pro 11 FPC 6 Edited.jpg
6
503
1114
2020-04-23T23:34:18Z
Dusten04
30
1114
wikitext
text/x-wiki
iPad Pro 11 FPC 6 Edited
9yeh5jm41lnolvhm3npie7kzaty4tw3
File:iPad Pro 11 FPC 7 Edited.jpg
6
504
1115
2020-04-23T23:34:59Z
Dusten04
30
1115
wikitext
text/x-wiki
iPad Pro 11 FPC 7 Edited
gb3v5r1pxtxhlc8no51topmwzbodqgg
File:iPad Pro 11 FPC 8 Edited.jpg
6
505
1116
2020-04-23T23:35:37Z
Dusten04
30
1116
wikitext
text/x-wiki
iPad Pro 11 FPC 8 Edited
hntjapueejzic3gk0xd3yld9yrmt6fx
File:iPad Pro 11 FPC 9 Edited.jpg
6
506
1117
2020-04-23T23:36:11Z
Dusten04
30
1117
wikitext
text/x-wiki
iPad Pro 11 FPC 9 Edited
0d7gqsisteaf9dcecatp24ql003p1ok
File:iPad Pro 11 Overall View Edited.jpg
6
497
1108
2020-04-23T23:29:42Z
Dusten04
30
1108
wikitext
text/x-wiki
iPad Pro 11 Overall View Edited
jhtsfv4odlktg3xfgv0lutfm6pc3ubm
File:iPad Pro 12.9 1stG Backlight.jpg
6
462
1048
2020-04-15T00:24:01Z
Dusten04
30
1048
wikitext
text/x-wiki
iPad Pro 12.9 1stG Backlight
muqyrchz1m2u7wvp2c3r4mmxoc0zr5m
File:iPad Pro 12.9 1st Gen Connector 1.jpg
6
215
628
2020-02-03T23:12:21Z
Dusten04
30
628
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 1
pnzq8jjgr5c71nnauylv4ix04onlb8e
File:iPad Pro 12.9 1st Gen Connector 2.jpg
6
216
629
2020-02-03T23:13:13Z
Dusten04
30
629
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 2
fe079fx035c502h11f4udi20ndyrvh2
File:iPad Pro 12.9 1st Gen Connector 3.jpg
6
217
630
2020-02-03T23:13:48Z
Dusten04
30
630
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 3
6xo1w5o9p1k99agzy5zl1awvwq6gojx
File:iPad Pro 12.9 1st Gen Connector 4.jpg
6
218
631
2020-02-03T23:14:45Z
Dusten04
30
631
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 4
f7hibkkyf8vo7fr8zwpr7mn964j5tzf
File:iPad Pro 12.9 1st Gen Connector 5.jpg
6
219
632
2020-02-03T23:15:48Z
Dusten04
30
632
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 5
az5ehpqo48qbec661cqq0x8yxgq9qg7
File:iPad Pro 12.9 1st Gen Connector 6.jpg
6
220
633
2020-02-03T23:16:32Z
Dusten04
30
633
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 6
jk4i81691wslnsd1yhx8rw0p2ab9nya
File:iPad Pro 12.9 1st Gen Connector 7.jpg
6
221
634
2020-02-03T23:17:13Z
Dusten04
30
634
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 7
qfig1x11460lo8j6ssn4nafd9cqcl4n
File:iPad Pro 12.9 1st Gen Connector 8.jpg
6
222
635
2020-02-03T23:17:51Z
Dusten04
30
635
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Connector 8
sj470lzmozfu1guvfcuv3vmjqixaop0
File:iPad Pro 12.9 1st Gen Overall 1.jpg
6
213
626
2020-02-03T23:10:46Z
Dusten04
30
626
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Overall 1
l0voe8hxuc67hwvy6e50x8ky6fgprby
File:iPad Pro 12.9 1st Gen Overall 2.jpg
6
214
627
2020-02-03T23:11:40Z
Dusten04
30
627
wikitext
text/x-wiki
iPad Pro 12.9 1st Gen Overall 2
liz6i3qp6f4t8k3cuh9wfsn30jplj9f
File:iPad Pro 12.9 2nd Gen Connector 1 Edited.jpg
6
259
690
2020-02-12T15:20:30Z
Dusten04
30
690
wikitext
text/x-wiki
iPad Pro 12.9 2nd Gen Connector 1 Edited
2tmcwpc05eeuq2p3bejawq8m7hqt9ik
File:iPad Pro 12.9 2nd Gen Connector 2 .jpg
6
260
691
2020-02-12T15:25:25Z
Dusten04
30
691
wikitext
text/x-wiki
iPad Pro 12.9 2nd Gen Connector 2
915p27wehtpmz8ldnwsh7gme1cas56t
File:iPad Pro 12.9 3rd Gen Connector 3.jpg
6
169
479
2020-02-01T03:13:26Z
Dusten04
30
479
wikitext
text/x-wiki
iPad Pro 12.9 3rd Gen Connector 3
hpew1og2xfr6upsb9pczjfe9n2eyhlh
File:iPad Pro 12.9 3rd Gen Connector 4.jpg
6
170
480
2020-02-01T03:14:06Z
Dusten04
30
480
wikitext
text/x-wiki
iPad Pro 12.9 3rd Gen Connector 4
5ue01uj1ihql5xcydbc57yw7mycb9bv
File:iPad Pro 1293 Connector 1 Water.jpg
6
166
476
2020-02-01T03:08:11Z
Dusten04
30
476
wikitext
text/x-wiki
iPad Pro 12.9 3rd Gen Connector 1
svddqrdklm63iry6a8itige5zbgxi8r
File:iPad Pro 1293 Connector 2 Water-2.jpg
6
168
478
2020-02-01T03:12:50Z
Dusten04
30
478
wikitext
text/x-wiki
iPad Pro 12.9 3rd Gen Connector 2
1ljr8u1p3prgr43es5csqcw4yvxgg8k
File:iPad Pro 1293 Overall.jpg
6
165
475
2020-02-01T03:06:38Z
Dusten04
30
475
wikitext
text/x-wiki
iPad Pro 12.9 3rd Gen Overall View
njau2tlauelhho7cu3g0htsqsvxd76k
File:iPad Pro 129 1stG Tristar.jpg
6
463
1049
2020-04-15T00:24:46Z
Dusten04
30
1049
wikitext
text/x-wiki
iPad Pro 129 1stG Tristar
3ikhc5e4k6id7q5o6ufn7612ksxridz
File:iPad Pro 129 4th Gen C10 Edited.jpg
6
1850
5455
2021-01-06T04:48:07Z
Dusten04
30
5455
wikitext
text/x-wiki
iPad Pro 129 4th Gen C10 Edited
drd41yfg5fwkxhngxmw2cprujdzg1vo
File:iPad Pro 129 4th Gen C11 Edited.jpg
6
1851
5456
2021-01-06T04:48:31Z
Dusten04
30
5456
wikitext
text/x-wiki
iPad Pro 129 4th Gen C11 Edited
fwydqjyxqj4oz0odlktakn6noj110g0
File:iPad Pro 129 4th Gen C12 Edited.jpg
6
1852
5457
2021-01-06T04:48:54Z
Dusten04
30
5457
wikitext
text/x-wiki
iPad Pro 129 4th Gen C12 Edited
6um8hw1wjh20o7hb1phhx8gp996k2sh
File:iPad Pro 129 4th Gen C13 Edited.jpg
6
1853
5458
2021-01-06T04:49:18Z
Dusten04
30
5458
wikitext
text/x-wiki
iPad Pro 129 4th Gen C13 Edited
cqh4ntvr8jm4mxalrxy4xr5i4w7a5z8
File:iPad Pro 129 4th Gen C14 Edited.jpg
6
1854
5459
2021-01-06T04:49:44Z
Dusten04
30
5459
wikitext
text/x-wiki
iPad Pro 129 4th Gen C14 Edited
o1vergewt1xslat90oiqjjt5yoky7jr
File:iPad Pro 129 4th Gen C15 Edited.jpg
6
1855
5460
2021-01-06T04:50:20Z
Dusten04
30
5460
wikitext
text/x-wiki
iPad Pro 129 4th Gen C15 Edited
5sta54wt06pf15jc9z0s6egxn9sjvhx
File:iPad Pro 129 4th Gen C16 Edited.jpg
6
1856
5461
2021-01-06T04:50:46Z
Dusten04
30
5461
wikitext
text/x-wiki
iPad Pro 129 4th Gen C16 Edited
4nvr9isx208pkv4xi9zx8hlv7r8opdl
File:iPad Pro 129 4th Gen C17 Edited.jpg
6
1857
5462
2021-01-06T04:51:09Z
Dusten04
30
5462
wikitext
text/x-wiki
iPad Pro 129 4th Gen C17 Edited
rem2bft8ycgauk6hspbve0wo5qshu4k
File:iPad Pro 129 4th Gen C18 Edited.jpg
6
1858
5463
2021-01-06T04:51:33Z
Dusten04
30
5463
wikitext
text/x-wiki
iPad Pro 129 4th Gen C18 Edited
4z1yyx9gfaywqmsmk7r4tes0iip58er
File:iPad Pro 129 4th Gen C1 Edited.jpg
6
1841
5446
2021-01-06T04:42:54Z
Dusten04
30
5446
wikitext
text/x-wiki
iPad Pro 129 4th Gen C1 Edited
b08z8g8374dshed1a6thscoxuca9umo
File:iPad Pro 129 4th Gen C2 Edited.jpg
6
1842
5447
2021-01-06T04:43:16Z
Dusten04
30
5447
wikitext
text/x-wiki
iPad Pro 129 4th Gen C2 Edited
a4wcfdvpwkez7qmv1aahexdk5p14qo4
File:iPad Pro 129 4th Gen C3 Edited.jpg
6
1843
5448
2021-01-06T04:43:48Z
Dusten04
30
5448
wikitext
text/x-wiki
iPad Pro 129 4th Gen C3 Edited
irf53swqhkiabjigb0qqqbzceaf86dn
File:iPad Pro 129 4th Gen C4 Edited.jpg
6
1844
5449
2021-01-06T04:44:11Z
Dusten04
30
5449
wikitext
text/x-wiki
iPad Pro 129 4th Gen C4 Edited
1wm1q7hpn44rb0rjpsv3mpc9am54gg3
File:iPad Pro 129 4th Gen C5 Edited.jpg
6
1845
5450
2021-01-06T04:44:35Z
Dusten04
30
5450
wikitext
text/x-wiki
iPad Pro 129 4th Gen C5 Edited
scd3jdvp76l1zc9bnjiax2x2kv11a0x
File:iPad Pro 129 4th Gen C6 Edited.jpg
6
1846
5451
2021-01-06T04:45:57Z
Dusten04
30
5451
wikitext
text/x-wiki
iPad Pro 129 4th Gen C6 Edited
tap4ff4gicor7mml8ddgwo2lytaw70n
File:iPad Pro 129 4th Gen C7 Edited.jpg
6
1847
5452
2021-01-06T04:46:24Z
Dusten04
30
5452
wikitext
text/x-wiki
iPad Pro 129 4th Gen C7 Edited
i3k6l6wmzg07xuqqx1xfctjlcj66b0w
File:iPad Pro 129 4th Gen C8 Edited.jpg
6
1848
5453
2021-01-06T04:46:47Z
Dusten04
30
5453
wikitext
text/x-wiki
iPad Pro 129 4th Gen C8 Edited
2kgyhmtsc4sg0ap6fx6pam1o48fk1ix
File:iPad Pro 129 4th Gen C9 Edited.jpg
6
1849
5454
2021-01-06T04:47:23Z
Dusten04
30
5454
wikitext
text/x-wiki
iPad Pro 129 4th Gen C9 Edited
sgcyab6oerixwthh3gkwdptemqvbepl
File:iPad Pro 129 4th Gen Charging Port Edited.jpg
6
1840
5445
2021-01-06T04:42:25Z
Dusten04
30
5445
wikitext
text/x-wiki
iPad Pro 129 4th Gen Charging Port Edited
trijlf10x3n9855pete2n5mesv4hr0m
File:iPad Pro 129 4th Overall View Edited.jpg
6
1839
5444
2021-01-06T04:41:56Z
Dusten04
30
5444
wikitext
text/x-wiki
iPad Pro 129 4th Overall View Edited
makjgargwo587wsvu6k6trw09ebr8i0
File:iPad WiFi Chip List.png
6
591
1234
2020-05-10T20:16:02Z
PRT Group
137
1234
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:iPad mini 5 Connector 1 Edited.jpg
6
1828
5427
2021-01-05T02:25:19Z
Dusten04
30
5427
wikitext
text/x-wiki
iPad mini 5 Connector 1 Edited
8wo5fdkkqhbcktgq9460jdgyaakqulr
File:iPhone 11 Connector 1.jpg
6
173
484
2020-02-01T03:20:24Z
Dusten04
30
484
wikitext
text/x-wiki
iPhone 11 Connector 1
lck2jp1k1ecz8ebtjkmm4njl5uvp47m
File:iPhone 11 Connector 10.jpg
6
183
507
505
2020-02-01T06:41:09Z
Chrisb
1
Chrisb moved page [[File:iPhone 11 Connector 10 REAL.jpg]] to [[File:iPhone 11 Connector 10.jpg]]
495
wikitext
text/x-wiki
iPhone 11 Connector 10 REAL
kllc70skptqoxor792x8mjhzw3wrd3g
File:iPhone 11 Connector 10 REAL.jpg
6
188
508
2020-02-01T06:41:09Z
Chrisb
1
Chrisb moved page [[File:iPhone 11 Connector 10 REAL.jpg]] to [[File:iPhone 11 Connector 10.jpg]]
508
wikitext
text/x-wiki
#REDIRECT [[File:iPhone 11 Connector 10.jpg]]
hzucn7ytkxxbpdmff59nq0hr0z3uzer
File:iPhone 11 Connector 11.jpg
6
182
506
494
2020-02-01T06:40:53Z
Chrisb
1
Chrisb moved page [[File:iPhone 11 Connector 10.jpg]] to [[File:iPhone 11 Connector 11.jpg]] without leaving a redirect
494
wikitext
text/x-wiki
iPhone 11 Connector 10
2qrjh6vtuzl1l81g372jcciydeu9eyd
File:iPhone 11 Connector 12.jpg
6
184
496
2020-02-01T03:29:12Z
Dusten04
30
496
wikitext
text/x-wiki
iPhone 11 Connector 12
78vmsgyaso2e4ox43af43ycfn80ho2f
File:iPhone 11 Connector 13.jpg
6
185
497
2020-02-01T03:29:59Z
Dusten04
30
497
wikitext
text/x-wiki
iPhone 11 Connector 13
aoypztn5voxa8fi72q4ur1mlva9xoz8
File:iPhone 11 Connector 14.jpg
6
186
498
2020-02-01T03:30:40Z
Dusten04
30
498
wikitext
text/x-wiki
iPhone 11 Connector 14
lg4e8zlarepg8wqlu13yxwvy4sur70f
File:iPhone 11 Connector 15.jpg
6
187
499
2020-02-01T03:31:22Z
Dusten04
30
499
wikitext
text/x-wiki
iPhone 11 Connector 15
kc9d0qlf55i2nqw10famd1rc2kloujr
File:iPhone 11 Connector 2.jpg
6
174
485
2020-02-01T03:21:09Z
Dusten04
30
485
wikitext
text/x-wiki
iPhone 11 Connector 2
ph9zhgrdfobigbx9l23e3wjt8f72h7p
File:iPhone 11 Connector 3.jpg
6
175
486
2020-02-01T03:21:47Z
Dusten04
30
486
wikitext
text/x-wiki
iPhone 11 Connector 3
j9029p36umac13vyzi8869fso34fsfb
File:iPhone 11 Connector 4.jpg
6
176
488
2020-02-01T03:22:35Z
Dusten04
30
488
wikitext
text/x-wiki
iPhone 11 Connector 4
7pr3x2fal85k0k8wlz5gyjyfeprm44x
File:iPhone 11 Connector 5.jpg
6
177
489
2020-02-01T03:23:24Z
Dusten04
30
489
wikitext
text/x-wiki
iPhone 11 Connector 5
sm7zx4p99bjz1ag4qlg6jjid8zm8ofr
File:iPhone 11 Connector 6.jpg
6
178
490
2020-02-01T03:23:55Z
Dusten04
30
490
wikitext
text/x-wiki
iPhone 11 Connector 6
s20p4sqhtgjuad01j1zrj3c9oo6p5gn
File:iPhone 11 Connector 7.jpg
6
179
491
2020-02-01T03:24:35Z
Dusten04
30
491
wikitext
text/x-wiki
iPhone 11 Connector 7
atelhp0sag0hf8y44sajfz2srcen7ju
File:iPhone 11 Connector 8.jpg
6
180
492
2020-02-01T03:25:23Z
Dusten04
30
492
wikitext
text/x-wiki
iPhone 11 Connector 8
o7g7iqfuj7w1axjhzmoms32sb6wg6v6
File:iPhone 11 Connector 9.jpg
6
181
493
2020-02-01T03:25:55Z
Dusten04
30
493
wikitext
text/x-wiki
iPhone 11 Connector 9
hw151l1mzfn793lgw1qu24pd6pzbg2f
File:iPhone 11 Overall View 1.jpg
6
171
482
2020-02-01T03:17:41Z
Dusten04
30
482
wikitext
text/x-wiki
iPhone 11 Overall View 1
eir9wcj2vnn0v0ap6in0oq8g5zdpxgi
File:iPhone 11 Overall View 2.jpg
6
172
483
2020-02-01T03:18:46Z
Dusten04
30
483
wikitext
text/x-wiki
iPhone 11 Overall View 2
trc7k9v7w4dprahukyaoes69xv0tt1k
File:iPhone 11 Pro FPC 10 Final.jpg
6
320
788
2020-03-04T22:35:21Z
Dusten04
30
788
wikitext
text/x-wiki
iPhone 11 Pro FPC 10 Final
38fy6z2aaivgnq1pahpsk9iqfg7oa7h
File:iPhone 11 Pro FPC 11 Final.jpg
6
321
789
2020-03-04T22:36:05Z
Dusten04
30
789
wikitext
text/x-wiki
iPhone 11 Pro FPC 11 Final
jffgd4tl0aar53555l2hj58qqmw6ihs
File:iPhone 11 Pro FPC 12 Final.jpg
6
322
790
2020-03-04T22:36:38Z
Dusten04
30
790
wikitext
text/x-wiki
iPhone 11 Pro FPC 12 Final
fm7132c4n15x6ged0tc054dvyj1tgpx
File:iPhone 11 Pro FPC 13 Final.jpg
6
323
791
2020-03-04T22:37:04Z
Dusten04
30
791
wikitext
text/x-wiki
iPhone 11 Pro FPC 13 Final
o5sfu1clb00mcfu1wedw9wq5cq8t6s6
File:iPhone 11 Pro FPC 14 Final.jpg
6
324
792
2020-03-04T22:37:32Z
Dusten04
30
792
wikitext
text/x-wiki
iPhone 11 Pro FPC 14 Final
cd5xcct647ln9h1rqgn8arq0miaid3q
File:iPhone 11 Pro FPC 1 Final.jpg
6
311
779
2020-03-04T22:31:03Z
Dusten04
30
779
wikitext
text/x-wiki
iPhone 11 Pro FPC 1 Final
qg9x5pkowlmwwvgyuoyvhmdn3jwbqfo
File:iPhone 11 Pro FPC 2 Final.jpg
6
312
780
2020-03-04T22:31:33Z
Dusten04
30
780
wikitext
text/x-wiki
iPhone 11 Pro FPC 2 Final
gnd5skh6n2eimlspgkgn0c4m8skipxp
File:iPhone 11 Pro FPC 3 Final.jpg
6
313
781
2020-03-04T22:32:04Z
Dusten04
30
781
wikitext
text/x-wiki
iPhone 11 Pro FPC 3 Final
1pu544ulq06ly7s6qcl6b86bu8wp3nw
File:iPhone 11 Pro FPC 4 Final.jpg
6
314
782
2020-03-04T22:32:32Z
Dusten04
30
782
wikitext
text/x-wiki
iPhone 11 Pro FPC 4 Final
d2is2abfg5owsakeon6y4s0bnfvhfre
File:iPhone 11 Pro FPC 5 Final.jpg
6
315
783
2020-03-04T22:33:05Z
Dusten04
30
783
wikitext
text/x-wiki
iPhone 11 Pro FPC 5 Final
04x2tgcbfsc1upatf0uzi032nhkbjho
File:iPhone 11 Pro FPC 6 Final.jpg
6
316
784
2020-03-04T22:33:34Z
Dusten04
30
784
wikitext
text/x-wiki
iPhone 11 Pro FPC 6 Final
i4tcnmfn177stu3ybmpqar8alkkk0fo
File:iPhone 11 Pro FPC 7 Final.jpg
6
317
785
2020-03-04T22:34:00Z
Dusten04
30
785
wikitext
text/x-wiki
iPhone 11 Pro FPC 7 Final
110aigqvmugqvxvv484b26p0urbuydo
File:iPhone 11 Pro FPC 8 Final.jpg
6
318
786
2020-03-04T22:34:26Z
Dusten04
30
786
wikitext
text/x-wiki
iPhone 11 Pro FPC 8 Final
b1j976to5j5kg7zn3oxqop5inhfejrp
File:iPhone 11 Pro FPC 9 Final.jpg
6
319
787
2020-03-04T22:34:54Z
Dusten04
30
787
wikitext
text/x-wiki
iPhone 11 Pro FPC 9 Final
nbykfuiv4wyuze5vn1t04vn392znyps
File:iPhone 11 Pro Overall 1 Final.jpg
6
309
777
2020-03-04T22:30:01Z
Dusten04
30
777
wikitext
text/x-wiki
iPhone 11 Pro Overall 1 Final
edke0eq3bslinhjaenwhhyldf7pcqjy
File:iPhone 11 Pro Overall 2 Final.jpg
6
310
778
2020-03-04T22:30:36Z
Dusten04
30
778
wikitext
text/x-wiki
iPhone 11 Pro Overall 2 Final
rq2b8ukfrtig3w6ebkm0l5ra0o8cb3s
File:iPhone 11 Smart Case 01.jpg
6
272
712
2020-02-18T21:46:17Z
Xorxfon
8
User created page with UploadWizard
712
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Back of the case.}}
|date=2020-02-18 16:56:43
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Smart Case]]
2n5l7xbgcnf1povilamzqaoaxl3kd8d
File:iPhone 11 Smart Case 02.jpg
6
274
714
2020-02-18T21:46:17Z
Xorxfon
8
User created page with UploadWizard
714
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Under the felt inside the case}}
|date=2020-02-18 16:57:35
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Smart Case]]
r2zptokoq95o4ggoulvolmf7kd1xh9e
File:iPhone 11 Smart Case 03.jpg
6
273
713
2020-02-18T21:46:17Z
Xorxfon
8
User created page with UploadWizard
713
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Without the cover}}
|date=2020-02-18 16:57:26
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Smart Case]]
a40ob6ueeun6wtpgba2yg1385az6ypn
File:iPhone 11 Smart Case 04.jpg
6
275
715
2020-02-18T21:46:19Z
Xorxfon
8
User created page with UploadWizard
715
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Close up of the battery compartment}}
|date=2020-02-18 16:58:25
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Smart Case]]
3y7pnuuaawr845xz1tjngi2w0gszgk3
File:iPhone 11 Smart Case 05.jpg
6
276
716
2020-02-18T21:46:19Z
Xorxfon
8
User created page with UploadWizard
716
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Close up of the battery charge/discharge circuit.}}
|date=2020-02-18 16:59:01
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
[[Category:Smart Case]]
og33bn20048ijn2kv5btmnmg5kf9xe7
File:iPhone 11 Smart Case 06.jpg
6
278
718
2020-02-18T22:20:51Z
Xorxfon
8
User created page with UploadWizard
718
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Top screws out}}
|date=2020-02-18 17:20:47
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
ialy8khvd0xsqqroijkf3yue3i3bejo
File:iPhone 11 Smart Case 07.jpg
6
277
717
2020-02-18T22:20:51Z
Xorxfon
8
User created page with UploadWizard
717
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Cables unplugged}}
|date=2020-02-18 17:21:25
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
hyu648l601jvxstxw6u54rdza9f2oid
File:iPhone 11 Smart Case 08.jpg
6
279
719
2020-02-18T22:20:51Z
Xorxfon
8
User created page with UploadWizard
719
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Cables unplugged 2nd angle}}
|date=2020-02-18 17:22:01
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
enoq51f0zjk3okal8rmvooyic9l2txd
File:iPhone 11 Smart Case 09.jpg
6
280
720
2020-02-18T22:20:52Z
Xorxfon
8
User created page with UploadWizard
720
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Charge/Discharge Circuit 01}}
|date=2020-02-18 17:24:03
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
pfsj7y7p70terx2mg9fbvua0th5yrtx
File:iPhone 11 Smart Case 10.jpg
6
282
722
2020-02-18T22:20:52Z
Xorxfon
8
User created page with UploadWizard
722
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Charge/Discharge Circuit 02}}
|date=2020-02-18 17:24:26
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
era8x43pakqz1vfmqw792xrecharz30
File:iPhone 11 Smart Case 11.jpg
6
281
721
2020-02-18T22:20:52Z
Xorxfon
8
User created page with UploadWizard
721
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Male lightning connector front}}
|date=2020-02-18 17:24:37
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
1nw5gyfiejbjedbvcss60mbnwddc875
File:iPhone 11 Smart Case 12.jpg
6
283
723
2020-02-18T22:20:53Z
Xorxfon
8
User created page with UploadWizard
723
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Male lightning connector back}}
|date=2020-02-18 17:24:50
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
pyt5gpslnloujaqfxbxywlmzh1mqmzn
File:iPhone 11 Smart Case 13.jpg
6
285
725
2020-02-18T22:20:53Z
Xorxfon
8
User created page with UploadWizard
725
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Charge/Discharge Circuit 03}}
|date=2020-02-18 17:35:40
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
71w89l7pw82pp3ps12181p42sxsk1tw
File:iPhone 11 Smart Case 14.jpg
6
284
724
2020-02-18T22:20:53Z
Xorxfon
8
User created page with UploadWizard
724
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Charge/Discharge Circuit 04}}
|date=2020-02-18 17:35:25
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
dvz0uf2z9o0p746jhepzktfdm5l6wi7
File:iPhone 11 Smart Case 15.jpg
6
286
726
2020-02-18T22:20:54Z
Xorxfon
8
User created page with UploadWizard
726
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=Screw pattern}}
|date=2020-02-18 17:25:45
|source={{own}}
|author=[[User:Xorxfon|Xorxfon]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
feygvp016bdgb1t4zvzwzi9asu6fdu4
File:iPhone 11 Smart Case 16.png
6
288
732
2020-02-18T23:27:29Z
Chrisb
1
User created page with UploadWizard
732
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone 11 Smart Case 16}}
|date=2020-02-18
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
g49m8yhkfrefwqepc3phuidmpu03dyz
File:iPhone 11 Smart Case 17.png
6
290
734
2020-02-18T23:27:29Z
Chrisb
1
User created page with UploadWizard
734
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone 11 Smart Case 16}}
|date=2020-02-18
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
g49m8yhkfrefwqepc3phuidmpu03dyz
File:iPhone 11 Smart Case 18.png
6
289
733
2020-02-18T23:27:29Z
Chrisb
1
User created page with UploadWizard
733
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone 11 Smart Case 16}}
|date=2020-02-18
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
g49m8yhkfrefwqepc3phuidmpu03dyz
File:iPhone 11 Smart Case 19.png
6
291
735
2020-02-18T23:27:30Z
Chrisb
1
User created page with UploadWizard
735
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone 11 Smart Case 16}}
|date=2020-02-18
|source={{own}}
|author=[[User:Chrisb|Chrisb]]
|permission=
|other versions=
}}
=={{int:license-header}}==
{{self|cc-by-sa-4.0}}
g49m8yhkfrefwqepc3phuidmpu03dyz
File:iPhone 12 Pro FPC 10.png
6
1719
5097
2020-10-23T15:04:00Z
Dusten04
30
5097
wikitext
text/x-wiki
iPhone 12 Pro FPC 10
a97mgscmudrc523j365tq103dwym40h
File:iPhone 12 Pro FPC 11.png
6
1720
5098
2020-10-23T15:04:32Z
Dusten04
30
5098
wikitext
text/x-wiki
iPhone 12 Pro FPC 11
krkahq416e2e1tdwi2s2blzig5vqtq8
File:iPhone 12 Pro FPC 12.png
6
1721
5099
2020-10-23T15:05:01Z
Dusten04
30
5099
wikitext
text/x-wiki
iPhone 12 Pro FPC 12
k6d857ruk8c6qnzwxqgu8rxd7v28alq
File:iPhone 12 Pro FPC 13 and 14.png
6
1722
5100
2020-10-23T15:06:36Z
Dusten04
30
5100
wikitext
text/x-wiki
iPhone 12 Pro FPC 13 and 14
89lfj4lfxa5xg1it4y09hvw75oknv1g
File:iPhone 12 Pro FPC 15 and 16.png
6
1723
5101
2020-10-23T15:07:35Z
Dusten04
30
5101
wikitext
text/x-wiki
iPhone 12 Pro FPC 15 and 16
5k6bz8aukwdxry8yv86epkmsljtnb07
File:iPhone 12 Pro FPC 1 and 2.png
6
1715
5093
2020-10-23T15:01:32Z
Dusten04
30
5093
wikitext
text/x-wiki
iPhone 12 Pro FPC 1 and 2
t1ytc3knt32snfr5201l90svf2w5lhg
File:iPhone 12 Pro FPC 3, 4 and 5.png
6
1716
5094
2020-10-23T15:02:19Z
Dusten04
30
5094
wikitext
text/x-wiki
iPhone 12 Pro FPC 3, 4 and 5
41tvldwx4g3j34jw2olzq8by1e0d09c
File:iPhone 12 Pro FPC 6, 7 and 8.png
6
1717
5095
2020-10-23T15:02:56Z
Dusten04
30
5095
wikitext
text/x-wiki
iPhone 12 Pro FPC 6, 7 and 8
5s0rseay7cwgm5mueq1k0fmtwf2bnv2
File:iPhone 12 Pro FPC 9.png
6
1718
5096
2020-10-23T15:03:25Z
Dusten04
30
5096
wikitext
text/x-wiki
iPhone 12 Pro FPC 9
h7dg6p4ldg47t30q0lsbrnwuxj6jg4w
File:iPhone 12 Pro Max Charging Port.webp
6
2013
5960
2021-07-28T20:06:58Z
Dusten04
30
5960
wikitext
text/x-wiki
iPhone 12 Pro Max Charging Port
mrvo6p8ainkcezk98iy4lgk5jrek8vo
File:iPhone 14 Charging Port.jpg
6
2187
6615
2022-09-16T22:57:52Z
Dusten04
30
6615
wikitext
text/x-wiki
iPhone 14 Charging Port
d4gbtjezsxd9b4shsrsx07i2zgexefa
File:iPhone 14 Pro Max Battery Connector.jpg
6
2186
6614
2022-09-16T22:56:06Z
Dusten04
30
6614
wikitext
text/x-wiki
iPhone 14 Pro Max Battery Connector
fwg4lz3xnodgxpf551phalx4h6lx8n6
File:iPhone 14 Pro Max Display Connector.jpg
6
2188
6616
2022-09-16T22:58:34Z
Dusten04
30
6616
wikitext
text/x-wiki
iPhone 14 Pro Max Display Connector
7yaw07vrh9uykw19hrzrke84cgo9tne
File:iPhone 14 Pro Max Power Button Connector.jpg
6
2189
6617
2022-09-16T22:59:14Z
Dusten04
30
6617
wikitext
text/x-wiki
iPhone 14 Pro Max Power Button Connector
f7slpp4bicmztm82rzsunlrm1pwikrs
File:iPhone 6 Click traces.jpg
6
1860
5466
2021-01-08T11:04:07Z
Satyricon
21
5466
wikitext
text/x-wiki
iPhone 6 Click traces
(via GSM hosting)
ncb3fw56t4whxzjwti0e5jneu6r64ar
File:iPhone 6 charge IC(U1401) diode readings.jpg
6
1957
5816
2021-05-14T21:59:37Z
Tim
169
5816
wikitext
text/x-wiki
iPhone 6 charge IC(U1401) diode readings
4i8lssy0bvuc6ful7ffrr5gz4eejw2m
File:iPhone 6s-6sp click wiring.jpg
6
1936
5743
2021-04-16T16:35:07Z
Joesipaq
20
5743
wikitext
text/x-wiki
iPhone 6s / 6s Plus Click traces
dwu5rnr5d4jh916g6glsc7tu1c32tbw
File:iPhone 6s Click traces.jpg
6
1859
5465
2021-01-08T11:02:25Z
Satyricon
21
5465
wikitext
text/x-wiki
iPhone 6s Click traces
tg7398zd5szihr8vb73jqbjwyfvg6r1
File:iPhone 7 Touch ID Diagram.jpeg
6
537
1167
2020-05-04T15:33:48Z
Chrisb
1
1167
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
File:iPhone 8 vs SE 2020 1.jpg
6
513
1126
2020-04-26T15:03:05Z
Chrisb
1
1126
wikitext
text/x-wiki
iPhone 8 vs iPhone SE (2020) open comparison
snruo2sdr5j7n75rcu883yms21i1hpa
File:iPhone 8 vs SE 2020 LB Back.jpg
6
514
1127
2020-04-26T15:04:39Z
Chrisb
1
1127
wikitext
text/x-wiki
iPhones 8 vs iPhone SE 2020 back of logic board comparison
qk8e2ezrqzndzq5vvvkz276di4837ly
File:iPhone 8 vs SE 2020 LB Front.jpg
6
515
1128
2020-04-26T15:05:53Z
Chrisb
1
1128
wikitext
text/x-wiki
iPhones 8 vs iPhone SE 2020 front of logic board comparison
c8azca5frxovgkn96i3yit5u0kbwoob
File:iPhone SE Battery Edited.jpg
6
518
1138
2020-04-29T01:13:32Z
Dusten04
30
1138
wikitext
text/x-wiki
iPhone SE Battery Edited
mz52t4r4aolsiu2suhw0vzgnricc2nq
File:iPhone SE Cellular Antenna Edited.jpg
6
519
1139
2020-04-29T01:14:07Z
Dusten04
30
1139
wikitext
text/x-wiki
iPhone SE Cellular Antenna Edited
27ruk57f435j3p06ky88mn5eak1x9es
File:iPhone SE Charging Port Edited.jpg
6
520
1140
2020-04-29T01:14:48Z
Dusten04
30
1140
wikitext
text/x-wiki
iPhone SE Charging Port Edited
0hk43ywm0x4qbxd4vvydbeo1o1432gu
File:iPhone SE Front Camera Edited.jpg
6
521
1141
2020-04-29T01:15:27Z
Dusten04
30
1141
wikitext
text/x-wiki
iPhone SE Front Camera Edited
dh0fkt8fyt3vgo7taoiveo3ln9bjqg1
File:iPhone SE Home Button Edited.jpg
6
522
1142
2020-04-29T01:16:03Z
Dusten04
30
1142
wikitext
text/x-wiki
iPhone SE Home Button Edited
t57a7vl2kk121rtspeji1qj6nr8zo73
File:iPhone SE Overall View Edited.jpg
6
517
1137
2020-04-29T01:12:48Z
Dusten04
30
1137
wikitext
text/x-wiki
iPhone SE Overall View Edited
i5b892n69qqb4akjkvp1dgul86mobcj
File:iPhone SE Power Button Edited.jpg
6
523
1143
2020-04-29T01:17:01Z
Dusten04
30
1143
wikitext
text/x-wiki
iPhone SE Power Button Edited
0clqko0wza4blnxafxip72ts0f7n1rh
File:iPhone SE Rear Camera Edited.jpg
6
524
1144
2020-04-29T01:17:47Z
Dusten04
30
1144
wikitext
text/x-wiki
iPhone SE Rear Camera Edited
cs8ad5wqq04baix0nexaptpdaszz2ks
File:iPhone SE Wifi Edited.jpg
6
525
1145
2020-04-29T01:18:23Z
Dusten04
30
1145
wikitext
text/x-wiki
iPhone SE Wifi Edited
1se7ypqy2k3sr2gpqhc2qgvr7di6y9b
File:iPhone SE Wireless Edited.jpg
6
526
1146
2020-04-29T01:19:07Z
Dusten04
30
1146
wikitext
text/x-wiki
iPhone SE Wireless Edited
r5r202su5qy5sn58jbghrq3n8lrqvq3
File:iPhone X BBCPU.png
6
1385
3025
2020-10-06T14:00:31Z
Dusten04
30
3025
wikitext
text/x-wiki
iPhone X BBCPU
h0swwrqhncw8bofqksq5hiimgionbj9
File:iPhone X BBPMU.png
6
1367
3007
2020-10-06T13:39:37Z
Dusten04
30
3007
wikitext
text/x-wiki
iPhone X BBPMU
ghd7qi19wllsil13to7zjdqvm04827m
File:iPhone X CPU diode readings.jpg
6
1958
5817
2021-05-14T22:38:04Z
Tim
169
5817
wikitext
text/x-wiki
iPhone X CPU diode readings
bvtsgna3w6gih3lglr8past2xv7g7gw
File:iPhone X Dot projector & Infrared Camera diode readings.jpg
6
1959
5818
2021-05-14T22:39:55Z
Tim
169
5818
wikitext
text/x-wiki
iPhone X Dot projector & Infrared Camera diode readings
aqk2k10sq1jgirtxnfncspnt5psxm27
File:iPhone X ET.png
6
1369
3009
2020-10-06T13:41:35Z
Dusten04
30
3009
wikitext
text/x-wiki
iPhone X ET
eavw0p72kukunhnrhx539u9qf7ch6dv
File:iPhone X GLNA.png
6
1370
3010
2020-10-06T13:42:22Z
Dusten04
30
3010
wikitext
text/x-wiki
iPhone X GLNA
dcjca2aoewcgeq2ergukczxdkx2poe1
File:iPhone X GNSS.png
6
1371
3011
2020-10-06T13:43:44Z
Dusten04
30
3011
wikitext
text/x-wiki
iPhone X GNSS
a7sl62bwx6rnzuf83adft78auy257sd
File:iPhone X GPLAT.png
6
1372
3012
2020-10-06T13:44:35Z
Dusten04
30
3012
wikitext
text/x-wiki
iPhone X GPLAT
14tlqvxx2h8wsyf9ik6n13a4uhejiep
File:iPhone X GPOUAT.png
6
1373
3013
2020-10-06T13:45:32Z
Dusten04
30
3013
wikitext
text/x-wiki
iPhone X GPOUAT
q2m65qli7v23evnvasoesh7vci1ng0r
File:iPhone X GSMPA.png
6
1374
3014
2020-10-06T13:46:07Z
Dusten04
30
3014
wikitext
text/x-wiki
iPhone X GSMPA
czde8ds8la0qyjf9zf5xi9cd10see6f
File:iPhone X Intel DSM.png
6
1368
3008
2020-10-06T13:40:39Z
Dusten04
30
3008
wikitext
text/x-wiki
iPhone X Intel DSM
nzbc8c9u574ypeb2dghu31rr2wxr32h
File:iPhone X LATCP.png
6
1375
3015
2020-10-06T13:46:45Z
Dusten04
30
3015
wikitext
text/x-wiki
iPhone X LATCP
t602ayuk8eojdkdv5rc17whq8t02n2l
File:iPhone X LBPA.png
6
1377
3017
2020-10-06T13:49:35Z
Dusten04
30
3017
wikitext
text/x-wiki
iPhone X LBPA
pbzywsl9lmoqps8xaz4lyaftfbnjoyp
File:iPhone X LPLN.png
6
1376
3016
2020-10-06T13:49:05Z
Dusten04
30
3016
wikitext
text/x-wiki
iPhone X LPLN
e08qi0cn6zas7dwhas4m0stue1comkw
File:iPhone X MHBLN.png
6
1378
3018
2020-10-06T13:51:38Z
Dusten04
30
3018
wikitext
text/x-wiki
iPhone X MHBLN
3o2ale7r1qmo8cvldkmwhczsn5ohnao
File:iPhone X MHPA.png
6
1379
3019
2020-10-06T13:56:27Z
Dusten04
30
3019
wikitext
text/x-wiki
iPhone X MHPA
r50poumfv841uijaamiel1hc6dxvsdg
File:iPhone X NAND.png
6
1386
3026
2020-10-06T14:01:58Z
Dusten04
30
3026
wikitext
text/x-wiki
iPhone X NAND
q44ugicj15o83ywb6jxt1nzipvuv5r9
File:iPhone X NFC.png
6
1381
3021
2020-10-06T13:57:36Z
Dusten04
30
3021
wikitext
text/x-wiki
iPhone X NFC
kvsyks399ljdv0kd8srbyz6wzfzuvg5
File:iPhone X NFC IC diode readings.jpg
6
1970
5830
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5830
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X NFC IC and sandwich diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
s7lixyben2x55pl1kzc0v7u23ryhll3
File:iPhone X PMIC.png
6
1387
3027
2020-10-06T14:03:09Z
Dusten04
30
3027
wikitext
text/x-wiki
iPhone X PMIC
ncwdwapoyvu8mfodsp8dvfml4b20xgy
File:iPhone X Power IC diode readings.jpg
6
1972
5832
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5832
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X Power IC (PMU) (U2700) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
d7bhxjcreaem1dycdcji4x8sf0383x6
File:iPhone X Q3350.png
6
1382
3022
2020-10-06T13:58:16Z
Dusten04
30
3022
wikitext
text/x-wiki
iPhone X Q3350
lazljnt5efsk4k26hsg3hnz9rpymfl2
File:iPhone X Quad P.png
6
1383
3023
2020-10-06T13:58:55Z
Dusten04
30
3023
wikitext
text/x-wiki
iPhone X Quad P
hcgdbwk9636xg1ylrpi83cfkily573n
File:iPhone X TDDPA.png
6
1384
3024
2020-10-06T13:59:46Z
Dusten04
30
3024
wikitext
text/x-wiki
iPhone X TDDPA
2gew047ngqmz8sgues71jy6tlbs0244
File:iPhone X U3100.png
6
1388
3028
2020-10-06T14:04:03Z
Dusten04
30
3028
wikitext
text/x-wiki
iPhone X U3100
qkf0ypwqhla7cquz6mk3xq9jdqgdxmm
File:iPhone X U3300.png
6
1389
3029
2020-10-06T14:04:48Z
Dusten04
30
3029
wikitext
text/x-wiki
iPhone X U3300
6ix1sh8fvzjsm0y9631qh3zw5wb6i83
File:iPhone X U3400.png
6
1390
3030
2020-10-06T14:05:34Z
Dusten04
30
3030
wikitext
text/x-wiki
iPhone X U3400
ld8wfmwzn3ccyl91clfeqcqhnbls03y
File:iPhone X U3600.png
6
1391
3031
2020-10-06T14:06:07Z
Dusten04
30
3031
wikitext
text/x-wiki
iPhone X U3600
qkvbtnd89cykze6sjqgukw7013lj6zd
File:iPhone X U3620.png
6
1392
3032
2020-10-06T14:06:50Z
Dusten04
30
3032
wikitext
text/x-wiki
iPhone X U3620
evd3k6gvno3efursutmu50jn9009h2q
File:iPhone X U3700.png
6
1393
3033
2020-10-06T14:07:36Z
Dusten04
30
3033
wikitext
text/x-wiki
iPhone X U3700
f0cr0a1q3u5z2oryt0mbzjhjhg6d5zw
File:iPhone X U4100.png
6
1394
3034
2020-10-06T14:08:21Z
Dusten04
30
3034
wikitext
text/x-wiki
iPhone X U4100
nzi3a7rrkz19tjl73ddpgy43p9xklvi
File:iPhone X U4120.png
6
1395
3035
2020-10-06T14:08:56Z
Dusten04
30
3035
wikitext
text/x-wiki
iPhone X U4120
0o3uotl8kfqwx2tjne8loeommk80l0x
File:iPhone X U4400.png
6
1396
3036
2020-10-06T14:09:43Z
Dusten04
30
3036
wikitext
text/x-wiki
iPhone X U4400
i602tha7cphojr2u85qkkn5s53uz7ku
File:iPhone X U4700.png
6
1397
3037
2020-10-06T14:10:17Z
Dusten04
30
3037
wikitext
text/x-wiki
iPhone X U4700
j5qft9d7wrn0y5wc9uizqhxfvxl5nme
File:iPhone X U4900.png
6
1398
3038
2020-10-06T14:10:49Z
Dusten04
30
3038
wikitext
text/x-wiki
iPhone X U4900
hehqrbjakn87o0fpgb1t9xc1k9kjgei
File:iPhone X U5000.png
6
1399
3039
2020-10-06T14:11:21Z
Dusten04
30
3039
wikitext
text/x-wiki
iPhone X U5000
6cexrz4bw832w8aqsb4qf4lu7phglke
File:iPhone X U5100.png
6
1400
3040
2020-10-06T14:12:00Z
Dusten04
30
3040
wikitext
text/x-wiki
iPhone X U5100
gi8rk9zn1ackof2fzfqck79fkfgni6x
File:iPhone X U5530.png
6
1401
3041
2020-10-06T14:12:44Z
Dusten04
30
3041
wikitext
text/x-wiki
iPhone X U5530
n0hewew5ky5w9w3v0pxhvhisghmsmmu
File:iPhone X U5600.png
6
1402
3042
2020-10-06T14:13:16Z
Dusten04
30
3042
wikitext
text/x-wiki
iPhone X U5600
jdav0b8bfxiqupvnc69q08c75sx82jt
File:iPhone X U6200.png
6
1403
3043
2020-10-06T14:14:01Z
Dusten04
30
3043
wikitext
text/x-wiki
iPhone X U6200
tdrjhpi1a6u6p9av5xfsqb3l40trhco
File:iPhone X U6300.png
6
1404
3044
2020-10-06T14:14:42Z
Dusten04
30
3044
wikitext
text/x-wiki
iPhone X U6300
3cjvkr91iztw0me88vy7vki6j07owvc
File:iPhone X UATCP.png
6
1405
3045
2020-10-06T14:15:22Z
Dusten04
30
3045
wikitext
text/x-wiki
iPhone X UATCP
3b1b4w014c6p5qa30zlzg2nrjhsenb7
File:iPhone X XCVR1.png
6
1406
3046
2020-10-06T14:18:13Z
Dusten04
30
3046
wikitext
text/x-wiki
iPhone X XCVR1
7f0gbqwzllpf4h0hth9qt0gkhnn6jkt
File:iPhone X XCVRO.png
6
1407
3047
2020-10-06T14:18:54Z
Dusten04
30
3047
wikitext
text/x-wiki
iPhone X XCVRO
qcxlf7srco0yu7to36rncu4e186dsmc
File:iPhone X battery connector and charging IC diode readings.jpg
6
1963
5822
2021-05-14T23:42:37Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5822
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X battery connector (J3200) and charging IC (Tigris) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
odu2n9oxu6ncp6iqke9ego0rhkvcb6b
File:iPhone X bottom sandwich (Intel) diode readings.jpg
6
1961
5821
2021-05-14T23:42:37Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5821
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X bottom sandwich (Intel) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
ow05dit6jnocxwmutv8v0x92jqh6eej
File:iPhone X bottom sandwich (Qualcomm) diode readings.jpg
6
1962
5823
2021-05-14T23:42:37Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5823
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X bottom sandwich (Qualcomm) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
nkoc4avhrwcqsi840lat8131xd2el8z
File:iPhone X display connector diode readings.jpg
6
1969
5828
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5828
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X display connector (J5700) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
b34kzaj80tzzwy3ne9ll2txizjry8uu
File:iPhone X fron camera connector diode readings.jpg
6
1966
5826
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5826
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X front camera (J4200) connectors diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
lr7n8cuj30z5lq2hs9r6p3pe0nvrjgu
File:iPhone X power button connector diode readings.jpg
6
1965
5825
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5825
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X power button, strobe and MIC2 flex cable connector (J4300) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
fghkcw83omt7uey7dgvff0tqpocnppq
File:iPhone X rear camera connectors diode readings.jpg
6
1964
5824
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5824
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X rear camera connectors (J3900,J4000) diode mode radings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
cygf03m5bou3zndmftqmr4uo02j3fwu
File:iPhone X sandwich top diode readings.jpg
6
1960
5819
2021-05-14T22:41:49Z
Tim
169
5819
wikitext
text/x-wiki
iPhone X sandwich top diode readings
n43gihhjy1hb1lsy66qywj81c0308cr
File:iPhone X sensor IC diode readings.jpg
6
1973
5833
2021-05-14T23:42:39Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5833
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X sensor IC (U3600 Gyro, U3620 Phosphorus) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
6ne785q6mhcj8b0pzbufeyu0d9evfwq
File:iPhone X speaker connector diode readings.jpg
6
1967
5827
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5827
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X speaker, MIC3, ALS and proximity sensor (Rosaline) connector (J4600) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
o8slvgbyikzyvqk390qp8el225huufo
File:iPhone X top board comparison (Qualcomm & intel).jpg
6
1971
5831
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5831
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X Qualcomm & Intel top BB board comparison}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
tda8sfayp9xsx923gyrwvmogg5w80j8
File:iPhone X touch connector diode readings.jpg
6
1968
5829
2021-05-14T23:42:38Z
Tim
169
Uploaded a work by GLONWYMAN from G-LON with UploadWizard
5829
wikitext
text/x-wiki
=={{int:filedesc}}==
{{Information
|description={{en|1=iPhone X touch connector (J5800) diode mode readings}}
|date=2021-05-14
|source=G-LON
|author=GLONWYMAN
|permission=
|other versions=
}}
=={{int:license-header}}==
{{subst:uwl}}
5mwnacdfv74nxdlq8l3zcdznqe08bqk
File:imac 21 2019 recto.jpg
6
1932
5724
2021-04-08T22:18:13Z
Nobluesky
182
5724
wikitext
text/x-wiki
820-01237 recto
dvkzg9co1ua7m72p7fxtsu8vdve2xbn
File:imac 21 2019 verso.jpg
6
1933
5725
2021-04-08T22:18:47Z
Nobluesky
182
5725
wikitext
text/x-wiki
820-01237 verso
njn6nno9hluehoosxisjqllw0vd5z94
File:image.png
6
1419
3083
2020-10-06T21:39:41Z
Inwerp
16
3083
wikitext
text/x-wiki
USB-C powerup
hqkfxn9fqtsn6sl572qc0khrxnx9lzf
File:ipad-air-2-icloud-unlock.jpg
6
755
1604
2020-09-04T00:58:02Z
Alan.l
19
1604
wikitext
text/x-wiki
iPad Air 2 Cellular to Wifi unlock
tvw18j4dvv4sixuzvt5slh8frnjq9n9
File:late-2013-mac-pro-system-block-diagram.png
6
637
1322
2020-06-09T12:57:46Z
Pranas
2
1322
wikitext
text/x-wiki
late-2013-mac-pro-system-block-diagram
29mghip6snn4z0fmawh29j7h661p7o7
File:lcd and touch 13pm dfcloud6.jpg
6
2656
7710
2024-12-31T12:31:37Z
Dfcloud6
1726
7710
wikitext
text/x-wiki
Lcd and touch 13pm diode scale values
5uqeevnmjmlhw7n96vd396qodkkuung
File:lcd iphone 13 dfcloud6.jpg
6
2670
7727
2024-12-31T13:35:42Z
Dfcloud6
1726
7727
wikitext
text/x-wiki
lcd and touch iphone 13 dfcloud6
jd4yfsy21lpnbxaf4ldqiurzg6gt7m6
File:liquidation.jpg
6
2257
7002
2023-10-25T16:54:12Z
CBax
996
7002
wikitext
text/x-wiki
liquidation
5tlefmx0x5p6upzcqdyekqvg94qxqoq
File:mac mini 2010.jpg
6
1341
2945
2020-10-04T19:44:02Z
Alan.l
19
2945
wikitext
text/x-wiki
mac mini 2010
g03fjjs0dwutj29g3fkdul9l8ha2ckx
File:mac mini 2011 5v.jpg
6
1343
2948
2020-10-04T19:50:16Z
Alan.l
19
2948
wikitext
text/x-wiki
mac mini 2011 5v
0f5j4pa1ybn0s24nx4rlzbae7530ol5
File:macmini 2012 cap.jpg
6
1344
2951
2020-10-04T20:00:09Z
Alan.l
19
2951
wikitext
text/x-wiki
macmini 2012 cap
807judxnttq6lwc4tmrbntc0mb60hwc
File:macpro 1.png
6
632
1314
2020-06-09T12:22:26Z
Pranas
2
1314
wikitext
text/x-wiki
macpro_1
lfzelndne6ydqc3eu7kwmqboooa3fz2
File:macpro 2.png
6
633
1315
2020-06-09T12:22:56Z
Pranas
2
1315
wikitext
text/x-wiki
macpro_2
8mgia1eoawbl0qo5bjahlxhp4hpb284
File:macpro 3.jpg
6
635
1317
2020-06-09T12:24:36Z
Pranas
2
1317
wikitext
text/x-wiki
macpro_3
pl7efcy3ptze8rw0udax4i38l9bujwa
File:macpro 4.png
6
636
1318
2020-06-09T12:25:51Z
Pranas
2
1318
wikitext
text/x-wiki
macpro_4
86sgbdbzxffmnso58hk6g7p05dx4eiu
File:macssdgen5.png
6
2160
6493
2022-04-28T17:20:55Z
Inwerp
16
6493
wikitext
text/x-wiki
SSD Gen.5
kq1vv4asi0o1g6d2b1iufk1029aoefs
File:main se 2022.jpg
6
2661
7716
2024-12-31T12:52:56Z
Dfcloud6
1726
7716
wikitext
text/x-wiki
Charging dock iphone se 2022 diode scale values dfcloud6
nsgy5mkg8tl1negzveepqriez5l2idk
File:mbpro15201213.png
6
2183
6584
2022-09-06T15:32:21Z
Francis
4
6584
wikitext
text/x-wiki
Macbook Pro 15" Mid 2012 to Early 2013
nprt4wc6bctcyuot3ko800ctsjp8bxm
File:mbpro201213.png
6
2182
6582
2022-09-06T15:22:34Z
Francis
4
6582
wikitext
text/x-wiki
Macbook pro 15" 2012-Early 2013
jw76kciu1on9mtuo08vuhj31r62ogfp
File:paficist.jpg
6
1955
5811
2021-05-12T13:03:32Z
Alex6337
28
5811
wikitext
text/x-wiki
Pacifist app example of firmwareupdate.pkg extraction and SMC payloads location.
evy5r7yqgru8qbrgn85h9y0as7l72cg
File:ps5 hdmi diode reading.png
6
1937
5746
2021-04-19T14:13:48Z
Blackbeard
421
5746
wikitext
text/x-wiki
PS5 HDMI Diode Reading
0827l1891fuxs039f9fqron99w4wxwf
File:ps5 hdmi via.png
6
1938
5747
2021-04-19T14:15:41Z
Blackbeard
421
5747
wikitext
text/x-wiki
PS5 HDMI Trace
22ozc1cyqj7rv705jstzhk5gmqhb9fc
File:python script.jpg
6
2150
6445
2022-02-28T11:29:14Z
Alex6337
28
6445
wikitext
text/x-wiki
python script
n9750c4oolgmkso7qb50gwsnv3v7mh9
File:rEFIt-example.jpg
6
1947
5801
2021-05-12T12:33:27Z
Alex6337
28
5801
wikitext
text/x-wiki
rEFIt boot menu
pgtlmmrtj9972tzer2sdzxy7df4ixnc
File:raw-button.jpg
6
2148
6443
2022-02-28T11:26:44Z
Alex6337
28
6443
wikitext
text/x-wiki
Raw button
d9554p3url3r1szdb5wjlz5yqbet2i1
File:reload.jpg
6
2145
6440
2022-02-28T11:14:38Z
Alex6337
28
6440
wikitext
text/x-wiki
Reload
nxnnia2z6zfxyzzj3yskts7ibpv1r8e
File:rf iphone 13 dfcloud6.jpg
6
2672
7729
2024-12-31T13:39:33Z
Dfcloud6
1726
7729
wikitext
text/x-wiki
RF diode scale values iphone 13 dfcloud6
grcsq135kzq59r9wwxsb96ckuwqoc6g
File:rootcerts.pem.txt
6
2072
6771
6133
2023-02-22T22:48:16Z
Chrisb
1
Chrisb uploaded a new version of [[File:rootcerts.pem.txt]]
6132
wikitext
text/x-wiki
== Summary ==
Root certificates from Monterey 10.1.2021
95vqs6gu5pc7tlr5go5hw5zh12jky6o
File:shell efi.jpg
6
1949
5803
2021-05-12T12:36:52Z
Alex6337
28
5803
wikitext
text/x-wiki
Shell efi, inside fs2 drive
g1qa8urn8pimcmqrqv3q0qj4tw26mub
File:smcutil-flash-example.jpg
6
1951
5805
2021-05-12T12:39:08Z
Alex6337
28
5805
wikitext
text/x-wiki
smcutil.efi flash command example
hcvo40hjjjtgzeo4hernfuuq85m4oys
File:smcutilefi-shellcommand.jpg
6
1950
5804
2021-05-12T12:37:46Z
Alex6337
28
5804
wikitext
text/x-wiki
smcutilefi-shellcommand
dl23k8i1ejult4ymfc0oft17y9zst1l
File:socrom example.png
6
2581
7599
2024-08-11T20:17:35Z
Muerto
527
7599
wikitext
text/x-wiki
Example serialization block from an 820-01700 with dead NANDs.
dwl3ov2e3pz22ng7uz96qxc5djudy7l
File:southbride readings FRONT PS4 Pro NVG-002.png
6
2133
6398
2022-02-07T06:05:16Z
Alpha Bravo Tech.
538
6398
wikitext
text/x-wiki
Diode Mode Readings Around Southbridge on PS4 Pro NVG-002
btgf6hvyuapilad84tbtlwu5fzmk2s2
File:steve-jobs.webp
6
2119
6346
2022-01-09T17:21:41Z
Inwerp
16
6346
wikitext
text/x-wiki
Steve Jobs
kk2rzafd1ss86wrpccwk3d42jh50rsn
File:sudo apt install python3.jpg
6
2146
6441
2022-02-28T11:21:42Z
Alex6337
28
6441
wikitext
text/x-wiki
sudo apt install python3
ilunff4wqu8crnv6lvhqpdnmpifgv04
File:t2ram.png
6
2210
6714
2023-01-16T07:26:30Z
Leshuq
657
6714
wikitext
text/x-wiki
Diode values under T2's RAM
olcze3c3jfyx2yohziazgaxv3o6tu2d
File:testpoints.jpg
6
2254
6988
2023-10-24T23:15:28Z
Infosquad
1036
6988
wikitext
text/x-wiki
test point in a1990 mainboard
prodduer5c4rx273h6u9c2plzv4dvsa
File:thermal couple.png
6
2154
6470
2022-04-14T18:52:52Z
Inwerp
16
6470
wikitext
text/x-wiki
Macbook Battery thermal couple
n4at6hx2tgv9w5nifkwqygu5ifizdfw
File:thermal throttling.jpg
6
1874
5522
2021-01-21T00:47:41Z
Nobluesky
182
5522
wikitext
text/x-wiki
820-00165 throttling due to high CPU usage with Prime95 torture test.
l7w843ojxc4bwvpzn4xlms1selatn0t
File:thisisfine.png
6
720
1520
2020-08-12T19:41:21Z
Inwerp
16
1520
wikitext
text/x-wiki
temperature_reference
coaon8n47m8kar99n0n2ylljp4l58ks
File:throttling-random-fixed.jpg
6
1897
5595
2021-02-26T02:15:27Z
Nobluesky
182
5595
wikitext
text/x-wiki
throttling smc corrosion
iyb9pvolntfsm7mfeoyqubzwb2cpdfx
File:throttling-random-under-load.jpg
6
1896
5594
2021-02-26T02:13:39Z
Nobluesky
182
5594
wikitext
text/x-wiki
Erratic frequency behavior, slow computer and throttling under load.
gncb58vajg2s2gkgp3jsklvi9adpu3l
File:touchbarconnector.png
6
711
1502
2020-08-09T13:00:12Z
Inwerp
16
1502
wikitext
text/x-wiki
Hirose 34 pin connector
dxls6bmf1xvsc9z0hzbmvtbdjkvr15p
File talk:NAND capacity.jpg
7
2170
6565
6547
2022-08-21T07:05:14Z
Pedro147
26
Deleted page as best I could. Asked Dustin for help but not forthcoming so
6565
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
MediaWiki:Centralnotice-template-Help
8
1824
5372
5371
2020-12-24T16:04:40Z
Chrisb
1
5372
wikitext
text/x-wiki
<!-- Empty banner -->
Hi all, ChrisB from logi.wiki here. We need help. So far our front page is just a list of ALL pages. We need someone to help organize that and create a nice landing page. Please contact me on Louis Rossmans's Repair Discord. My user is ChrisB [VA, US]#9797.
<a href="#" title="Close" onclick="mw.centralNotice.hideBanner();return false;"><div class="cn-closeButton">Close</div></a>
eprbi4l8wfo0edidvewje3auhckrcj1
MediaWiki:Common.css
8
189
3085
3084
2020-10-06T21:41:26Z
Chrisb
1
3085
css
text/css
/* Reset italic styling set by user agent */
cite, dfn {
font-style: inherit;
}
/* Straight quote marks for <q> */
q {
quotes: '"' '"' "'" "'";
}
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
/* Consistent size for <small>, <sub> and <sup> */
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup,
span.reference /* for Parsoid */ {
font-size: 80%;
}
/* Same spacing for indented and unindented paragraphs on talk pages */
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
/* Main page fixes */
#interwiki-completelist {
font-weight: bold;
}
/* Reduce page jumps by hiding collapsed/dismissed content */
.client-js .mw-special-Watchlist #watchlist-message,
.client-js .NavFrame.collapsed .NavContent,
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child) {
display: none;
}
/* Adds padding above Watchlist announcements where new recentchanges/watchlist filters are enabled */
.mw-rcfilters-enabled .mw-specialpage-summary {
margin-top: 1em;
}
/* Hide charinsert base for those not using the gadget */
#editpage-specialchars {
display: none;
}
/* Highlight linked elements (such as clicked references) in blue */
body.action-info .mw-body-content :target,
.citation:target {
background-color: #def; /* Fallback */
background-color: rgba(0, 127, 255, 0.133);
}
/* Styling for citations. Breaks long urls, etc., rather than overflowing box */
.citation {
word-wrap: break-word;
}
/* For linked citation numbers and document IDs, where the number need not be shown
on a screen or a handheld, but should be included in the printed version */
@media screen, handheld {
.citation .printonly {
display: none;
}
}
/* Make the list of references smaller */
/* Keep in sync with Template:Refbegin/styles.css */
ol.references,
div.reflist {
font-size: 90%; /* Default font-size */
margin-bottom: 0.5em;
}
div.reflist ol.references {
font-size: 100%; /* Reset font-size when nested in div.reflist */
margin-bottom: 0; /* Avoid double margin when nested in div.reflist */
list-style-type: inherit; /* Enable custom list style types */
}
/* Allow hidden ref errors to be shown by user CSS */
/* TemplateStyles */
span.brokenref {
display: none;
}
/* Reset top margin for lists embedded in columns */
div.columns {
margin-top: 0.3em;
}
div.columns dl,
div.columns ol,
div.columns ul {
margin-top: 0;
}
/* Avoid elements breaking between columns */
.nocolbreak,
div.columns li,
div.columns dd {
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid-column;
}
/* Style for horizontal lists (separator following item).
@source mediawiki.org/wiki/Snippets/Horizontal_lists
@revision 8 (2016-05-21)
@author [[User:Edokter]]
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
margin: 0;
display: inline;
}
/* Display nested lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
.hlist dl dl, .hlist dl ol, .hlist dl ul,
.hlist ol dl, .hlist ol ol, .hlist ol ul,
.hlist ul dl, .hlist ul ol, .hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* Generate interpuncts */
.hlist dt:after {
content: ": ";
}
/**
* Note hlist style usage differd in
* the Minerva skin. Remember .hlist is a class defined in core as well! Please check Minerva desktop (and Minerva.css) when changing
* See https://phabricator.wikimedia.org/T213239
*/
.hlist dd:after,
.hlist li:after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child:after,
.hlist dt:last-child:after,
.hlist li:last-child:after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li:before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child:before,
.hlist dt ol > li:first-child:before,
.hlist li ol > li:first-child:before {
content: " (" counter(listitem) "\a0";
}
/* Unbulleted lists */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none none;
margin: 0;
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
/* Default style for navigation boxes */
.navbox { /* Navbox container style */
box-sizing: border-box;
border: 1px solid #a2a9b1;
width: 100%;
clear: both;
font-size: 88%;
text-align: center;
padding: 1px;
margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */
}
.navbox .navbox {
margin-top: 0; /* No top margin for nested navboxes */
}
.navbox + .navbox {
margin-top: -1px; /* Single pixel border between adjacent navboxes */
}
.navbox-inner,
.navbox-subgroup {
width: 100%;
}
.navbox-group,
.navbox-title,
.navbox-abovebelow {
padding: 0.25em 1em; /* Title, group and above/below styles */
line-height: 1.5em;
text-align: center;
}
th.navbox-group { /* Group style */
white-space: nowrap;
/* @noflip */
text-align: right;
}
.navbox,
.navbox-subgroup {
background-color: #fdfdfd; /* Background color */
}
.navbox-list {
line-height: 1.5em;
border-color: #fdfdfd; /* Must match background color */
}
/* cell spacing for navbox cells */
tr + tr > .navbox-abovebelow,
tr + tr > .navbox-group,
tr + tr > .navbox-image,
tr + tr > .navbox-list { /* Borders above 2nd, 3rd, etc. rows */
border-top: 2px solid #fdfdfd; /* Must match background color */
}
.navbox th,
.navbox-title {
background-color: #ccccff; /* Level 1 color */
}
.navbox-abovebelow,
th.navbox-group,
.navbox-subgroup .navbox-title {
background-color: #ddddff; /* Level 2 color */
}
.navbox-subgroup .navbox-group,
.navbox-subgroup .navbox-abovebelow {
background-color: #e6e6ff; /* Level 3 color */
}
.navbox-even {
background-color: #f7f7f7; /* Even row striping */
}
.navbox-odd {
background-color: transparent; /* Odd row striping */
}
.navbox .hlist td dl,
.navbox .hlist td ol,
.navbox .hlist td ul,
.navbox td.hlist dl,
.navbox td.hlist ol,
.navbox td.hlist ul {
padding: 0.125em 0; /* Adjust hlist padding in navboxes */
}
/* Default styling for Navbar template */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
}
.mw-body-content .navbar ul {
line-height: inherit;
}
.navbar li {
word-spacing: -0.125em;
}
.navbar.mini li abbr[title] {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
/* Navbar styling when nested in infobox and navbox */
.infobox .navbar {
font-size: 100%;
}
.navbox .navbar {
display: block;
font-size: 100%;
}
.navbox-title .navbar {
/* @noflip */
float: left;
/* @noflip */
text-align: left;
/* @noflip */
margin-right: 0.5em;
}
/* Styling for JQuery makeCollapsible, matching that of collapseButton */
.mw-parser-output .mw-collapsible-toggle {
font-weight: normal;
/* @noflip */
text-align: right;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
/* @noflip */
float: left;
/* @noflip */
text-align: left;
}
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
}
.infobox caption {
font-size: 125%;
font-weight: bold;
padding: 0.2em;
text-align: center;
}
.infobox td,
.infobox th {
vertical-align: top;
/* @noflip */
text-align: left;
}
.infobox.bordered {
border-collapse: collapse;
}
.infobox.bordered td,
.infobox.bordered th {
border: 1px solid #a2a9b1;
}
.infobox.bordered .borderless td,
.infobox.bordered .borderless th {
border: 0;
}
.infobox.sisterproject {
width: 20em;
font-size: 90%;
}
.infobox.standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
}
.infobox.standard-talk.bordered td,
.infobox.standard-talk.bordered th {
border: 1px solid #c0c090;
}
/* styles for bordered infobox with merged rows */
.infobox.bordered .mergedtoprow td,
.infobox.bordered .mergedtoprow th {
border: 0;
border-top: 1px solid #a2a9b1;
/* @noflip */
border-right: 1px solid #a2a9b1;
}
.infobox.bordered .mergedrow td,
.infobox.bordered .mergedrow th {
border: 0;
/* @noflip */
border-right: 1px solid #a2a9b1;
}
/* Styles for geography infoboxes, eg countries,
country subdivisions, cities, etc. */
.infobox.geography {
border-collapse: collapse;
line-height: 1.2em;
font-size: 90%;
}
.infobox.geography td,
.infobox.geography th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.infobox.geography .mergedtoprow td,
.infobox.geography .mergedtoprow th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedrow td,
.infobox.geography .mergedrow th {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedbottomrow td,
.infobox.geography .mergedbottomrow th {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.infobox.geography .maptable td,
.infobox.geography .maptable th {
border: 0;
padding: 0;
}
/* Normal font styling for wikitable row headers with scope="row" tag */
.wikitable.plainrowheaders th[scope=row] {
font-weight: normal;
/* @noflip */
text-align: left;
}
/* Lists in wikitable data cells are always left-aligned */
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
/* @noflip */
text-align: left;
}
/* ...unless they also use the hlist class */
.toc.hlist ul,
#toc.hlist ul,
.wikitable.hlist td ul,
.wikitable.hlist td ol,
.wikitable.hlist td dl {
text-align: inherit;
}
/* Icons for medialist templates [[Template:Listen]],
[[Template:Multi-listen_start]], [[Template:Video]],
[[Template:Multi-video_start]] */
/* TemplateStyles */
div.listenlist {
background: url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0 0 transparent;
background-size: 30px;
padding-left: 40px;
}
/* Fix for hieroglyphs specificity issue in infoboxes ([[phab:T43869]]) */
table.mw-hiero-table td {
vertical-align: middle;
}
/* Change the external link icon to an Adobe icon for all PDF files */
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;
/* @noflip */
padding-right: 18px;
}
/* Messagebox templates */
.messagebox {
border: 1px solid #a2a9b1;
background-color: #f8f9fa;
width: 80%;
margin: 0 auto 1em auto;
padding: .2em;
}
.messagebox.merge {
border: 1px solid #c0b8cc;
background-color: #f0e5ff;
text-align: center;
}
.messagebox.cleanup {
border: 1px solid #9f9fff;
background-color: #efefff;
text-align: center;
}
.messagebox.standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
margin: 4px auto;
}
/* For old WikiProject banners inside banner shells. */
.mbox-inside .standard-talk,
.messagebox.nested-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
width: 100%;
margin: 2px 0;
padding: 2px;
}
.messagebox.small {
width: 238px;
font-size: 85%;
/* @noflip */
float: right;
clear: both;
/* @noflip */
margin: 0 0 1em 1em;
line-height: 1.25em;
}
.messagebox.small-talk {
width: 238px;
font-size: 85%;
/* @noflip */
float: right;
clear: both;
/* @noflip */
margin: 0 0 1em 1em;
line-height: 1.25em;
background-color: #f8eaba;
}
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
th.mbox-text, td.mbox-text { /* The message body cell(s) */
border: none;
/* @noflip */
padding: 0.25em 0.9em; /* 0.9em left/right */
width: 100%; /* Make all mboxes the same width regardless of text length */
}
td.mbox-image { /* The left image cell */
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */
text-align: center;
}
td.mbox-imageright { /* The right image cell */
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */
text-align: center;
}
td.mbox-empty-cell { /* An empty narrow cell */
border: none;
padding: 0;
width: 1px;
}
/* Article message box styles */
table.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* Image message box styles */
table.imbox {
margin: 4px 10%;
border-collapse: collapse;
border: 3px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */
margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */
display: block; /* Fix for webkit to force 100% width. */
}
.mbox-inside .imbox { /* For imboxes inside other templates. */
margin: 4px;
}
table.imbox-notice {
border: 3px solid #36c; /* Blue */
}
table.imbox-speedy {
border: 3px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.imbox-delete {
border: 3px solid #b32424; /* Red */
}
table.imbox-content {
border: 3px solid #f28500; /* Orange */
}
table.imbox-style {
border: 3px solid #fc3; /* Yellow */
}
table.imbox-move {
border: 3px solid #9932cc; /* Purple */
}
table.imbox-protection {
border: 3px solid #a2a9b1; /* Gray-gold */
}
table.imbox-license {
border: 3px solid #88a; /* Dark gray */
background-color: #f7f8ff; /* Light gray */
}
table.imbox-featured {
border: 3px solid #cba135; /* Brown-gold */
}
/* Category message box styles */
table.cmbox {
margin: 3px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1;
background-color: #dfe8ff; /* Default "notice" blue */
box-sizing: border-box;
}
table.cmbox-notice {
background-color: #d8e8ff; /* Blue */
}
table.cmbox-speedy {
margin-top: 4px;
margin-bottom: 4px;
border: 4px solid #b32424; /* Red */
background-color: #ffdbdb; /* Pink */
}
table.cmbox-delete {
background-color: #ffdbdb; /* Pink */
}
table.cmbox-content {
background-color: #ffe7ce; /* Orange */
}
table.cmbox-style {
background-color: #fff9db; /* Yellow */
}
table.cmbox-move {
background-color: #e4d8ff; /* Purple */
}
table.cmbox-protection {
background-color: #efefe1; /* Gray-gold */
}
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
/* Talk page message box styles */
table.tmbox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
min-width: 80%;
box-sizing: border-box;
}
.tmbox.mbox-small {
min-width: 0; /* reset the min-width of tmbox above */
}
.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */
width: 100%; /* For Safari and Opera */
}
.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */
line-height: 1.5em; /* also "nested", so reset styles that are */
font-size: 100%; /* set in "mbox-small" above. */
}
table.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
table.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
table.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
table.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
table.tmbox-protection,
table.tmbox-notice {
border: 1px solid #c0c090; /* Gray-brown */
}
/* Footer and header message box styles */
table.fmbox {
clear: both;
margin: 0.2em 0;
width: 100%;
border: 1px solid #a2a9b1;
background-color: #f8f9fa; /* Default "system" gray */
box-sizing: border-box;
}
table.fmbox-system {
background-color: #f8f9fa;
}
table.fmbox-warning {
border: 1px solid #bb7070; /* Dark pink */
background-color: #ffdbdb; /* Pink */
}
table.fmbox-editnotice {
background-color: transparent;
}
/* Div based "warning" style fmbox messages. */
div.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon,
div.titleblacklist-warning,
div.locked-warning {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* These mbox-small classes must be placed after all other
ambox/tmbox/ombox etc classes. "html body.mediawiki" is so
they override "table.ambox + table.ambox" above. */
html body.mediawiki .mbox-small { /* For the "small=yes" option. */
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
box-sizing: border-box;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
html body.mediawiki .mbox-small-left { /* For the "small=left" option. */
/* @noflip */
margin: 4px 1em 4px 0;
box-sizing: border-box;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
/* Style for compact ambox */
/* Hide the images */
.compact-ambox table .mbox-image,
.compact-ambox table .mbox-imageright,
.compact-ambox table .mbox-empty-cell {
display: none;
}
/* Remove borders, backgrounds, padding, etc. */
.compact-ambox table.ambox {
border: none;
border-collapse: collapse;
background-color: transparent;
margin: 0 0 0 1.6em !important;
padding: 0 !important;
width: auto;
display: block;
}
body.mediawiki .compact-ambox table.mbox-small-left {
font-size: 100%;
width: auto;
margin: 0;
}
/* Style the text cell as a list item and remove its padding */
.compact-ambox table .mbox-text {
padding: 0 !important;
margin: 0 !important;
}
.compact-ambox table .mbox-text-span {
display: list-item;
line-height: 1.5em;
list-style-type: square;
list-style-image: url(/w/skins/MonoBook/resources/images/bullet.svg);
}
.skin-vector .compact-ambox table .mbox-text-span {
list-style-type: disc;
list-style-image: url(/w/skins/Vector/resources/skins.vector.styles/images/bullet-icon.svg);
}
/* Allow for hiding text in compact form */
.compact-ambox .hide-when-compact {
display: none;
}
/* Hide (formatting) elements from screen, but not from screenreaders */
.visualhide {
position: absolute;
left: -10000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
/* Remove underlines from certain links */
.nounderlines a,
.IPA a:link, .IPA a:visited {
text-decoration: none !important;
}
/* Standard Navigationsleisten, aka box hiding thingy
from .de. Documentation at [[Wikipedia:NavFrame]]. */
div.NavFrame {
margin: 0;
padding: 4px;
border: 1px solid #a2a9b1;
text-align: center;
border-collapse: collapse;
font-size: 95%;
}
div.NavFrame + div.NavFrame {
border-top-style: none;
border-top-style: hidden;
}
div.NavFrame div.NavHead {
line-height: 1.6em;
font-weight: bold;
background-color: #ccf;
position: relative;
}
div.NavFrame p,
div.NavFrame div.NavContent,
div.NavFrame div.NavContent p {
font-size: 100%;
}
a.NavToggle {
position: absolute;
top: 0;
/* @noflip */
right: 3px;
font-weight: normal;
font-size: 90%;
}
/* Hatnotes and disambiguation notices */
.hatnote {
font-style: italic;
}
.hatnote i {
font-style: normal;
}
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
div.hatnote + div.hatnote {
margin-top: -0.5em;
}
/* Allow transcluded pages to display in lists rather than a table. */
.listify td {
display: list-item;
}
.listify tr {
display: block;
}
.listify table {
display: block;
}
/* Geographical coordinates defaults. See [[Template:Coord/link]]
for how these are used. The classes "geo", "longitude", and
"latitude" are used by the [[Geo microformat]]. */
/* TemplateStyles */
.geo-default, .geo-dms, .geo-dec {
display: inline;
}
.geo-nondefault, .geo-multi-punct {
display: none;
}
.longitude, .latitude {
white-space: nowrap;
}
/* User block messages */
div.user-block {
padding: 5px;
margin-bottom: 0.5em;
border: 1px solid #a9a9a9;
background-color: #ffefd5;
}
/* Prevent line breaks in silly places:
1) Where desired
2) Links when we don't want them to
3) Bold "links" to the page itself */
.nowrap,
.nowraplinks a,
.nowraplinks .selflink {
white-space: nowrap;
}
.nowrap pre {
white-space: pre;
}
/* But allow wrapping where desired: */
.wrap,
.wraplinks a {
white-space: normal;
}
/* For template documentation */
/* TemplateStyles */
.template-documentation {
clear: both;
margin: 1em 0 0 0;
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
padding: 1em;
}
/* Increase the height of the image upload box */
#wpUploadDescription {
height: 13em;
}
/* Minimum thumb width */
.thumbinner {
min-width: 100px;
}
/* Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views. */
#mw-subcategories, #mw-pages, #mw-category-media,
#filehistory, #wikiPreview, #wikiDiff {
clear: both;
}
/* Selectively hide headers in WikiProject banners */
/* TemplateStyles */
.wpb .wpb-header {
display: none;
}
.wpbs-inner .wpb .wpb-header {
display: block; /* for IE */
}
.wpbs-inner .wpb .wpb-header {
display: table-row; /* for real browsers */
}
.wpbs-inner .wpb-outside {
display: none; /* hide things that should only display outside shells */
}
/* Styling for Abuse Filter tags */
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */
.checkuser-show,
.sysop-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
/* Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive. */
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
/* Remove bullets when there are multiple edit page warnings */
ul.permissions-errors > li {
list-style: none none;
}
ul.permissions-errors {
margin: 0;
}
/* Generic class for Times-based serif, texhtml class for inline math */
.times-serif,
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
}
span.texhtml {
white-space: nowrap;
}
span.texhtml span.texhtml {
font-size: 100%;
}
span.mwe-math-mathml-inline {
font-size: 118%;
}
/* Force tabular and lining display for digits and texhtml */
.digits,
.texhtml {
-moz-font-feature-settings: "lnum", "tnum", "kern" 0;
-webkit-font-feature-settings: "lnum", "tnum", "kern" 0;
font-feature-settings: "lnum", "tnum", "kern" 0;
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
/* Make <math display="block"> be left aligned with one space indent for compatibility with style conventions */
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
/* Fix styling of transcluded prefindex tables */
table#mw-prefixindex-list-table,
table#mw-prefixindex-nav-table {
width: 98%;
}
/* Make it possible to hide checkboxes in <inputbox> */
.inputbox-hidecheckboxes form .inputbox-element,
.inputbox-hidecheckboxes .mw-ui-checkbox {
display: none !important;
}
/* Work-around for [[phab:T25965]] / [[phab:T100106]] (Kaltura advertisement) */
.k-player .k-attribution {
visibility: hidden;
}
/* Move 'play' button of video player to bottom left corner */
.PopUpMediaTransform a .play-btn-large {
margin: 0;
top: auto;
right: auto;
bottom: 0;
left: 0;
}
/* Hide FlaggedRevs notice UI when there are no pending changes */
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced {
display: none;
}
/* Force imgs in galleries to have borders by wrapping them in class=bordered-images */
.bordered-images img {
border: solid #ddd 1px;
}
/* Gallery styles background changes are restricted to screen view. In printing we should avoid applying backgrounds. */
@media screen {
/* The backgrounds for galleries. */
#content .gallerybox div.thumb {
/* Light gray padding */
background-color: #f8f9fa;
}
/* Put a chequered background behind images, only visible if they have transparency.
'.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */
.gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
/* But not on articles, user pages, portals or with opt-out. */
.ns-0 .gallerybox .thumb img,
.ns-2 .gallerybox .thumb img,
.ns-100 .gallerybox .thumb img,
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
/* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode
@media screen {
#siteSub {
display: block;
}
}*/
/* Temporary measures to remove links in sidebar T255381*/
#t-upload {
display: none;
}
#n-shoplink {
display: none;
}
s2zwx8xhkagwm2qetptclfwxqk3rvmr
MediaWiki:Common.js
8
2258
7013
7012
2023-11-01T10:09:28Z
CBax
996
Blanked the page
7013
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
MediaWiki:Sidebar
8
59
1818
1817
2020-09-26T20:57:27Z
Chrisb
1
1818
wikitext
text/x-wiki
* navigation
** mainpage|mainpage-description
** recentchanges-url|recentchanges
** randompage-url|randompage
** Special:Users|Users
** helppage|help-mediawiki
** Shiny:Main_Page|Shiny Users
* SEARCH
* TOOLBOX
* LANGUAGES
bzz27rtsqms1tkqu9hnyrclf1r3qea5
MediaWiki:Sitenotice
8
2256
7028
7016
2023-12-02T15:05:32Z
CBax
996
Blanked the page
7028
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
MediaWiki:Smw import foaf
8
825
1832
2020-09-27T17:48:40Z
127.0.0.1
Semantic MediaWiki default vocabulary import
1832
wikitext
text/x-wiki
http://xmlns.com/foaf/0.1/|[http://www.foaf-project.org/ Friend Of A Friend]
name|Type:Text
homepage|Type:URL
mbox|Type:Email
mbox_sha1sum|Type:Text
depiction|Type:URL
phone|Type:Text
Person|Category
Organization|Category
knows|Type:Page
member|Type:Page
[[Category:Imported vocabulary]]
54j1f1u0gxrlqu4877gsk6vv72gs354
MediaWiki:Smw import owl
8
826
1833
2020-09-27T17:48:40Z
127.0.0.1
Semantic MediaWiki default vocabulary import
1833
wikitext
text/x-wiki
http://www.w3.org/2002/07/owl#|[http://www.w3.org/2002/07/owl Web Ontology Language (OWL)]
AllDifferent|Category
allValuesFrom|Type:Page
AnnotationProperty|Category
backwardCompatibleWith|Type:Page
cardinality|Type:Number
Class|Category
comment|Type:Page
complementOf|Type:Page
DataRange|Category
DatatypeProperty|Category
DeprecatedClass|Category
DeprecatedProperty|Category
differentFrom|Type:Page
disjointWith|Type:Page
distinctMembers|Type:Page
equivalentClass|Type:Page
equivalentProperty|Type:Page
FunctionalProperty|Category
hasValue|Type:Page
imports|Type:Page
incompatibleWith|Type:Page
intersectionOf|Type:Page
InverseFunctionalProperty|Category
inverseOf|Type:Page
isDefinedBy|Type:Page
label|Type:Page
maxCardinality|Type:Number
minCardinality|Type:Number
Nothing|Category
ObjectProperty|Category
oneOf|Type:Page
onProperty|Type:Page
Ontology|Category
OntologyProperty|Category
owl|Type:Page
priorVersion|Type:Page
Restriction|Category
sameAs|Type:Page
seeAlso|Type:Page
someValuesFrom|Type:Page
SymmetricProperty|Category
Thing|Category
TransitiveProperty|Category
unionOf|Type:Page
versionInfo|Type:Page
[[Category:Imported vocabulary]]
mjrj8ysg8aclt8sddeabn26vvadmsuy
MediaWiki:Smw import skos
8
824
1831
2020-09-27T17:48:39Z
127.0.0.1
Semantic MediaWiki default vocabulary import
1831
wikitext
text/x-wiki
http://www.w3.org/2004/02/skos/core#|[http://www.w3.org/TR/skos-reference/skos.rdf Simple Knowledge Organization System (SKOS)]
altLabel|Type:Monolingual text
broader|Type:Annotation URI
broaderTransitive|Type:Annotation URI
broadMatch|Type:Annotation URI
changeNote|Type:Text
closeMatch|Type:Annotation URI
Collection|Class
Concept|Class
ConceptScheme|Class
definition|Type:Text
editorialNote|Type:Text
exactMatch|Type:Annotation URI
example|Type:Text
hasTopConcept|Type:Page
hiddenLabel|Type:String
historyNote|Type:Text
inScheme|Type:Page
mappingRelation|Type:Page
member|Type:Page
memberList|Type:Page
narrower|Type:Annotation URI
narrowerTransitive|Type:Annotation URI
narrowMatch|Type:Annotation URI
notation|Type:Text
note|Type:Text
OrderedCollection|Class
prefLabel|Type:String
related|Type:Annotation URI
relatedMatch|Type:Annotation URI
scopeNote|Type:Text
semanticRelation|Type:Page
topConceptOf|Type:Page
[[Category:Imported vocabulary]]
7uej7l6j7zibffqxeqr83oypfu8tya3
MediaWiki:Special404-body
8
2091
6251
2021-11-24T22:06:49Z
Chrisb
1
Added all pages to 404
6251
wikitext
text/x-wiki
The URL you requested was not found.
Did you mean to type {{fullurl:$1}}?
Maybe you would like to look at:
* [[{{MediaWiki:Mainpage}}|The main page]]
=='''All pages'''==
{{Special:AllPages}}
ohbgumg7diz1w02ok3wodihr4bpkbmb
MediaWiki:Vector.css
8
1418
3117
3116
2020-10-06T22:14:53Z
Chrisb
1
3117
css
text/css
/* All CSS here will be loaded for users of the Vector skin */
div#mw-head {
background: url('https://logi.wiki/images/e/e7/header.jpg') top center no-repeat;
background-position: 350px 0px;
height: 100px;
}
1p4hdxoedz3jl8jt2bw35fzqyej7gyy
Template:=
10
1492
4632
4631
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4631
wikitext
text/x-wiki
=<noinclude>
{{documentation}}
</noinclude>
81y2jvjxw3y0febsqx5xbr4ikdc7nr6
Template:Abbreviations
10
955
2142
2141
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2141
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Abbreviations
| subst= <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This {{{1|article}}} '''uses [[abbreviation]]s that may be [[Wikipedia:Manual of Style#Acronyms and abbreviations|confusing or ambiguous]]{{#if:{{{2|}}}| (e.g. {{{2}}})}}.'''
| fix = There might be a discussion about this on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|{{{talk}}}]]|[[{{TALKPAGENAME}}|talk page]]}}. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{#if:{{NAMESPACE}}|{{NAMESPACE}} page|article}}}}}] if you can.
| date = {{{date|}}}
| removalnotice = yes
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
fbsnysz9uvaodlga7217yx2gity9y1d
Template:About
10
1633
4914
4913
2020-10-11T05:50:21Z
Chrisb
1
1 revision imported
4913
wikitext
text/x-wiki
<includeonly>{{#invoke:about|about}}</includeonly><noinclude>{{Documentation}}</noinclude>
sewwzp1otrriymoi2xy4csy1ag24qbn
Template:Academic-written review
10
1234
2700
2699
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2699
wikitext
text/x-wiki
<!--------------------------
Top icon on non-talk pages
--------------------------->{{#ifeq:{{FULLPAGENAMEE}}|{{TALKPAGENAMEE}}||
{{Top icon
| imagename = Journal Icon.svg
| wikilink = {{#if:{{{doi|}}}|https://dx.doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|{{#invoke:WikidataIB |getValue |qid={{{Q|Q76846397}}} |P356 |fetchwikidata=ALL |onlysourced=no |noicon=true |prefix=https://doi.org/}}}}}}}}}}}} | description = This article was updated by an external expert under a dual publication model. The corresponding peer-reviewed article was published in the journal {{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}}. Click to view.
| sortkey = {{{sortkey|}}}
}}
}}
<!--------------------------
Main info
--------------------------->{{ambox
| type = notice
| style = margin: 0 10%; border: 1px solid #aaa; border-left: 10px solid #1e90ff; background: #fbfbfb;
| image = [[File:Journal Icon.svg|48px|Journal|link={{trim|{{#if:{{{doi|}}}|https://doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|http://www.example.com}}}}}}}}}}}}]]
| text = The {{#time:Y|{{{wikidate|{{#invoke:WikidataIB |getValue |qid={{{Q|}}} |P577 |fetchwikidata=ALL |onlysourced=no |noicon=true }}}}}}} version of this article was updated by an external expert under a dual publication model. The corresponding [[Scholarly_peer_review|academic peer reviewed]] article was published in '''''{{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}} ''''' and can be cited as:<br />{{#if:{{{Q|{{{QID|}}}}}}
|{{cite Q|ref=none|{{{Q|{{{QID|}}}}}} }}
|{{cite journal
|ref=none
|vauthors={{{vauthors|}}}
|authors={{{authors|}}}
|last1={{{last1|{{{last|}}}}}}
|first1={{#if:{{{first2|}}}|{{#invoke:String|pos|{{{first1|{{{first|}}}}}}|1}}}}
|last2={{{last2|}}}
|first2={{#if:{{{first2|}}}|{{#invoke:String|pos|{{{first2|}}}|1}}}}
|last3={{{last3|}}}
|first3={{#if:{{{first3|}}}|{{#invoke:String|pos|{{{first3|}}}|1}}}}
|last4={{{last4|}}}
|first4={{#if:{{{first4|}}}|{{#invoke:String|pos|{{{first4|}}}|1}}}}
|last5={{{last5|}}}
|first5={{#if:{{{first5|}}}|{{#invoke:String|pos|{{{first5|}}}|1}}}}
|last6={{{last6|}}}
|first6={{#if:{{{first6|}}}|{{#invoke:String|pos|{{{first6|}}}|1}}}}
|last7={{{last7|}}}
|first7={{#if:{{{first7|}}}|{{#invoke:String|pos|{{{first7|}}}|1}}}}
|last8={{{last8|}}}
|first8={{#if:{{{first8|}}}|{{#invoke:String|pos|{{{first8|}}}|1}}}}
|last9={{{last9}}}
|first9={{#if:{{{first9|}}}|{{#invoke:String|pos|{{{first9|}}}|1}}}}|date={{{date|}}}
|title={{{title|{{PAGENAME}}}}}
|url={{trim|{{#if:{{{doi|}}}|https://dx.doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|http://www.example.com}}}}}}}}}}}}
|journal={{{1|{{{journal|}}}}}}
|volume={{{volume|}}}
|issue={{{issue|}}}
|pages={{{pages|}}}
|doi={{{doi|}}}
|pmc={{{pmc|}}}
|pmid={{{pmid|}}}
}}}}}}<includeonly>{{Category handler
|main=[[Category:Wikipedia articles with corresponding academic peer reviewed articles]]
[[Category:Wikipedia articles with corresponding articles published in {{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}}]]
|nocat={{{nocat|}}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
16014xbsgjow7e3aocemi6cvi5yqdtz
Template:Academic peer reviewed
10
1227
2686
2685
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2685
wikitext
text/x-wiki
{{talk other
| {{Academic_peer_reviewed/talk|Q={{{1|{{{Q|Q76846397}}}}}}}} <!-- display as on talk -->
| {{Academic_peer_reviewed/other|Q={{{1|{{{Q|Q76846397}}}}}}}} <!-- display as on mainspace and others-->
| demospace = {{{demospace|}}}
}}
{{main other
|{{Top icon
| imagename = Journal Icon.svg
| wikilink = https://doi.org/{{#property:P356|from={{{1|{{{Q|Q76846397}}}}}}}}
| description = This article has been published in the peer-reviewed journal {{#property:P1433|from={{{1|{{{Q|Q76846397}}}}}}}} ({{year|{{#property:P577|from={{{1|{{{Q|Q76846397}}}}}}}}}}). Click to view the published version.
| sortkey = {{{sortkey|}}}
}}[[Category:Wikipedia articles published in peer-reviewed literature]]
[[Category:Wikipedia articles published in {{trim|{{delink|{{{journal|{{#property:P1433|from={{{1|{{{Q|Q76846397}}}}}}}}}}}}}}}]]
[[Category:Externally peer reviewed articles]]
[[Category:Wikipedia articles incorporating text from open access publications]]
{{#if:{{GetEtAl|{{{1|{{{Q|Q76846397}}}}}}}}
|[[Category:Wikipedia articles published in peer-reviewed literature (W2J)]]
|[[Category:Wikipedia articles published in peer-reviewed literature (J2W)]]
}}
}}<noinclude>
{{documentation}}
</noinclude>
4bl6mloh1nolcu2wbngc11brex8yr0s
Template:Active
10
1493
4634
4633
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4633
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #9F9; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-active"| {{{1|Active}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Software table cell templates]]
</noinclude>
45qhx3ut4bat1fa5tj641sop0p16vpa
Template:Active fire
10
1494
4636
4635
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4635
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #f99; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no"|Active {{nowrap|({{{1|}}})}}<noinclude>
|}
{{documentation}}</noinclude>
m0k91dp5jmgltz7xz2xam6r375isbtk
Template:Advert
10
956
2144
2143
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2143
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Advert
| type = content
| class= ambox-Advert
| issue= This {{{1|article}}} '''contains content that is written like [[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|an advertisement}}]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing [[WP:Spam|promotional content]] and inappropriate [[Wikipedia:External_links#Advertising_and_conflicts_of_interest|external links]], and by adding encyclopedic content written from a [[Wikipedia:Neutral point of view|neutral point of view]].
| removalnotice = yes
| cat = Articles with a promotional tone
| date = {{{date|}}}
| all = All articles with a promotional tone
}}
}}<noinclude>
{{documentation}}
</noinclude>
58393qwkexvr52ixvb3xeba0vworvwc
Template:AfD-userfied
10
1248
2728
2727
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2727
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = AfD-userfied
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = delete
| sect = article
| text = '''was moved to draft space pursuant to the deletion discussion at [[Wikipedia:Articles for deletion/{{{1}}}]] on {{{2}}}.'''
| fix = Please do not restore this article to mainspace unless there has been substantial improvement to address the concerns raised in the deletion discussion.
| all =
| date={{#time:F Y}}
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dzxhw9ek2i32qyaxxpxpdbe0nbnum4y
Template:Afd-merge required
10
1158
2548
2547
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2547
wikitext
text/x-wiki
{{Ambox
|name = Afd-merge required
|subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|type = move
|style = background:#e4d8ff;
|image = [[File:Merge-arrow.svg|50px|alt=|link=]]
|text = This article was [[Wikipedia:Articles for deletion|nominated]] for [[Wikipedia:Deletion policy|deletion]]. [[Wikipedia:Articles for deletion/{{{2}}}|'''The debate''']] was closed {{#if: {{{3|}}} | on '''{{{3}}}'''}} with a consensus that the content of the article is to be [[Wikipedia:Merging|merged]] into another article, possibly ''[[{{{1}}}]]''. To discuss the proposed destination for the merge, please use [[Talk:{{BASEPAGENAME}}|the talk page]].
|cat = Articles to be merged
|all = Articles to be merged after an Articles for deletion discussion
|date = {{{date|}}}
}}<noinclude>
{{Documentation}}
</noinclude>
aeklsmj6lfde99c9ucuob37sj3qci7p
Template:Afd-merge to
10
1238
2708
2707
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2707
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<templatestyles src="Afd-merge_to/styles.css" />{{Ambox
|name=Afd-merge to
|subst=<includeonly>{{subst:substcheck}}</includeonly>
|type=move
|class=ambox-mergeto
|image=[[File:Merge-arrow.svg|50px|alt=|link=]]
|text=This article was [[Wikipedia:Articles for deletion|nominated]] for [[Wikipedia:Deletion policy|deletion]]. [[Wikipedia:Articles for deletion/{{{2}}}|'''The discussion''']] was closed on '''{{{3}}}''' with a consensus to [[Wikipedia:Merging|merge]] the content into the article ''[[{{{1}}}]]''. If you find that such action has not been taken promptly, please consider assisting in the merger instead of re-nominating the article for deletion. To discuss the merger, please use [[Talk:{{{1}}}|the destination article's talk page]].<includeonly>{{#if:{{yesno|{{{nocat|}}}}}||[[Category:Articles to be merged after an Articles for deletion discussion|{{#time:Y-m-d|{{{3|{{{date|}}}}}}}}]]}}</includeonly>
|cat=Articles to be merged
|date={{#if:{{{date|}}}|{{{date}}}|{{#if:{{{3|}}}|{{#time:F Y|{{{3}}}}} }} }}
|nocat={{{nocat|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
a06t73xyl8t4m6qr53qukmls65d49mv
Template:Afdnotice2
10
957
2146
2145
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2145
wikitext
text/x-wiki
{{ambox
| name = Afdnotice2
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = delete
| issue = The related article '''[[{{{1|UNKNOWN}}}]]''' has been nominated for '''deletion''' (but could be merged or renamed).
| fix = You are encouraged to join the '''[[Wikipedia:Articles for deletion/{{#if:{{{2|}}}|{{{2}}}|{{{1|UNKNOWN}}}}}|discussion]]''' on the [[Wikipedia:Articles for deletion|Articles for deletion]] page.
| all = Articles for deletion notices
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
5kmsqb79wqjxrbftn1761d37ikft2m5
Template:Aligned table
10
1642
4932
4931
2020-10-11T05:50:38Z
Chrisb
1
1 revision imported
4931
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
atstqes86pjj6hoiczcmfvhjlawblhx
Template:All plot
10
958
2148
2147
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2147
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{All plot}} begin-->{{Ambox
| name = All plot
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| class = ambox-all_plot
| issue = This {{{1|article}}} '''consists almost entirely of a [[Wikipedia:What Wikipedia is not#PLOT|plot summary]]'''. It should be expanded to provide more balanced coverage that includes [[Wikipedia:Manual of Style/Writing about fiction#Real-world perspective|real-world context]].
| fix = Please [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} edit the {{{1|article}}}] to [[Wikipedia:Manual of Style/Writing about fiction|focus on discussing the work]] rather than merely reiterating the plot.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles to be expanded
| all = All articles to be expanded
}}<!--{{All plot}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
8y1v8ax70ssfdtowgb5cewdapexi8tg
Template:Almanac
10
929
2090
2089
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2089
wikitext
text/x-wiki
{{ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = This {{#if:{{{section|}}}|section|{{#if:{{{list|}}}|list|article}} }} concentrates unduly on statistical information. '''[[WP:NOT#STATS|Wikipedia is not an indiscriminate collection of information]]''' and long lists of statistics may be confusing to readers and reduce the readability and neatness of our articles.
| fix = In addition, articles should contain sufficient explanatory text to put statistics within the article in their proper context for a general reader ([[{{TALKPAGENAME}}|Discuss]])
| date= {{{date|}}}
| removalnotice = yes
| name = Almanac
}}<noinclude>
{{documentation}}
</noinclude>
bvje9eigqy68jbvnufh7z3f48h45wgi
Template:Alphabetize
10
959
2150
2149
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2149
wikitext
text/x-wiki
<!-- {{Alphabetize}} begin -->{{Ambox
| name = Alphabetize
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This list needs to be '''[[Help:Sorting#Initial alphabetical sort versus initial sort by rank order|alphabetized]]'''. See [[Help:Sorting]].
| fix =
| cat = Lists that need to be alphabetized
| small = {{{small|}}}
}}<!-- {{Alphabetize}} end --><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
i5k4ltsqmv7b1q5fsr3siw6592ya6ma
Template:Alumni
10
940
2112
2111
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2111
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = This {{#switch:{{{1}}}
|residents = article's list of residents
|SAL = alumni list
|SALpeople = list of people
|people = article's list of people
|#default = article's list of alumni
}} '''may not follow Wikipedia's [[Wikipedia:Verifiability|verifiability]] policy'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by removing names that do not have independent [[Wikipedia:Reliable sources|reliable sources]] showing they merit inclusion in this article AND {{#switch:{{{1}}}
|residents = residents
|SALpeople
|people = members of this list
|SAL
|#default = alumni
}}, or by incorporating the relevant publications into the body of the article through appropriate [[Wikipedia:Citing sources|citations]].
| cat = Articles needing cleanup
| date = {{{date|}}}
| all = All pages needing cleanup
| name = Alumni
}}
}}<noinclude>
{{documentation}}
</noinclude>
083gippuuieaqrtyxeuyobrjnabp5s1
Template:Ambox
10
914
2060
2059
2020-09-29T19:17:22Z
Chrisb
1
1 revision imported
2059
wikitext
text/x-wiki
{{#invoke:Message box|ambox}}{{#ifeq:{{{small}}}|left|[[Category:Articles using small message boxes]]}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
j0j11qao0sl45x6kzzme1ycda7wiz9f
Template:Ambox/doc
10
1312
2856
2855
2020-09-29T19:18:20Z
Chrisb
1
1 revision imported
2855
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{High-risk| 1350227 |all-pages = yes}}
{{Lua|Module:Message box}}
{{Mbox templates (small)}}
{{tl|Ambox}} stands for '''A'''rticle '''m'''essage '''box''' which is a [[Help:Metatemplating|metatemplate]]. It is used to build message boxes for templates used in '''articles''', such as {{tl|Underlinked}}. It offers several different colours, images and some other features.
== Common parameters ==
The box below shows the most common parameters that are accepted by {{Tl|Ambox}}. The purpose of each is described below.
<pre>
{{Ambox
| name =
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</pre>
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example {{Tl|Underlinked}} specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is twofold:
* If incorrectly [[Wikipedia:Substitution|substituted]], it allows the meta-template to notify the name of the template which has been substituted, which may help editors to fix the problem.
* It allows the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''subst'' ===
The ''subst'' parameter allows the meta-template to detect whether the template has been incorrectly substituted, and give an appropriate warning. It will also add such pages to [[:Category:Pages with incorrectly substituted templates]]. Just copy the code exactly as it appears in the box.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{Ambox|nocat=true|small=left|text=This is the small left-aligned Ambox format.}}
Otherwise the standard format will be produced:
{{Ambox|nocat=true|text=This is the standard Ambox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{Ambox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See {{section link||sect}} below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{Ambox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues, such as {{tl|db-g1}} and {{tl|db-g3}}.
}}
{{Ambox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues, such as {{tl|article for deletion}} and {{tl|proposed deletion}}.
}}
{{Ambox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}.
}}
{{Ambox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues, such as {{tl|cleanup}} and {{tl|underlinked}}.
}}
{{ambox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices, such as {{tl|current}} and {{tl|in use}}.
}}
{{Ambox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|copy to Wiktionary}}.
}}
{{Ambox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices, such as {{tl|pp-vandalism}} and {{tl|pp-protected}}.
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files in Wikipedia (see [[Wikipedia:Manual of Style/Images#How to place an image]].) Widths of 40-50px are typical. For example:
* {{Tl|POV}} specifies {{Para|image|<nowiki>[[File:Unbalanced scales.svg|40px|link=|alt=]]</nowiki>}} and looks like this:
{{POV|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
* {{tl|underlinked}} specifies {{para|image|<nowiki>[[File:Ambox wikify.svg|50x40px|link=|alt=]]</nowiki>}} and looks like this:
{{underlinked|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
* If an icon is [[Wikipedia:Alternative text for images#Purely decorative images|purely decorative]] and also in the [[Wikipedia:Image use policy#Public_domain|public domain]], [[Wikipedia:Manual of Style/Accessibility|accessibility]] can be improved by suppressing the link to the file page by adding "{{para|link}}{{para|alt}}" as seen above.
=== ''sect'' ===
Many article message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
{{em|If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.}}
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. For example, {{tlx|Advert|section}} produces:
{{Advert|section|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. Another is to use {{tlx|Yesno}} to parse the value for a positive, and pass {{para|sect|section}} if true.
{{em|These approaches can be combined}}, and this is recommended. The following ready-to-use code:
{{block indent|1=<code><nowiki>| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}</nowiki></code>}}
enables the following:
* Any positive value that {{tlx|Yesno}} can detect will be used with the named parameter in the ambox-based template to get "section" instead of "article": {{para|section|y}}, {{para|sect|True}}, etc. It is recommended to allow both {{para|sect}} and {{para|section}} so that editors do not have to guess which one will work. The sample code above does this for you.
* Any other value passed, in any manner, will replace "article": {{para||section and its subsections}}, {{para|1|list}}, {{para|sect|section}}, {{para|section|table}}, etc.
It is also advisable to restrict use of the {{para|small}} parameter so that it is made contingent upon the template being applied to a section (or whatever) rather than the whole article, to prevent the small version of the template being used at the top of the article where it would be inconsistent with other article-wide cleanup/dispute banners:
{{block indent|1=<code><nowiki>| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}</nowiki></code>}}
(In this case, any value of {{para|small}} or {{para|left}} will trigger the small, left display, as long as some value of {{para|sect}} or one of its aliases in that template has also been provided.) This code can be copy-pasted and used with the above code block. See, e.g., [[Template:Trivia]] and its [[Template:Trivia/testcases]] to observe the combined functionality.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the article. Try to keep it short and to-the-point (approximately 10-20 words) and be sure to include a link to a relevant [[Wikipedia:Policies and guidelines|policy or guideline]].
The ''fix'' parameter contains some text which describes what should be done to improve the article. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its compact form (when placed inside {{tl|multiple issues}}) or small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example, {{Tl|Citation style}} defines
* <code>|issue=<nowiki>This article '''has an unclear citation style'''.</nowiki></code>
* <code>|fix=<nowiki>The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]], [[Wikipedia:Footnotes|footnoting]], or [[Wikipedia:External links|external linking]].</nowiki></code>
When used stand-alone it produces the whole text:
{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
But when used inside {{Tl|Multiple issues}} or with {{Para|small|left}} it displays only the issue:
{{Multiple issues <!-- Even though there's only one "issue", please don't remove this {{Multiple issues}} template. It is a demonstration of the formatting. --> |{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}}}
{{Citation style|small=left|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
=== ''talk'' ===
Some article message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. {{para|talk|<nowiki>{{{talk|}}}</nowiki>}}
This parameter may then be used by an editor as follows:
* {{para|talk|SECTION HEADING}} – the link will point to the specified section on the article's talk page, e.g. {{para|talk|Foo}}
* {{para|talk|FULL PAGE NAME}} – the template will link to the page specified (which may include a [[Help:Link#Section linking (anchors)|section anchor]]), e.g. {{para|talk|Talk:Banana#Foo}}
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use {{para|talk|<nowiki>{{{talk|#}}}</nowiki>}}.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a [[Wikipedia:Bots|bot]]). This will be displayed after the message in a smaller font.
Passing this parameter also enables [[:Category:Wikipedia maintenance categories sorted by month|monthly cleanup categorisation]] when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date, and will not be displayed if the template is being wrapped in {{tl|multiple issues}}.
=== ''removalnotice'' ===
If you specify {{para|removalnotice|yes}}, then the following notice will be displayed after the date and after the ''info'' text:
* <small>[[Help:Maintenance template removal|Learn how and when to remove this template message]].</small>
This will not be displayed if the template is being wrapped in {{tl|multiple issues}}.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If {{para|cat|CATEGORY}} then:
* articles will be placed in '''Category:CATEGORY from DATE''' if {{para|date|DATE}} is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, {{Tl|No footnotes}} specifies {{Para|cat|Articles lacking in-text citations}} and so an article with the template {{Tlx|No footnotes|2=date=June 2010}} will be placed in [[:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Other parameters ==
{| class="wikitable" align="right" style="background:transparent; width=25%;"
!All parameters
|-
|<pre style="font-size:85%">
{{Ambox
| name =
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</pre>
|}
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* This meta-template uses the ambox CSS classes in [[MediaWiki:Common.css]]. The classes can also be used directly in a [[Help:Table|wikitable]] if special functionality is needed. See the [[Wikipedia:Ambox classes|how-to guide]] for that.
* If you need to use special characters in the text parameter then you need to escape them like this:
<pre>
{{Ambox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</pre>
{{Ambox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* This template uses CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable.
* This template calls [[Module:Message box]] which holds most of the code for {{Tl|Ambox}}, while {{Tl|Ambox}} itself does parameter preprocessing.
* Internally, this meta-template uses HTML markup instead of wikimarkup for the table code. That is the usual way meta-templates are made, since wikimarkup has several drawbacks. For instance, it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and some special characters in parameters.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
* For more technical details see the [[Template talk:Ambox|talk page]] and the "See also" links below. Since this template works almost exactly like {{Tl|Tmbox}}, {{Tl|Imbox}}, {{Tl|Cmbox}} and {{Tl|Ombox}} their talk pages and related pages might also contain more details.
== Mbox family ==
{{Mbox templates see also}}
== See also ==
* [[Wikipedia:Ambox CSS classes|Wikipedia:Ambox CSS classes]] – Describes how to use the ambox CSS classes directly in [[Help:Table|wikitables]] and [[HTML element#Tables|HTML tables]].
* [[Wikipedia:Article message boxes|Wikipedia:Article message boxes]] – The style guideline for creating article message boxes.
* [[Wikipedia talk:Article message boxes|Wikipedia talk:Article message boxes]] – For discussion about these matters.
<includeonly>{{sandbox other||
<!-- Add categories below this line, and interwikis at Wikidata -->
[[Category:Article message templates| ]]
[[Category:Mbox and messagebox templates]]
[[Category:Exclude in print]]
}}</includeonly>
ry8mh39zofulrcm5llnv0jvey9a5hdi
Template:Ambox/testcases
10
1193
2618
2617
2020-09-29T19:18:01Z
Chrisb
1
1 revision imported
2617
wikitext
text/x-wiki
{{template test cases notice}}
= Intentional changes =
== small=y text=text ==
;Main
<code><nowiki>{{ambox|small=y|text=text}}</nowiki></code>
{{ambox|small=y|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=y|text=text}}</nowiki></code>
{{ambox/sandbox|small=y|text=text}}
{{clear}}
== small=true text=text ==
;Main
<code><nowiki>{{ambox|small=true|text=text}}</nowiki></code>
{{ambox|small=true|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=true|text=text}}</nowiki></code>
{{ambox/sandbox|small=true|text=text}}
{{clear}}
== small=1 text=text ==
;Main
<code><nowiki>{{ambox|small=1|text=text}}</nowiki></code>
{{ambox|small=1|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=1|text=text}}</nowiki></code>
{{ambox/sandbox|small=1|text=text}}
{{clear}}
== nocat=yes text=text ==
;Main
<code><nowiki>{{ambox|nocat=yes|text=text}}</nowiki></code>
{{ambox|nocat=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=yes|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=yes|text=text}}
{{clear}}
== nocat=y text=text ==
;Main
<code><nowiki>{{ambox|nocat=y|text=text}}</nowiki></code>
{{ambox|nocat=y|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=y|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=y|text=text}}
{{clear}}
== nocat=1 text=text ==
;Main
<code><nowiki>{{ambox|nocat=1|text=text}}</nowiki></code>
{{ambox|nocat=1|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=1|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=1|text=text}}
{{clear}}
== nocat=no text=text ==
;Main
<code><nowiki>{{ambox|nocat=no|text=text}}</nowiki></code>
{{ambox|nocat=no|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=no|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=no|text=text}}
{{clear}}
== nocat=n text=text ==
;Main
<code><nowiki>{{ambox|nocat=n|text=text}}</nowiki></code>
{{ambox|nocat=n|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=n|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=n|text=text}}
{{clear}}
== nocat=0 text=text ==
;Main
<code><nowiki>{{ambox|nocat=0|text=text}}</nowiki></code>
{{ambox|nocat=0|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=0|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=0|text=text}}
{{clear}}
== cat4=cat4 text=text ==
;Main
<code><nowiki>{{ambox|cat4=[[cat4]]|text=text}}</nowiki></code>
{{ambox|cat4=[[cat4]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|cat4=[[cat4]]|text=text}}</nowiki></code>
{{ambox/sandbox|cat4=[[cat4]]|text=text}}
{{clear}}
== category4=category4 text=text ==
;Main
<code><nowiki>{{ambox|category4=[[category4]]|text=text}}</nowiki></code>
{{ambox|category4=[[category4]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|category4=[[category4]]|text=text}}</nowiki></code>
{{ambox/sandbox|category4=[[category4]]|text=text}}
{{clear}}
== all4=all4 text=text ==
;Main
<code><nowiki>{{ambox|all4=[[all4]]|text=text}}</nowiki></code>
{{ambox|all4=[[all4]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|all4=[[all4]]|text=text}}</nowiki></code>
{{ambox/sandbox|all4=[[all4]]|text=text}}
{{clear}}
== talk= name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|talk=|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|talk=|name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|talk=|name=foo|page=template:foo|text=text}}
{{clear}}
== talk= name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|talk= |name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|talk= |name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk= |name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|talk= |name=foo|page=template:foo|text=text}}
{{clear}}
== name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|name=foo|page=template:foo|text=text}}
{{clear}}
== date= name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|date=|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|date=|name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|date=|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|date=|name=foo|page=template:foo|text=text}}
{{clear}}
== date= name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|date= |name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|date= |name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|date= |name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|date= |name=foo|page=template:foo|text=text}}
{{clear}}
== name=foo page=template:foo text=text ==
;Main
<code><nowiki>{{ambox|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox|name=foo|page=template:foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name=foo|page=template:foo|text=text}}</nowiki></code>
{{ambox/sandbox|name=foo|page=template:foo|text=text}}
{{clear}}
== page=Template:Foo name=Foo text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|text=text}}
{{clear}}
== page=Template:Foo name=Foo issue=issue text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|issue=issue|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|issue=issue|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|issue=issue|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|issue=issue|text=text}}
{{clear}}
== page=Template:Foo name=Foo fix=fix text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|fix=fix|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|fix=fix|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|fix=fix|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|fix=fix|text=text}}
{{clear}}
== page=Template:Foo name=Foo subst=subst text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|subst=subst|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|subst=subst|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|text=text}}
{{clear}}
== page=Template:Foo name=Foo subst=subst issue=issue fix=fix text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}
{{clear}}
== page=Template:Foo name=Foo category1=category1 text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}
{{clear}}
== page=Template:Foo name=Foo category2=category2 text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}
{{clear}}
== page=Template:Foo name=Foo category3=category3 text=text ==
;Main
<code><nowiki>{{ambox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}</nowiki></code>
{{ambox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}</nowiki></code>
{{ambox/sandbox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}
{{clear}}
= Cases that should be the same as the existing template output =
== subst=SUBST text=text ==
;Main
<code><nowiki>{{ambox|subst=SUBST|text=text}}</nowiki></code>
{{ambox|subst=SUBST|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst=SUBST|text=text}}</nowiki></code>
{{ambox/sandbox|subst=SUBST|text=text}}
{{clear}}
== subst= SUBST text=text ==
;Main
<code><nowiki>{{ambox|subst= SUBST |text=text}}</nowiki></code>
{{ambox|subst= SUBST |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst= SUBST |text=text}}</nowiki></code>
{{ambox/sandbox|subst= SUBST |text=text}}
{{clear}}
== subst=subst text=text ==
;Main
<code><nowiki>{{ambox|subst=subst|text=text}}</nowiki></code>
{{ambox|subst=subst|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst=subst|text=text}}</nowiki></code>
{{ambox/sandbox|subst=subst|text=text}}
{{clear}}
== subst=foo text=text ==
;Main
<code><nowiki>{{ambox|subst=foo|text=text}}</nowiki></code>
{{ambox|subst=foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst=foo|text=text}}</nowiki></code>
{{ambox/sandbox|subst=foo|text=text}}
{{clear}}
== subst= text=text ==
;Main
<code><nowiki>{{ambox|subst= |text=text}}</nowiki></code>
{{ambox|subst= |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst= |text=text}}</nowiki></code>
{{ambox/sandbox|subst= |text=text}}
{{clear}}
== subst= text=text ==
;Main
<code><nowiki>{{ambox|subst=|text=text}}</nowiki></code>
{{ambox|subst=|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst=|text=text}}</nowiki></code>
{{ambox/sandbox|subst=|text=text}}
{{clear}}
== subst=SUBST name=Foo text=text ==
;Main
<code><nowiki>{{ambox|subst=SUBST|name=Foo|text=text}}</nowiki></code>
{{ambox|subst=SUBST|name=Foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|subst=SUBST|name=Foo|text=text}}</nowiki></code>
{{ambox/sandbox|subst=SUBST|name=Foo|text=text}}
{{clear}}
== name=Foo text=text ==
;Main
<code><nowiki>{{ambox|name=Foo|text=text}}</nowiki></code>
{{ambox|name=Foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name=Foo|text=text}}</nowiki></code>
{{ambox/sandbox|name=Foo|text=text}}
{{clear}}
== name= Foo text=text ==
;Main
<code><nowiki>{{ambox|name= Foo |text=text}}</nowiki></code>
{{ambox|name= Foo |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name= Foo |text=text}}</nowiki></code>
{{ambox/sandbox|name= Foo |text=text}}
{{clear}}
== name= text=text ==
;Main
<code><nowiki>{{ambox|name= |text=text}}</nowiki></code>
{{ambox|name= |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name= |text=text}}</nowiki></code>
{{ambox/sandbox|name= |text=text}}
{{clear}}
== name= text=text ==
;Main
<code><nowiki>{{ambox|name=|text=text}}</nowiki></code>
{{ambox|name=|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|name=|text=text}}</nowiki></code>
{{ambox/sandbox|name=|text=text}}
{{clear}}
== type=speedy text=text ==
;Main
<code><nowiki>{{ambox|type=speedy|text=text}}</nowiki></code>
{{ambox|type=speedy|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=speedy|text=text}}</nowiki></code>
{{ambox/sandbox|type=speedy|text=text}}
{{clear}}
== type=delete text=text ==
;Main
<code><nowiki>{{ambox|type=delete|text=text}}</nowiki></code>
{{ambox|type=delete|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=delete|text=text}}</nowiki></code>
{{ambox/sandbox|type=delete|text=text}}
{{clear}}
== type=content text=text ==
;Main
<code><nowiki>{{ambox|type=content|text=text}}</nowiki></code>
{{ambox|type=content|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=content|text=text}}</nowiki></code>
{{ambox/sandbox|type=content|text=text}}
{{clear}}
== type=style text=text ==
;Main
<code><nowiki>{{ambox|type=style|text=text}}</nowiki></code>
{{ambox|type=style|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=style|text=text}}</nowiki></code>
{{ambox/sandbox|type=style|text=text}}
{{clear}}
== type=move text=text ==
;Main
<code><nowiki>{{ambox|type=move|text=text}}</nowiki></code>
{{ambox|type=move|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=move|text=text}}</nowiki></code>
{{ambox/sandbox|type=move|text=text}}
{{clear}}
== type=protection text=text ==
;Main
<code><nowiki>{{ambox|type=protection|text=text}}</nowiki></code>
{{ambox|type=protection|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=protection|text=text}}</nowiki></code>
{{ambox/sandbox|type=protection|text=text}}
{{clear}}
== type=licence text=text ==
;Main
<code><nowiki>{{ambox|type=licence|text=text}}</nowiki></code>
{{ambox|type=licence|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=licence|text=text}}</nowiki></code>
{{ambox/sandbox|type=license|text=text}}
{{clear}}
== type=featured text=text ==
;Main
<code><nowiki>{{ambox|type=featured|text=text}}</nowiki></code>
{{ambox|type=featured|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=featured|text=text}}</nowiki></code>
{{ambox/sandbox|type=featured|text=text}}
{{clear}}
== type=warning text=text ==
;Main
<code><nowiki>{{ambox|type=warning|text=text}}</nowiki></code>
{{ambox|type=warning|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=warning|text=text}}</nowiki></code>
{{ambox/sandbox|type=warning|text=text}}
{{clear}}
== type=editnotice text=text ==
;Main
<code><nowiki>{{ambox|type=editnotice|text=text}}</nowiki></code>
{{ambox|type=editnotice|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=editnotice|text=text}}</nowiki></code>
{{ambox/sandbox|type=editnotice|text=text}}
{{clear}}
== type=system text=text ==
;Main
<code><nowiki>{{ambox|type=system|text=text}}</nowiki></code>
{{ambox|type=system|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=system|text=text}}</nowiki></code>
{{ambox/sandbox|type=system|text=text}}
{{clear}}
== type=notice text=text ==
;Main
<code><nowiki>{{ambox|type=notice|text=text}}</nowiki></code>
{{ambox|type=notice|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=notice|text=text}}</nowiki></code>
{{ambox/sandbox|type=notice|text=text}}
{{clear}}
== type= speedy text=text ==
;Main
<code><nowiki>{{ambox|type= speedy |text=text}}</nowiki></code>
{{ambox|type= speedy |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type= speedy |text=text}}</nowiki></code>
{{ambox/sandbox|type= speedy |text=text}}
{{clear}}
== small=yes text=text ==
;Main
<code><nowiki>{{ambox|small=yes|text=text}}</nowiki></code>
{{ambox|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|small=yes|text=text}}
{{clear}}
== small= yes text=text ==
;Main
<code><nowiki>{{ambox|small= yes |text=text}}</nowiki></code>
{{ambox|small= yes |text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small= yes |text=text}}</nowiki></code>
{{ambox/sandbox|small= yes |text=text}}
{{clear}}
== small=left text=text ==
;Main
<code><nowiki>{{ambox|small=left|text=text}}</nowiki></code>
{{ambox|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|small=left|text=text}}
{{clear}}
== small=foo text=text ==
;Main
<code><nowiki>{{ambox|small=foo|text=text}}</nowiki></code>
{{ambox|small=foo|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|small=foo|text=text}}</nowiki></code>
{{ambox/sandbox|small=foo|text=text}}
{{clear}}
== type=speedy small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=speedy|small=yes|text=text}}</nowiki></code>
{{ambox|type=speedy|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=speedy|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=speedy|small=yes|text=text}}
{{clear}}
== type=delete small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=delete|small=yes|text=text}}</nowiki></code>
{{ambox|type=delete|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=delete|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=delete|small=yes|text=text}}
{{clear}}
== type=content small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=content|small=yes|text=text}}</nowiki></code>
{{ambox|type=content|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=content|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=content|small=yes|text=text}}
{{clear}}
== type=style small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=style|small=yes|text=text}}</nowiki></code>
{{ambox|type=style|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=style|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=style|small=yes|text=text}}
{{clear}}
== type=move small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=move|small=yes|text=text}}</nowiki></code>
{{ambox|type=move|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=move|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=move|small=yes|text=text}}
{{clear}}
== type=protection small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=protection|small=yes|text=text}}</nowiki></code>
{{ambox|type=protection|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=protection|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=protection|small=yes|text=text}}
{{clear}}
== type=licence small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=licence|small=yes|text=text}}</nowiki></code>
{{ambox|type=licence|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=licence|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=licence|small=yes|text=text}}
{{clear}}
== type=featured small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=featured|small=yes|text=text}}</nowiki></code>
{{ambox|type=featured|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=featured|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=featured|small=yes|text=text}}
{{clear}}
== type=warning small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=warning|small=yes|text=text}}</nowiki></code>
{{ambox|type=warning|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=warning|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=warning|small=yes|text=text}}
{{clear}}
== type=editnotice small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=editnotice|small=yes|text=text}}</nowiki></code>
{{ambox|type=editnotice|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=editnotice|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=editnotice|small=yes|text=text}}
{{clear}}
== type=system small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=system|small=yes|text=text}}</nowiki></code>
{{ambox|type=system|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=system|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=system|small=yes|text=text}}
{{clear}}
== type=notice small=yes text=text ==
;Main
<code><nowiki>{{ambox|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox|type=notice|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|type=notice|small=yes|text=text}}
{{clear}}
== type=speedy small=left text=text ==
;Main
<code><nowiki>{{ambox|type=speedy|small=left|text=text}}</nowiki></code>
{{ambox|type=speedy|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=speedy|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=speedy|small=left|text=text}}
{{clear}}
== type=delete small=left text=text ==
;Main
<code><nowiki>{{ambox|type=delete|small=left|text=text}}</nowiki></code>
{{ambox|type=delete|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=delete|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=delete|small=left|text=text}}
{{clear}}
== type=content small=left text=text ==
;Main
<code><nowiki>{{ambox|type=content|small=left|text=text}}</nowiki></code>
{{ambox|type=content|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=content|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=content|small=left|text=text}}
{{clear}}
== type=style small=left text=text ==
;Main
<code><nowiki>{{ambox|type=style|small=left|text=text}}</nowiki></code>
{{ambox|type=style|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=style|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=style|small=left|text=text}}
{{clear}}
== type=move small=left text=text ==
;Main
<code><nowiki>{{ambox|type=move|small=left|text=text}}</nowiki></code>
{{ambox|type=move|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=move|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=move|small=left|text=text}}
{{clear}}
== type=protection small=left text=text ==
;Main
<code><nowiki>{{ambox|type=protection|small=left|text=text}}</nowiki></code>
{{ambox|type=protection|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=protection|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=protection|small=left|text=text}}
{{clear}}
== type=licence small=left text=text ==
;Main
<code><nowiki>{{ambox|type=licence|small=left|text=text}}</nowiki></code>
{{ambox|type=licence|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=licence|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=licence|small=left|text=text}}
{{clear}}
== type=featured small=left text=text ==
;Main
<code><nowiki>{{ambox|type=featured|small=left|text=text}}</nowiki></code>
{{ambox|type=featured|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=featured|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=featured|small=left|text=text}}
{{clear}}
== type=warning small=left text=text ==
;Main
<code><nowiki>{{ambox|type=warning|small=left|text=text}}</nowiki></code>
{{ambox|type=warning|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=warning|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=warning|small=left|text=text}}
{{clear}}
== type=editnotice small=left text=text ==
;Main
<code><nowiki>{{ambox|type=editnotice|small=left|text=text}}</nowiki></code>
{{ambox|type=editnotice|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=editnotice|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=editnotice|small=left|text=text}}
{{clear}}
== type=system small=left text=text ==
;Main
<code><nowiki>{{ambox|type=system|small=left|text=text}}</nowiki></code>
{{ambox|type=system|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=system|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=system|small=left|text=text}}
{{clear}}
== type=notice small=left text=text ==
;Main
<code><nowiki>{{ambox|type=notice|small=left|text=text}}</nowiki></code>
{{ambox|type=notice|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|type=notice|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|type=notice|small=left|text=text}}
{{clear}}
== image=none type=notice small=yes text=text ==
;Main
<code><nowiki>{{ambox|image=none|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox|image=none|type=notice|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=none|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|image=none|type=notice|small=yes|text=text}}
{{clear}}
== image=none type=notice small=left text=text ==
;Main
<code><nowiki>{{ambox|image=none|type=notice|small=left|text=text}}</nowiki></code>
{{ambox|image=none|type=notice|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=none|type=notice|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|image=none|type=notice|small=left|text=text}}
{{clear}}
== image=none type=notice text=text ==
;Main
<code><nowiki>{{ambox|image=none|type=notice|text=text}}</nowiki></code>
{{ambox|image=none|type=notice|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=none|type=notice|text=text}}</nowiki></code>
{{ambox/sandbox|image=none|type=notice|text=text}}
{{clear}}
== image=blank type=notice small=yes text=text ==
;Main
<code><nowiki>{{ambox|image=blank|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox|image=blank|type=notice|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=blank|type=notice|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|image=blank|type=notice|small=yes|text=text}}
{{clear}}
== image=blank type=notice small=left text=text ==
;Main
<code><nowiki>{{ambox|image=blank|type=notice|small=left|text=text}}</nowiki></code>
{{ambox|image=blank|type=notice|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=blank|type=notice|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|image=blank|type=notice|small=left|text=text}}
{{clear}}
== image=blank type=notice text=text ==
;Main
<code><nowiki>{{ambox|image=blank|type=notice|text=text}}</nowiki></code>
{{ambox|image=blank|type=notice|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=blank|type=notice|text=text}}</nowiki></code>
{{ambox/sandbox|image=blank|type=notice|text=text}}
{{clear}}
== image=File:Example.png 35x35px text=text ==
;Main
<code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px image=File:Example.png 35x35px text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
== imageright=File:Example.png 35x35px text=text ==
;Main
<code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}
{{clear}}
== image=File:Example.png 35x35px small=yes text=text ==
;Main
<code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px small=yes text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px image=File:Example.png 35x35px small=yes text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
== imageright=File:Example.png 35x35px small=yes text=text ==
;Main
<code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px small=yes text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px small=yes text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}
{{clear}}
== image=File:Example.png 35x35px small=left text=text ==
;Main
<code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px small=left text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}
{{clear}}
== smallimage=File:Example.png 25x25px image=File:Example.png 35x35px small=left text=text ==
;Main
<code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
== imageright=File:Example.png 35x35px small=left text=text ==
;Main
<code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px small=left text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}
{{clear}}
== smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px small=left text=text ==
;Main
<code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}
{{clear}}
== class=ambox-style text=text ==
;Main
<code><nowiki>{{ambox|class=ambox-style|text=text}}</nowiki></code>
{{ambox|class=ambox-style|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|class=ambox-style|text=text}}</nowiki></code>
{{ambox/sandbox|class=ambox-style|text=text}}
{{clear}}
== style=font-size:120%; text=text ==
;Main
<code><nowiki>{{ambox|style=font-size:120%;|text=text}}</nowiki></code>
{{ambox|style=font-size:120%;|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|style=font-size:120%;|text=text}}</nowiki></code>
{{ambox/sandbox|style=font-size:120%;|text=text}}
{{clear}}
== textstyle=font-size:80%; text=text ==
;Main
<code><nowiki>{{ambox|textstyle=font-size:80%;|text=text}}</nowiki></code>
{{ambox|textstyle=font-size:80%;|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|textstyle=font-size:80%;|text=text}}</nowiki></code>
{{ambox/sandbox|textstyle=font-size:80%;|text=text}}
{{clear}}
== smalltext=smalltext ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext}}</nowiki></code>
{{ambox|smalltext=smalltext}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext}}
{{clear}}
== smalltext=smalltext small=yes ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext|small=yes}}</nowiki></code>
{{ambox|smalltext=smalltext|small=yes}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext|small=yes}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext|small=yes}}
{{clear}}
== smalltext=smalltext small=left ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext|small=left}}</nowiki></code>
{{ambox|smalltext=smalltext|small=left}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext|small=left}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext|small=left}}
{{clear}}
== smalltext=smalltext text=text ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext|text=text}}</nowiki></code>
{{ambox|smalltext=smalltext|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext|text=text}}
{{clear}}
== smalltext=smalltext text=text small=yes ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext|text=text|small=yes}}</nowiki></code>
{{ambox|smalltext=smalltext|text=text|small=yes}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text|small=yes}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext|text=text|small=yes}}
{{clear}}
== smalltext=smalltext text=text small=left ==
;Main
<code><nowiki>{{ambox|smalltext=smalltext|text=text|small=left}}</nowiki></code>
{{ambox|smalltext=smalltext|text=text|small=left}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text|small=left}}</nowiki></code>
{{ambox/sandbox|smalltext=smalltext|text=text|small=left}}
{{clear}}
== talk=talk text=text ==
;Main
<code><nowiki>{{ambox|talk=talk|text=text}}</nowiki></code>
{{ambox|talk=talk|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=talk|text=text}}</nowiki></code>
{{ambox/sandbox|talk=talk|text=text}}
{{clear}}
== talk=talk small=yes text=text ==
;Main
<code><nowiki>{{ambox|talk=talk|small=yes|text=text}}</nowiki></code>
{{ambox|talk=talk|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=talk|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|talk=talk|small=yes|text=text}}
{{clear}}
== talk=talk small=left text=text ==
;Main
<code><nowiki>{{ambox|talk=talk|small=left|text=text}}</nowiki></code>
{{ambox|talk=talk|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=talk|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|talk=talk|small=left|text=text}}
{{clear}}
== sect=sect text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|text=text}}</nowiki></code>
{{ambox|sect=sect|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|text=text}}
{{clear}}
== sect=sect small=yes text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|small=yes|text=text}}</nowiki></code>
{{ambox|sect=sect|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|small=yes|text=text}}
{{clear}}
== sect=sect small=left text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|small=left|text=text}}</nowiki></code>
{{ambox|sect=sect|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|small=left|text=text}}
{{clear}}
== issue=issue text=text ==
;Main
<code><nowiki>{{ambox|issue=issue|text=text}}</nowiki></code>
{{ambox|issue=issue|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|issue=issue|text=text}}</nowiki></code>
{{ambox/sandbox|issue=issue|text=text}}
{{clear}}
== issue=issue small=yes text=text ==
;Main
<code><nowiki>{{ambox|issue=issue|small=yes|text=text}}</nowiki></code>
{{ambox|issue=issue|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|issue=issue|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|issue=issue|small=yes|text=text}}
{{clear}}
== issue=issue small=left text=text ==
;Main
<code><nowiki>{{ambox|issue=issue|small=left|text=text}}</nowiki></code>
{{ambox|issue=issue|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|issue=issue|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|issue=issue|small=left|text=text}}
{{clear}}
== text=text ==
;Main
<code><nowiki>{{ambox|text=text}}</nowiki></code>
{{ambox|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|text=text}}</nowiki></code>
{{ambox/sandbox|text=text}}
{{clear}}
== text=text small=yes ==
;Main
<code><nowiki>{{ambox|text=text|small=yes}}</nowiki></code>
{{ambox|text=text|small=yes}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|text=text|small=yes}}</nowiki></code>
{{ambox/sandbox|text=text|small=yes}}
{{clear}}
== text=text small=left ==
;Main
<code><nowiki>{{ambox|text=text|small=left}}</nowiki></code>
{{ambox|text=text|small=left}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|text=text|small=left}}</nowiki></code>
{{ambox/sandbox|text=text|small=left}}
{{clear}}
== fix=fix text=text ==
;Main
<code><nowiki>{{ambox|fix=fix|text=text}}</nowiki></code>
{{ambox|fix=fix|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|fix=fix|text=text}}</nowiki></code>
{{ambox/sandbox|fix=fix|text=text}}
{{clear}}
== fix=fix small=yes text=text ==
;Main
<code><nowiki>{{ambox|fix=fix|small=yes|text=text}}</nowiki></code>
{{ambox|fix=fix|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|fix=fix|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|fix=fix|small=yes|text=text}}
{{clear}}
== fix=fix small=left text=text ==
;Main
<code><nowiki>{{ambox|fix=fix|small=left|text=text}}</nowiki></code>
{{ambox|fix=fix|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|fix=fix|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|fix=fix|small=left|text=text}}
{{clear}}
== date=date text=text ==
;Main
<code><nowiki>{{ambox|date=date|text=text}}</nowiki></code>
{{ambox|date=date|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|date=date|text=text}}</nowiki></code>
{{ambox/sandbox|date=date|text=text}}
{{clear}}
== date=date small=yes text=text ==
;Main
<code><nowiki>{{ambox|date=date|small=yes|text=text}}</nowiki></code>
{{ambox|date=date|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|date=date|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|date=date|small=yes|text=text}}
{{clear}}
== date=date small=left text=text ==
;Main
<code><nowiki>{{ambox|date=date|small=left|text=text}}</nowiki></code>
{{ambox|date=date|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|date=date|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|date=date|small=left|text=text}}
{{clear}}
== info=info text=text ==
;Main
<code><nowiki>{{ambox|info=info|text=text}}</nowiki></code>
{{ambox|info=info|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|info=info|text=text}}</nowiki></code>
{{ambox/sandbox|info=info|text=text}}
{{clear}}
== info=info small=yes text=text ==
;Main
<code><nowiki>{{ambox|info=info|small=yes|text=text}}</nowiki></code>
{{ambox|info=info|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|info=info|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|info=info|small=yes|text=text}}
{{clear}}
== info=info small=left text=text ==
;Main
<code><nowiki>{{ambox|info=info|small=left|text=text}}</nowiki></code>
{{ambox|info=info|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|info=info|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|info=info|small=left|text=text}}
{{clear}}
== sect=sect issue=issue text=text fix=fix date=date info=info text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}</nowiki></code>
{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}
{{clear}}
== sect=sect issue=issue text=text fix=fix date=date info=info small=yes text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}</nowiki></code>
{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}
{{clear}}
== sect=sect issue=issue text=text fix=fix date=date info=info small=left text=text ==
;Main
<code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}</nowiki></code>
{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}</nowiki></code>
{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}
{{clear}}
== sect=sect issue=issue text=text fix=fix date=date info=info small=left text=text smalltext=smalltext ==
;Main
<code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}</nowiki></code>
{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}</nowiki></code>
{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}
{{clear}}
== sect=sect issue=issue text=text fix=fix date=date info=info small=yes text=text smalltext=smalltext ==
;Main
<code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}</nowiki></code>
{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}</nowiki></code>
{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}
{{clear}}
== nocat=true text=text ==
;Main
<code><nowiki>{{ambox|nocat=true|text=text}}</nowiki></code>
{{ambox|nocat=true|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=true|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=true|text=text}}
{{clear}}
== nocat=false text=text ==
;Main
<code><nowiki>{{ambox|nocat=false|text=text}}</nowiki></code>
{{ambox|nocat=false|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|nocat=false|text=text}}</nowiki></code>
{{ambox/sandbox|nocat=false|text=text}}
{{clear}}
== cat=cat text=text ==
;Main
<code><nowiki>{{ambox|cat=[[cat]]|text=text}}</nowiki></code>
{{ambox|cat=[[cat]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|cat=[[cat]]|text=text}}</nowiki></code>
{{ambox/sandbox|cat=[[cat]]|text=text}}
{{clear}}
== cat1=cat1 text=text ==
;Main
<code><nowiki>{{ambox|cat1=[[cat1]]|text=text}}</nowiki></code>
{{ambox|cat1=[[cat1]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|cat1=[[cat1]]|text=text}}</nowiki></code>
{{ambox/sandbox|cat1=[[cat1]]|text=text}}
{{clear}}
== cat2=cat2 text=text ==
;Main
<code><nowiki>{{ambox|cat2=[[cat2]]|text=text}}</nowiki></code>
{{ambox|cat2=[[cat2]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|cat2=[[cat2]]|text=text}}</nowiki></code>
{{ambox/sandbox|cat2=[[cat2]]|text=text}}
{{clear}}
== cat3=cat3 text=text ==
;Main
<code><nowiki>{{ambox|cat3=[[cat3]]|text=text}}</nowiki></code>
{{ambox|cat3=[[cat3]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|cat3=[[cat3]]|text=text}}</nowiki></code>
{{ambox/sandbox|cat3=[[cat3]]|text=text}}
{{clear}}
== category=category text=text ==
;Main
<code><nowiki>{{ambox|category=[[category]]|text=text}}</nowiki></code>
{{ambox|category=[[category]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|category=[[category]]|text=text}}</nowiki></code>
{{ambox/sandbox|category=[[category]]|text=text}}
{{clear}}
== category1=category1 text=text ==
;Main
<code><nowiki>{{ambox|category1=[[category1]]|text=text}}</nowiki></code>
{{ambox|category1=[[category1]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|category1=[[category1]]|text=text}}</nowiki></code>
{{ambox/sandbox|category1=[[category1]]|text=text}}
{{clear}}
== category2=category2 text=text ==
;Main
<code><nowiki>{{ambox|category2=[[category2]]|text=text}}</nowiki></code>
{{ambox|category2=[[category2]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|category2=[[category2]]|text=text}}</nowiki></code>
{{ambox/sandbox|category2=[[category2]]|text=text}}
{{clear}}
== category3=category3 text=text ==
;Main
<code><nowiki>{{ambox|category3=[[category3]]|text=text}}</nowiki></code>
{{ambox|category3=[[category3]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|category3=[[category3]]|text=text}}</nowiki></code>
{{ambox/sandbox|category3=[[category3]]|text=text}}
{{clear}}
== all=all text=text ==
;Main
<code><nowiki>{{ambox|all=[[all]]|text=text}}</nowiki></code>
{{ambox|all=[[all]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|all=[[all]]|text=text}}</nowiki></code>
{{ambox/sandbox|all=[[all]]|text=text}}
{{clear}}
== all1=all1 text=text ==
;Main
<code><nowiki>{{ambox|all1=[[all1]]|text=text}}</nowiki></code>
{{ambox|all1=[[all1]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|all1=[[all1]]|text=text}}</nowiki></code>
{{ambox/sandbox|all1=[[all1]]|text=text}}
{{clear}}
== all2=all2 text=text ==
;Main
<code><nowiki>{{ambox|all2=[[all2]]|text=text}}</nowiki></code>
{{ambox|all2=[[all2]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|all2=[[all2]]|text=text}}</nowiki></code>
{{ambox/sandbox|all2=[[all2]]|text=text}}
{{clear}}
== all3=all3 text=text ==
;Main
<code><nowiki>{{ambox|all3=[[all3]]|text=text}}</nowiki></code>
{{ambox|all3=[[all3]]|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|all3=[[all3]]|text=text}}</nowiki></code>
{{ambox/sandbox|all3=[[all3]]|text=text}}
{{clear}}
== below=below text=text ==
;Main
<code><nowiki>{{ambox|below=below|text=text}}</nowiki></code>
{{ambox|below=below|text=text}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|below=below|text=text}}</nowiki></code>
{{ambox/sandbox|below=below|text=text}}
{{clear}}
== Multiple issues ==
;Main
{{multiple issues|
{{ambox|issue=a|fix=b}}
{{ambox|issue=c|fix=d}}
{{ambox|issue=e|fix=f}}
}}
;Sandbox
{{multiple issues|
{{ambox/sandbox|issue=a|fix=b}}
{{ambox/sandbox|issue=c|fix=d}}
{{ambox/sandbox|issue=e|fix=f}}
}}
== Talk page section link ==
;Main
<code><nowiki>{{ambox|talk=foo|issue=issue|fix=fix}}</nowiki></code>
{{ambox|talk=foo|issue=issue|fix=fix}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=foo|issue=issue|fix=fix}}</nowiki></code>
{{ambox/sandbox|talk=foo|issue=issue|fix=fix}}
{{clear}}
== Full talk page link ==
;Main
<code><nowiki>{{ambox|talk=Talk:Foo|issue=issue|fix=fix}}</nowiki></code>
{{ambox|talk=Talk:Foo|issue=issue|fix=fix}}
{{clear}}
;Sandbox
<code><nowiki>{{ambox/sandbox|talk=Talk:Foo|issue=issue|fix=fix}}</nowiki></code>
{{ambox/sandbox|talk=Talk:Foo|issue=issue|fix=fix}}
{{clear}}
s8cd0hsuz05hnszm2kz3pw0vzq99jd1
Template:Anachronism
10
960
2152
2151
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2151
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Anachronism
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-anachronism
| sect = {{{1|}}}
| issue = '''contains statements that are [[anachronistic]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with anachronisms
| all = All articles with anachronisms
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
6mz6tzrlbeleor0sovneklcjq2cnvef
Template:Anchor
10
1293
2818
2817
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2817
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:anchor|main}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
cjfgfxc6tpjgpyvzhnbfkngu6u3spzc
Template:Animals cleanup
10
1282
2796
2795
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2795
wikitext
text/x-wiki
{{ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = {{#if:{{{section|}}}|This section of an|This}} animal-related article '''may require [[Wikipedia:Cleanup|cleanup]]''' to conform to a [[WP:Manual of Style|higher standard]] of quality.
| fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} improving it] if you can. The article's [[Talk:{{PAGENAME}}|talk page]] may have suggestions.
| name = Animals cleanup
| all = Animal articles needing cleanup
}}<noinclude>
{{documentation}}
</noinclude>
8m5u7t8gi2m7tbrdmizfqtkbbn6xnfi
Template:Any
10
1495
4638
4637
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4637
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="any table-any"|{{{1|Any}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
443bcz4y8reja901a5b2alkbcqdtcub
Template:Apple
10
1440
3184
3183
2020-10-11T01:32:02Z
Chrisb
1
1 revision imported
3183
wikitext
text/x-wiki
#REDIRECT [[Template:Apple Inc.]]
{{Redirect category shell|
{{R from move}}
}}
7fz32kw4by02cehvl6vzuiqxtez7jyi
Template:AppleIntel
10
1441
3186
3185
2020-10-11T01:32:02Z
Chrisb
1
1 revision imported
3185
wikitext
text/x-wiki
{{ sidebar
| title = {{normalwraplink|Mac transition to Intel processors}}
| class = hlist
| name = AppleIntel
| content1 =
* [[PowerPC]]
* [[Apple–Intel architecture|Architecture]]
* [[Universal binary]]
* [[Boot Camp (software)|Boot Camp]]
* [[Rosetta (software)|Rosetta]]
}}<noinclude>{{doc|content=
Note, the {{para|state}} parameter and "autocollapse" functionality cannot be used with this template.
{{Apple/doc}}
}}</noinclude>
pnzadta84dg71e9346ssm7fnm3ig4hw
Template:Apple Inc.
10
1442
3188
3187
2020-10-11T01:32:02Z
Chrisb
1
1 revision imported
3187
wikitext
text/x-wiki
{{Navbox
|name = Apple Inc.
|title = [[Apple Inc.]]
|state = {{{state|autocollapse}}}
|bodyclass = hlist
|image = [[File:Apple logo black.svg|65px]]
|above =
* [[History of Apple Inc.|History]]
* [[Outline of Apple Inc.|Outline]]
|group1 = [[:Category:Apple Inc. products|Products]]
|list1 =
{{Navbox|child
|group1 = [[:Category:Apple Inc. hardware|Hardware]]
|list1 =
{{Navbox|child
|list1 =
* [[iPhone]]
* [[Apple TV]]
* [[Apple Watch]]
* [[AirPods]]
** [[AirPods Pro|Pro]]
* [[Beats Electronics]]
* [[Beats Pill]]
* [[HomePod]]
* [[Apple-designed processors|Silicon chips]]
|group2 = Mac
|list2 =
* [[Macintosh|Mac]]
** [[iMac]]
** [[iMac Pro]]
** [[MacBook]]
** [[Mac Mini]]
** [[Mac Pro]]
* [[Comparison of Macintosh models]]
|group3 = iPod
|list3 =
* [[iPod]]
** ''[[iPod Classic|Classic]]''
** ''[[iPod Nano|Nano]]''
** ''[[iPod Shuffle|Shuffle]]''
** [[iPod Touch|Touch]]
|group4 = iPad
|list4 =
* [[iPad]]
** [[iPad Mini|Mini]]
** [[iPad Air|Air]]
** [[iPad Pro|Pro]]
** [[List of iPad accessories|Accessories]]
}}
|group2 = [[:Category:Apple Inc. software|Software]]
|list2 =
* ''[[Classic Mac OS]]''
** ''[[AppleWorks|ClarisWorks/AppleWorks]]''
** ''[[HyperCard]]''
* [[Darwin (operating system)|Darwin]]
* [[macOS]]
** [[macOS version history|History]]
** [[macOS Server|Server]]
** [[List of Macintosh software|Software]]
* [[iOS]]
** [[iOS version history|History]]
* [[watchOS]]
* [[tvOS]]
* [[audioOS]]
* [[iPadOS]]
* [[CarPlay]]
* [[HomeKit]]
* [[Core Foundation]]
* [[Apple Developer Tools|Developer Tools]]
* [[FileMaker]]
** ''[[Bento (database)|Bento]]''
* [[Final Cut Pro X]]
** [[Compressor (software)|Compressor]]
** [[Motion (software)|Motion]]
* [[Logic Pro]]
** [[MainStage (software)|MainStage]]
* [[iLife]]
** [[GarageBand]]
** [[iMovie]]
** [[iTunes]]
* [[iWork]]
** [[Keynote (presentation software)|Keynote]]
** [[Numbers (spreadsheet)|Numbers]]
** [[Pages (word processor)|Pages]]
* [[QuickTime]]
* [[Shazam (application)|Shazam]]
* [[Siri]]
* Education
** ''[[At Ease]]''
** [[Classroom (Apple)|Classroom]]
** [[Schoolwork (Apple)|Schoolwork]]
}}
|group2 = [[:Category:Apple Inc. services|Services]]
|list2 =
{{Navbox|child
|list1 =
* [[Apple ID]]
** [[Sign In with Apple]]
* [[Apple Developer|Developer]]
** [[App Store Connect]]
** ''[[iAd]]''
** [[TestFlight]]
** [[Apple Worldwide Developers Conference|WWDC]]
* [[FaceTime]]
* [[Game Center]]
* [[iCloud]]
** [[iTunes Match]]
** ''[[MobileMe]]''
** [[Apple Photos|Photos]]
* [[iMessage]]
* [[Apple Maps|Maps]]
** [[Apple Look Around|Look Around]]
|group2 = Financial
|list2 =
* [[Apple Card]]
* [[Apple Pay]]
** [[Apple Pay Cash|Cash]]
* [[Apple Wallet]]
|group3 = Media
|list3 =
* [[Apple Arcade|Arcade]]
** [[List of Apple Arcade games|List of games]]
* [[Apple Music|Music]]
** [[Beats 1]]
** ''[[Beats Connect|Connect]]''
** ''[[Beats Music]]''
** ''[[Apple Music Up Next|Up Next]]''
** ''[[Apple Music Festival|iTunes Festival/<wbr />Apple Music Festival]]''
** ''[[iTunes Radio]]''
* [[Apple News|News]]
** [[Apple News+|+]]
** ''[[Newsstand (software)|Newsstand]]''
* [[Podcasts (app)|Podcasts]]
* [[Apple TV (software)|TV]]
** [[Apple TV+|+]]
*** [[List of Apple TV+ original programming|List of programs]]
** [[Apple TV Channels|Channels]]
|group4 = [[Apple Store|Stores]]
|list4 =
* [[App store]]s
** [[App Store (iOS)|iOS]]
*** [[App Store (iMessage)|iMessage]]
*** [[App Store (iPadOS)|iPadOS]]
*** [[App Store (watchOS)|watchOS]]
** [[App Store (macOS)|macOS]]
** [[App Store (tvOS)|tvOS]]
* [[Apple Store]]
* [[Apple Books|Apple Books Store]]
* [[iTunes Store]]
** [[iTunes Connect]]
** ''[[iTunes U]]''
|group5 = Support
|list5 =
* [[AppleCare]]
* [[Apple Specialist]]
* [[Apple certification programs|Certifications]]
* [[Genius Bar]]
* [[JointVenture (Apple)|JointVenture]]
* ''[[ProCare]]''
* ''[[One to One (Apple)|One to One]]''
}}
|group3 = Companies
|list3 =
{{Navbox|child
|group1 = [[:Category:Apple Inc. subsidiaries|Subsidiaries]]
|list1 =
* [[Anobit]]
* [[Apple Energy]]
* [[Apple IMC]]
* [[Apple Sales International]]
* [[Apple Services]]
* [[Apple Worldwide Video]]
* [[Beats Electronics]]
* [[Beddit]]
* [[Braeburn Capital]]
* [[Claris]]
|group2 = [[:Category:Apple Inc. acquisitions|Acquisitions]]
|list2 =
* [[List of mergers and acquisitions by Apple|List]]
* [[Anobit]]
* [[AuthenTec|AuthenTec Inc.]]
* [[Beats Electronics]]
* [[Beddit]]
* [[Cue (search engine)|Cue]]
* [[Emagic]]
* [[FingerWorks]]
* [[Intrinsity]]
* [[InVisage Technologies|InVisage Technologies]]
* [[Lala (website)|Lala]]
* [[NeXT]]
* [[Nothing Real]]
* [[Metaio]]
* [[P.A. Semi]]
* [[PrimeSense]]
* [[Shazam (application)|Shazam]]
* [[Siri]]
* [[Spotsetter]]
* [[Texture (app)|Texture]]
* [[Topsy Labs|Topsy]]
* [[EditGrid]]
|group3 = [[:Category:Apple Inc. partnerships|Partnerships]]
|list3 =
* ''[[AIM alliance]]''
** ''[[Kaleida Labs]]''
** ''[[Taligent]]''
* [[Akamai Technologies|Akamai]]
* [[Arm Holdings]]
* [[DiDi]]
* ''[[Digital Ocean]]''
* [[iFund]]
* [[Imagination Technologies|Imagination]]
* [[Rockstar Consortium]]
}}
|group4 = Related
|list4 =
* [[Apple Inc. advertising|Advertising]]
** [[1984 (advertisement)|1984]]
** [[Think different]]
** [[Get a Mac]]
** [[iPod advertising|iPods]]
** [[Product Red]]
* [[Apple Campus|Campus]]
** [[Apple Park|Park]]
** [[Apple University|University]]
* [[Apple Inc. design motifs|Design]]
** [[Apple Industrial Design Group|IDg]]
** [[Typography of Apple Inc.|Typography]]
** [[Designed by Apple in California|Book]]
* [[History of Apple Inc.|History]]
** [[List of Apple codenames|Codenames]]
** [[Apple community|Community]]
*** [[Apple Evangelist|Evangelist]]
*** [[Apple Fellow|Fellow]]
*** [[AppleMasters|Master]]
** [[Criticism of Apple Inc.|Criticism]]
** [[Apple Inc. litigation|Litigation]]
*** [[FBI–Apple encryption dispute]]
** [[iOS app approvals]]
* [[List of artistic depictions of Steve Jobs|Artistic depictions of Steve Jobs]]
|group5 = People
|list5 =
{{Navbox|child
|group1 = [[:Category:Apple Inc. executives|Executives]]
|list1 =
{{Navbox|child
|group1 = Current
|list1 =
* [[Tim Cook]] (CEO)
* [[Jeff Williams (Apple)|Jeff Williams]] (COO)
* [[Luca Maestri]] (CFO)
* [[Katherine L. Adams|Katherine Adams]] (General Counsel)
* [[Eddy Cue]]
* [[Craig Federighi]]
* [[Isabel Ge Mahe]]
* [[John Giannandrea]]
* [[Lisa P. Jackson|Lisa Jackson]]
* Sabih Khan
* Tor Myhren
* [[Deirdre O'Brien]]
* Adrian Perica
* [[Dan Riccio]]
* [[Phil Schiller]]
* [[Johny Srouji]]
* Greg Joswiak
|group2 = Former
|list2 =
* [[Michael Scott (Apple)|Michael Scott]] (CEO)
* [[Mike Markkula]] (CEO)
* [[John Sculley]] (CEO)
* [[Michael Spindler]] (CEO)
* [[Gil Amelio]] (CEO)
* [[Steve Jobs]] (CEO)
* [[Jony Ive]] (CDO)
* [[Angela Ahrendts]]
* [[Fred D. Anderson]]
* [[John Browett]]
* [[Guerrino De Luca]]
* [[Paul Deneve]]
* [[Al Eisenstat]]
* [[Tony Fadell]]
* [[Scott Forstall]]
* [[Ellen Hancock]]
* [[Nancy R. Heinen]]
* [[Ron Johnson (businessman)|Ron Johnson]]
* [[David Nagel]]
* [[Peter Oppenheimer]]
* [[Mark Papermaster]]
* [[Jon Rubinstein]]
* [[Bertrand Serlet]]
* [[Bruce Sewell]]
* [[Sina Tamaddon]]
* [[Avie Tevanian]]
* [[Ronald Wayne]]
* [[Steve Wozniak]]
}}
|group2 = [[:Category:Directors of Apple Inc.|Board of<br />directors]]
|list2 =
{{Navbox|child
|group1 = Current
|list1 =
* [[Arthur D. Levinson]] (Chairman)
* [[Tim Cook]] (CEO)
* [[James A. Bell]]
* [[Al Gore|Albert Gore Jr.]]
* [[Andrea Jung]]
* [[Ronald Sugar|Ronald D. Sugar]]
* [[Susan Wagner|Susan L. Wagner]]
|group2 = Former
|list2 =
* [[Mike Markkula]] (Chairman)
* [[John Sculley]] (Chairman)
* [[Steve Jobs]] (Chairman)
* [[Gil Amelio]]
* [[Fred D. Anderson]]
* [[William Campbell (business executive)|Bill Campbell]]
* [[Mickey Drexler]]
* [[Al Eisenstat]]
* [[Larry Ellison]]
* [[Bob Iger|Robert A. Iger]]
* [[Delano Lewis]]
* [[Arthur Rock]]
* [[Eric Schmidt]]
* [[Michael Scott (Apple)|Michael Scott]]
* [[Michael Spindler]]
* [[Edgar S. Woolard Jr.]]
* [[Jerry York (businessman)|Jerry York]]
}}
|group3 = Founders
|list3 =
* [[Steve Jobs]]
* [[Steve Wozniak]]
* [[Ronald Wayne]]
}}
|below = {{hlist|''Italics'' indicate [[:Category:Discontinued products|discontinued products, services]], or [[:Category:Defunct computer companies of the United States|defunct companies]].}}
* {{icon|Book}} [[:Book:Apple Inc.|Book]]
* {{icon|Category}} [[:Category:Apple Inc.|Category]]
* {{icon|Commons}} [[:commons:Category:Apple Inc.|Commons]]
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
bu67rtgm3t9fhv928w27qsiageevc7o
Template:Apple hardware since 1998
10
1443
3190
3189
2020-10-11T01:32:02Z
Chrisb
1
1 revision imported
3189
wikitext
text/x-wiki
{{navbox
| name = Apple hardware since 1998
| title = [[Apple Inc.|Apple]] hardware since 1998
| state = {{{state|}}}
| bodyclass = hlist
| group1 = Consumer desktop/all-in-ones
| list1 =
* [[eMac]]
* ''[[iMac]]''
** [[iMac G3|G3]]
** [[iMac G4|G4]]
** [[iMac G5|G5]]
** ''[[iMac (Intel-based)|Intel-based]]''
* ''[[Mac Mini]]''
| group2 = Professional tower/desktops
| list2 =
* ''[[iMac Pro]]''
* ''[[Mac Pro]]''
* [[Power Macintosh]]
** [[Power Macintosh G3|G3]]
** [[Power Mac G4|G4]]
** [[Power Mac G4 Cube|G4 Cube]]
** [[Power Mac G5|G5]]
* [[Xserve]]
| group3 = Consumer notebooks
| list3 =
* [[iBook]]
* [[MacBook]]
** [[MacBook (2006–2012)|2006–2012]]
** [[MacBook (2015–2019)|2015–2019]]
* ''[[MacBook Air]]''
| group4 = Professional notebooks
| list4 =
* ''[[MacBook Pro]]''
* [[PowerBook]]
** [[PowerBook G3|G3]]
** [[PowerBook G4|G4]]
| group5 = Consumer electronics
| list5 =
* ''[[Apple TV]]''
** [[Apple TV (1st generation)|1st]]
** [[Apple TV (2nd generation)|2nd]]
** [[Apple TV (3rd generation)|3rd]]
** ''[[Apple_TV#4th_and_5th_generation|HD]]''
** ''[[Apple_TV#4th_and_5th_generation|4K]]''
* ''[[Apple Watch]]''
** [[Apple Watch (1st generation)|1st generation]]
** [[Apple Watch Series 1|Series 1]]
** [[Apple Watch Series 2|Series 2]]
** ''[[Apple Watch Series 3|Series 3]]''
** [[Apple Watch Series 4|Series 4]]
** [[Apple Watch Series 5|Series 5]]
** ''[[Apple Watch Series 6|Series 6]]''
** ''[[Apple Watch SE|SE]]''
* [[Apple displays|Displays]]
** [[Apple Thunderbolt Display|Thunderbolt]]
** [[Apple Cinema Display|Cinema]]
** [[Apple Studio Display|Studio]]
** ''[[Pro Display XDR]]''
* ''[[HomePod]]''
* ''[[iPad]]''
** [[iPad (1st generation)|1st]]
** [[iPad 2|2]]
** [[iPad (3rd generation)|3rd]]
** [[iPad (4th generation)|4th]]
** [[iPad (2017)|2017]]
** [[iPad (2018)|2018]]
** [[iPad (2019)|2019]]
** ''[[iPad (2020)|2020]]''
* ''[[iPad Mini]]''
** [[iPad Mini (1st generation)|1st]]
** [[iPad Mini 2|2]]
** [[iPad Mini 3|3]]
** [[iPad Mini 4|4]]
** ''[[iPad Mini (5th generation)|5th]]''
* ''[[iPad Air|Air]]''
** [[iPad Air|1st]]
** [[iPad Air 2|2]]
** [[iPad Air (2019)|2019]]
** ''[[iPad Air (2020)|2020]]''
* ''[[iPad Pro]]''
** [[iPad Pro (1st generation)|1st]]
** [[iPad Pro (2nd generation)|2nd]]
** [[iPad Pro (3rd generation)|3rd]]
** ''[[iPad Pro (4th generation)|4th]]''
* ''[[iPod]]''
** [[iPod Classic|Classic]]
** [[iPod Photo|Photo]]
** [[iPod Mini|Mini]]
** [[iPod+HP]]
** [[iPod Shuffle|Shuffle]]
** [[iPod Nano|Nano]]
** ''[[iPod Touch|Touch]]''
* [[Apple Newton|Newton]]
** [[MessagePad]]
** [[eMate 300]]
| group6 = Smartphones
| list6 =
* ''[[iPhone]]''
** [[iPhone (1st generation)|1st]]
** [[iPhone 3G|3G]]
** [[iPhone 3GS|3GS]]
** [[iPhone 4|4]]
** [[iPhone 4S|4S]]
** [[iPhone 5|5]]
** [[iPhone 5C|5C]]
** [[iPhone 5S|5S]]
** [[iPhone 6|6 / 6 Plus]]
** [[iPhone 6S|6S / 6S Plus]]
** [[iPhone SE (1st generation)|SE (1st)]]
** [[iPhone 7|7 / 7 Plus]]
** [[iPhone 8|8 / 8 Plus]]
** [[iPhone X|X]]
** [[iPhone XS|XS / XS Max]]
** ''[[iPhone XR|XR]]''
** ''[[iPhone 11|11]]''
** ''[[iPhone 11 Pro|11 Pro / Pro Max]]''
** ''[[iPhone SE (2nd generation)|SE (2nd)]]''
| group7 = Accessories
| list7 =
* ''[[AirPods]]''
** [[AirPods#1st_generation|1st]]
** ''[[AirPods#2nd_generation|2nd]]''
** ''[[AirPods Pro|Pro]]''
* [[AirPort]]
** [[AirPort Express|Express]]
** [[AirPort Extreme|Extreme]]
** [[AirPort Time Capsule|Time Capsule]]
* [[AirPower (charging mat)|AirPower]]<small> (cancelled)</small>
* [[Apple earbuds|Earbuds]]
** [[Apple Earbuds with Remote|with Remote]]
* [[iPod Earphones|Earphones]]
** [[Apple Earphones with Remote and Mic|with Remote and Mic]]
* ''[[EarPods]]''
** ''[[EarPods with Lightning Connector|with Lightning Connector]]''
* [[Apple In-Ear Headphones|In-Ear Headphones]]
* ''[[List of iPad accessories|iPad]]''
** ''[[Apple Pencil|Pencil]]''
***''[[Apple Pencil (1st generation)|<small>1st</small>]]''
***''[[Apple Pencil (2nd generation)|<small>2nd</small>]]''
** ''[[Magic Keyboard for iPad]]''
* ''[[:Category:iPod accessories|iPod]]''
** [[iPod click wheel|Click Wheel]]
** [[Nike+]]
* [[iPhone Stereo Headset]]
* [[iSight]]
* ''[[Apple Keyboard|Keyboard]]''
** [[Apple Wireless Keyboard|Wireless]]
** ''[[Magic Keyboard|Magic]]''
* ''[[Apple Mouse|Mouse]]''
** [[Apple USB Mouse|USB]]
** [[Apple Pro Mouse|Pro]]
** [[Apple Wireless Mouse|Wireless]]
** [[Apple Mighty Mouse|Mighty]]
** [[Magic Mouse|Magic]]
** ''[[Magic Mouse 2|Magic 2]]''
* [[Apple Remote|Remote]]
* ''[[Siri Remote]]''
* [[Apple speakers|Speakers]]
** [[iPod Hi-Fi|Hi-Fi]]
** [[SoundSticks]]
* ''[[SuperDrive]]''
* ''Trackpad''
** [[Magic Trackpad|Magic]]
** ''[[Magic Trackpad 2|Magic 2]]''
* [[Apple Modem|USB Modem]]
* [[Xserve RAID]]
| below = ''Italics'' indicate current products. See also: [[Template:Apple hardware before 1998|Apple hardware before 1998]]
}}<noinclude>
{{Documentation|Template:Apple/doc}}
[[Category:Apple Inc.-related templates]]
[[Category:Computer hardware navigational boxes]]
</noinclude>
i8hr6ddxyc73epgj8qhuwhx2hc7lixt
Template:Arabic script needed
10
1062
2356
2355
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2355
wikitext
text/x-wiki
{{Script needed
|language = Arabic
|image = Arabic albayancalligraphy.svg
|extra = {{Script needed/extra|{{{Persian|<noinclude>yes</noinclude>}}}|Persian}}{{Script needed/extra|{{{Urdu|<noinclude>yes</noinclude>}}}|Urdu}}{{Script needed/extra|{{{Kurdish|<noinclude>yes</noinclude>}}}|Kurdish}}{{Script needed/extra|{{{Malay|<noinclude>yes</noinclude>}}}|Jawi|cat=Articles needing Malay script or text}}{{Script needed/extra|{{{Azerbaijani|<noinclude>yes</noinclude>}}}|Azerbaijani}}{{Script needed/extra|{{{Pashto|<noinclude>yes</noinclude>}}}|Pashto}}{{Script needed/extra|{{{Uyghur|<noinclude>yes</noinclude>}}}|Uyghur}}{{Script needed/extra|{{{Tajik|<noinclude>yes</noinclude>}}}|Tajik}}{{Script needed/extra|{{{Kazakh|<noinclude>yes</noinclude>}}}|Kazakh}}{{Script needed/extra|{{{Swahili|<noinclude>yes</noinclude>}}}|Swahili}}{{Script needed/extra|{{{Somali|<noinclude>yes</noinclude>}}}|Somali}}{{Script needed/extra|{{{Comorian|<noinclude>yes</noinclude>}}}|Comorian}}{{Script needed/extra|{{{Chinese|<noinclude>yes</noinclude>}}}|Xiao'erjing|cat=Articles needing Chinese script or text}}
}}
6h258n8gue6p3rpi9rui4m4agrd96gb
Template:Armenian script needed
10
988
2208
2207
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2207
wikitext
text/x-wiki
{{Script needed
|language = Armenian
|image = Armenian language in the Armenian alphabet.svg
}}<noinclude>
[[Category:Indo-European multilingual support templates]]
</noinclude>
cbjdxjvrfk0cfitwc1ddna34xlu5yt2
Template:As of
10
1605
4858
4857
2020-10-11T05:39:02Z
Chrisb
1
1 revision imported
4857
wikitext
text/x-wiki
<!--{{As of}} begin--><includeonly><!--
## param 1 is the year
## optional param 2 is the month
## optional param 3 is the day of the month
## optional named parameter alt=[text] is alternative display text (may include wiki markup)
## optional named parameter df=US produces American date format in displayed text
## optional named parameter lc=on gives lower-case-first output
## optional named parameter url=[URL] gives statement reference
## displayed text ([A/a]s of [Start date] by default)
-->{{#if: {{{alt|}}} | {{{alt}}} | {{#if:{{{since|}}}|{{#ifeq: {{{lc}}} | {{{lc|}}} | s | S }}ince | {{#ifeq: {{{lc}}} | {{{lc|}}} | a | A }}s of}} {{#if:{{{pre|}}}|{{{pre}}} }}{{#if: {{{3|}}} | {{#ifeq:{{lc:{{{df|}}}}}|us|{{MONTHNAME|{{{2}}}}} {{#expr:{{{3}}}}}, |{{#expr:{{{3}}}}} {{MONTHNAME|{{{2}}}}} }}{{{1}}}|{{#if: {{{2|}}} |{{MONTHNAME|{{{2}}}}} }}{{{1}}}}}}}{{#if:{{{post|}}}|<nowiki />{{{post}}}}}<!--
#### That nowiki is required or, various characters (:, ;, #, and *} will be parsed as wikisyntax for list items.
## ref/update inline banner (hidden by default)
--><sup class="plainlinks noexcerpt noprint asof-tag {{#if:{{{url|}}}|ref|update}}" style="display:none;">[{{#if:{{{url|}}}|{{{url}}} [ref]|{{fullurl:{{PAGENAME}}|action=edit}} [update]}}]</sup><!--
## categorisation disabled outside main namespace
-->{{DMCA|Articles containing potentially dated statements|from|<!--
## temporal category for template (word method)
-->{{#if: {{#ifexpr: {{{1}}} = 1 }} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 2004 | {{{1}}} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 1989 | {{#time:Y|{{{1}}}}} | before 1990 }}}} | <!--
## temporal category for template (parameter method)
-->{{#ifexpr: {{{1}}} > 2004 | {{#if:{{{2|}}} | {{MONTHNAME|{{{2}}}}} }} {{{1}}} | {{#ifexpr:{{{1}}} > 1989 | {{{1}}} | before 1990 }}}}}}|<!--
## global category for template
-->All articles containing potentially dated statements}}</includeonly><!--{{As of}} end--><noinclude><!--
## dynamic example (as of today, self ref)
-->{{As of|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}}}<sup class="plainlinks">[https://en.wikipedia.org/wiki/Template:As_of [ref]]</sup>
{{documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using as of template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:As of]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | alt | df | lc | post | pre | since | url }}
rbu66w7vdpj3sc0horac0flimmb0in7
Template:Asbox
10
920
2072
2071
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2071
wikitext
text/x-wiki
<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
</noinclude>
ksm2ygwb5s1f3x9t0pn08ktjf3admyc
Template:AthAbbr needed
10
1212
2656
2655
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2655
wikitext
text/x-wiki
{{Ambox
| name = AthAbbr needed
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| image =
| sect =
| issue = requires use of {{Tl|AthAbbr}} templates to make it clearer for those not familiar with [[Sport of athletics|athletics]].
| talk =
| fix =
| date = {{{date|}}}
| cat = Articles needing AthAbbr templates
| all = Articles needing AthAbbr templates
}}
<noinclude>
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"small": {
"description": "This defaults to big and centred. To override it, put an alignment such as left in the parameters.",
"default": "{{{small|}}}"
},
"date": {}
},
"description": "This template is to be used on pages needing AthAbbr templates"
}
</templatedata>
</noinclude>
cdwdcwo0vvb6rgip3rudgpb3ye84i1i
Template:Autobiography
10
1166
2564
2563
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2563
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Autobiography
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-autobiography
| sect = {{{1|}}}
| issue = '''is an [[Wikipedia:Autobiography|autobiography]] or has been extensively edited by the subject or by someone connected to the subject'''.
| fix = It may need editing to conform to Wikipedia's [[Wikipedia:Neutral point of view|neutral point of view]] policy. There may be relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]].
| removalnotice = yes
| cat = Autobiographical articles
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
8lrbnfjhrnk5c5hkpcqmqjnr78ce31y
Template:BLACK
10
1496
4640
4639
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4639
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>data-sort-value="{{{sort|}}}" style="background: black; color: lightgray; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na"|{{{1|N/A}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
9t6jyhg2nbt5xurq85dqtvzgqtc68y9
Template:BLP IMDb-only refimprove
10
1271
2774
2773
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2773
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{BLP IMDb refimprove
| name = BLP IMDb-only refimprove
| date = {{{date|}}}
| only = yes
}}
}}<noinclude>
{{Documentation}}
</noinclude>
jvoyg83ogn02mcgffke6jxpi6qcmthu
Template:BLP IMDb refimprove
10
953
2138
2137
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2137
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ ambox
| name = BLP IMDb refimprove
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This {{#if:{{{1|}}}|{{{1}}} of a|}} {{#ifeq:{{{living}}}|no
|[[WP:BDP|biography of a recently-deceased person]]
|[[Wikipedia:Biographies of living persons|biography of a living person]]
}} '''needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]], as {{#ifeq:{{{only|}}}|yes|its only attribution is|it includes attribution}} to [[IMDb]]'''.
| fix = IMDb [[Wikipedia:Citing IMDb|may not be a reliable source]] for biographical information. Please help by adding additional, reliable sources for [[Wikipedia:Verifiability|verification]]. {{#ifeq:{{{living}}}|no||Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.}}
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles lacking reliable references
| all = All articles lacking reliable references
| cat2 = BLP articles lacking sources
| cat3 = Articles sourced {{#ifeq:{{{only|}}}|yes|only}} by IMDb
| all2 = All articles sourced by IMDb
}}
}}<noinclude>
{{documentation}}
</noinclude>
1djmwbi3ri7rkjdgnq5r5zr0k7p2kba
Template:BLP living dead
10
1174
2580
2579
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2579
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{BLP living dead}} begin-->{{Ambox
| name = {{{name|BLP living dead}}}
| subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| type = content
| class = ambox-BLP_sources
| issue = The subject of this [[Wikipedia:Biographies of living persons|{{{prefix|}}} biographical {{#if:{{{suffix|{{{article|}}}}}}|{{{suffix|{{{1}}}}}}|article}}]] '''is shown as being deceased on {{ #if: {{{foreign-article|}}} |[[:{{{language-code}}}:{{{foreign-article}}}|another wiki-language article]]'''|another wiki-language article'''}}. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''.}}
| fix = Please help to find [[WP:RS|reliable sources]] to [[WP:V|confirm]] whether this individual is [[WP:LIVINGDEAD|alive or dead]], or correct any mis-categorization on the relevant foreign-language article(s). Further usage instructions for this template can be found [[Template:BLP living dead/doc|here]].
| date = {{{date|}}}
| cat = Living people on EN wiki who are dead on other wikis
}}<!--{{BLP living dead}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
apxclap1ijj1kyue2r7o3a267e1ezyu
Template:BLP more footnotes needed
10
1281
2794
2793
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2793
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{More footnotes
| date = {{{date|}}}
| BLP = yes
}}
}}<noinclude>
{{documentation}}
{{Citation and verifiability article maintenance templates}}
</noinclude>
213a7wwzl0b4krr3awcow0dyqr0c88f
Template:BLP no footnotes
10
1221
2674
2673
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2673
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{No footnotes
| date = {{{date|}}}
| BLP = yes
}}
}}<noinclude>
{{documentation}}
{{Citation and verifiability article maintenance templates}}
</noinclude>
8pyu1ancyu61p5swz7bkf9izef1u57b
Template:BLP one source
10
1242
2716
2715
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2715
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{BLP one source}} begin-->{{Ambox
| name = BLP one source
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-BLP_one_source
| issue = This [[Wikipedia:Biographies of living persons|biography of a living person]] '''relies on a single source'''.
| fix = You can help by adding reliable sources to this article. Contentious material about living people that is unsourced or poorly sourced '''must be removed immediately'''.
| date = {{{date|}}}
| removalnotice = yes
| cat = BLP articles lacking sources
| all = All BLP articles lacking sources
}}<!--{{BLP one source}} end-->
}}<noinclude>
{{doc}}</noinclude>
q201sbwktpa8awhbj63l7rzfmh4hk8v
Template:BLP primary sources
10
954
2140
2139
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2139
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = BLP primary sources
| subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly>
| type = content
| class = ambox-Primary_sources
| image = [[file:Question book-new.svg|50x40px]]
| sect = [[Wikipedia:Biographies of living persons|biography of a living person]]
| issue = '''relies too much on [[Wikipedia:Verifiability|references]] to [[Wikipedia:Biographies of living persons#Misuse of primary sources|primary sources]]'''.
| fix = Please help by adding [[Wikipedia:No original research#Primary, secondary and tertiary sources|secondary or tertiary sources]]. Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.
| removalnotice = yes
| cat = Articles lacking reliable references
| date = {{{date|}}}
| all = All articles lacking reliable references
| cat2 = BLP articles lacking sources
}}
}}<noinclude>
{{documentation}}
</noinclude>
0wygoflp2rungwe74jf6nuwgbk7vvlb
Template:BLP self-published
10
1192
2616
2615
2020-09-29T19:18:00Z
Chrisb
1
1 revision imported
2615
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{BLP self-published}} begin-->{{Ambox
| name = BLP self-published
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This [[Wikipedia:Biographies of living persons|biography of a living person]] {{strong|needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]], as its only attribution is to [[Wikipedia:Verifiability#Self-published and questionable sources as sources on themselves|self-published sources]]}}; articles should not be based solely on such sources.
| fix = Please help by adding [[Wikipedia:Reliable sources|reliable, independent sources]]. {{strong|Immediately remove}} contentious material about living people that is unsourced or poorly sourced.
| cat = Articles lacking reliable references
| date = {{{date|}}}
| all = All articles lacking reliable references
|removalnotice = yes
}}<!--{{BLP self-published}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to wikidata, not here! -->
</noinclude>
09y8f7qik5nx56mnqwnqy7lu969dijw
Template:BLP sources
10
943
2118
2117
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2117
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{BLP sources}} begin-->{{Ambox
| name = {{{name|BLP sources}}}
| type = content
| class = ambox-BLP_sources
| issue = This {{#if:{{{1|}}}|{{{1}}} [[Wikipedia:Biographies of living persons|about a {{#if:{{{deceased|}}}|recently deceased|living}} person]] | {{{prefix|}}} [[Wikipedia:Biographies of living persons|biography of a {{#if:{{{deceased|}}}|recently deceased|living}} person]]}} '''needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]]'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''.}}
| fix = Please help by adding [[Wikipedia:Reliable sources|reliable sources]]. Contentious material about {{#if:{{{deceased|}}}|recently deceased|living}} persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.<br /><small>{{find sources mainspace}}</small>
| removalnotice = yes
| date = {{{date|}}}
| cat = BLP articles lacking sources
| all = All BLP articles lacking sources
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using BLP sources with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:BLP sources]] with unknown parameter "_VALUE_"|ignoreblank=y | 1| date| name| prefix| reason| subst| deceased|
}}<!--{{BLP sources}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
gros0l9iuuxwrj070iifjcb5qwcmjpj
Template:BLP sources section
10
933
2098
2097
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2097
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{BLP sources
|name=BLP sources section
|prefix=section of a
|date={{{date|}}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
bxjjj78lmi9f7zu3o2wi90atwretr9v
Template:BLP unsourced
10
947
2126
2125
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2125
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{User other|__NOINDEX__|{{Ambox
| name = {{{name|BLP unsourced}}}
| subst= {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| type = content
| class= ambox-BLP_unsourced
| issue= This {{{prefix|}}} [[Wikipedia:Biographies of living persons|biography of a living person]] '''does not [[Wikipedia:Citing sources|include]] any [[Wikipedia:Verifiability|references or sources]]'''.
| fix = Please help by adding [[Wikipedia:Reliable sources|reliable sources]]. Contentious material about living people that is unsourced or poorly sourced '''must be removed immediately'''.<br /><small>{{find sources mainspace}}</small>
| removalnotice = yes
| cat = {{{cat|Unreferenced BLPs}}}
| date = {{{date|}}}
| all = {{{all|All unreferenced BLPs}}}
| all2 = All BLP articles lacking sources
}}}}
}}<noinclude>
{{documentation}}
</noinclude>
avo7hplamalezu62jz271f7tcel53kj
Template:BLP unsourced section
10
932
2096
2095
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2095
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{BLP unsourced
|name = BLP unsourced section
|subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|prefix= section of a
|date = {{{date|}}}
|cat = BLP articles lacking sources
|all =
}}
}}<noinclude>
{{documentation}}
</noinclude>
qemaoj3thab1cumcizrd4x4yowi0dev
Template:Bad summary
10
952
2136
2135
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2135
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Bad summary
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-bad-summary
| sect = {{{1|}}}
| issue = '''may not properly [[Wikipedia:Summary style|summarize]] {{#if:{{{2|}}}|its [[{{{2}}}|corresponding main article]]|its corresponding main article}}'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]].
| removalnotice = yes
| date = {{{date|}}}
| all = Wikipedia articles with content forks
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
h3hquloepu6cbp5z5o567islfohu3wc
Template:Being translated
10
941
2114
2113
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2113
wikitext
text/x-wiki
<!--{{Being translated}} begin-->{{Ambox
| name = Being translated
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = notice
| image = [[Image:Ambox clock.svg|48px|alt=|link=]]
| text = This article '''is in the process of being translated from [[:{{{1}}}:{{{2}}}|{{{2}}}]] in the {{#language:{{{1}}}|en}}-language Wikipedia.''' In order to reduce edit conflicts, please consider not editing it while translation is in progress.
| all = Pages actively undergoing construction
| doc = no
}}<!--{{Being translated}} begin--><noinclude>
{{Documentation}}
</noinclude>
csm1tsoboi1uhpho30ni3udlesppajx
Template:Believerpov
10
1196
2624
2623
2020-09-29T19:18:01Z
Chrisb
1
1 revision imported
2623
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst| |date=__DATE__ |$B=
<!--{{Believerpov}} begin-->{{Ambox
| name = Believerpov
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-believerpov
| issue = This {{{1|article}}} '''may be written from a [[Religious belief|believer's point of view]], rather than a [[Wikipedia:Neutral point of view|neutral point of view]]'''.
| fix = Please [[Wikipedia:Cleanup|clean it up]] to conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, and to make it neutral in tone.
| date = {{{date|}}}
| removalnotice = yes
| cat = Articles with a promotional tone
| all = All articles with a promotional tone
}}<!--{{Believerpov}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
gl8l4p981f8h1k2on23b79may2304c9
Template:Berber script needed
10
989
2210
2209
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2209
wikitext
text/x-wiki
{{Script needed
|language = Berber
|image = Tifinagh in Tifinagh.svg
}}
mtixstx05arx1crej4xcwsozhoraiip
Template:Beta
10
1497
4642
4641
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4641
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="beta table-beta"|{{{1|[[software release life cycle#Beta{{!}}Beta]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
9rveg708dhzulli61gvya14vg4kbvwd
Template:Biblio
10
934
2100
2099
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2099
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| imageright = [[Image:Nuvola kdict glass.svg|50x40px]]
| issue = The citations in this {{{1|article}}} '''lack sufficient bibliographical information (e.g. author, title, date of publication, publisher, [[International Standard Book Number|ISBN]], [[OCLC]] number, pages cited, etc.)'''.
| fix = Specific concerns can be found on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|Talk page]]|[[{{TALKPAGENAME}}|talk page]]}}. See [[Help:Referencing for beginners with citation templates]] for guidance about writing citations.
| date = {{{date|}}}
| removalnotice = yes
| cat = Articles needing additional references
| all = All articles needing additional references
| name = Biblio
}}
}}<noinclude>
{{documentation}}
</noinclude>
3wxn5cngai7vcd1m6v2gweum0klzzoq
Template:Big
10
1659
4966
4965
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4965
wikitext
text/x-wiki
<span style="font-size: 120%;">{{{1}}}</span><noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata, thank you. -->
</noinclude>
h2e0f82fasmre1wg7mmooho2xrnyw8f
Template:Black Exempt
10
1498
4644
4643
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4643
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: slategray; color: white; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|B.Exempt}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
9172kl9yf9329wgiehmmpkao6550pf5
Template:Blacklisted-links
10
1167
2566
2565
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2565
wikitext
text/x-wiki
{{#ifeq:{{{invisible|false}}}|true|[[Category:Tagged pages containing blacklisted links]]|{{Ambox
|name = Blacklisted-links
|subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|type = style
|image = [[Image:Ambox important.svg | 40x40px|link=|alt=]]
|issue = [[Wikipedia:Bots|An automated process]] has detected links on this page on the '''[[MediaWiki:Spam-blacklist|local]] or [[:meta:Spam blacklist|global]] blacklist.'''
|fix = If the links are appropriate you may [[Template:Blacklisted-links|request whitelisting by following these instructions]]; otherwise consider removing or replacing them with more appropriate links. <small>''(To hide this tag, set the "invisible" field to "true")''</small><div class="mw-collapsible mw-collapsed" style="border-style: none; padding: 0px;text-align:left;"><div style="background: transparent; text-align: left; font-weight: bold; padding:0.2em 0 0 0; display:inline;">List of blacklisted links:</div><div class="mw-collapsible-content" style="text-align: left; padding: 0px;">
{{{1}}}</div></div>
|cat = Tagged pages containing blacklisted links
|date = {{{date|}}}
}}<!-- {{Blacklisted-links}} end -->}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
6ti01biozogooahzns8ifsvmlqzffgk
Template:Block indent
10
1313
2858
2857
2020-09-29T19:18:21Z
Chrisb
1
1 revision imported
2857
wikitext
text/x-wiki
<div {{#if:{{{class|}}}|class="{{{class}}}"}} style="padding-left: {{{left|{{{em|3}}}}}}em; padding-right:{{{right|0}}}em; overflow: hidden; {{#if:{{{style|}}}|{{{style}}}}}">{{{1|{{{text|{{{content|{{{quote|<noinclude>{{lorem ipsum}}</noinclude><includeonly>{{error|Error: No content given to indent (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly>}}}}}}}}}}}}</div><noinclude>
{{documentation}}
</noinclude>
3vz2s5qvaab7cqrrm3cuq98w03n63bs
Template:Broad-concept article footer
10
1267
2766
2765
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2765
wikitext
text/x-wiki
<templatestyles src="Dmbox/styles.css" />
<table id="bcabox" class="metadata dmbox {{{class|}}}" style="{{{style|}}}" role="presentation">
<tr>
{{#if:{{{image|}}}
|<td class="mbox-image" style="padding: 2px 0 2px 0.4em;">{{{image}}}</td>
|<!-- No image. Cell with some width or padding necessary for text cell to have 100% width. --><td class="mbox-empty-cell"></td>
}}
<td class="mbox-text" style="padding: 0.25em 0.4em; font-style: italic; {{{textstyle|}}}"><includeonly>{{yesno|{{{nocat|{{main other|no|yes}}}}}|yes=|no=[[Category:Broad-concept articles]]|def={{error|{{PAGENAME}} {{param|nocat}} should be a yes or no value.}}<br />}}</includeonly>This is a [[Wikipedia:Broad-concept article|Broad-concept article]]. <br /> <small class="plainlinks">If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}|namespace=0}} internal link] led you here, you may wish to change the link to point to one of the related topics mentioned here.</small></td>
{{#if:{{{imageright|}}}
| <td class="mbox-imageright" style="padding: 2px 0.4em 2px 0;"> {{{imageright}}} </td>
}}
</tr>
</table><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
bbqwmlryn5fzcubxka8w6ejouzla76x
Template:Broaden
10
1199
2630
2629
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2629
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!-- {{Broaden}} begin -->{{ambox
| name = Broaden
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-globaliz
| issue = The examples and perspective in this {{{1|article}}} '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|are skewed towards a single field {{#if:{{{4|}}}|{{{2name|{{{2}}}}}}, {{{3name|{{{3}}}}}}, and {{{4name|{{{4}}}}}}|{{#if:{{{3|}}}|{{{2name|{{{2}}}}}} and {{{3name|{{{3}}}}}}|{{{2name|{{{2}}}}}}}}}} and do|may}} not represent a [[Wikipedia:WikiProject Countering systemic bias|full view]] of the subject'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] and discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}}
|[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]]
|[[{{TALKPAGENAME}}|talk page]]
}}.
| date = {{{date|}}}
| small = {{{small|}}}
| cat = Articles with limited geographic scope
| all = {{#if:{{{2|}}}|{{#ifexist:Category:{{{2}}}-centric|{{{2}}}-centric|Pages in non-existent country centric categories}}}}
| all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{{3}}}-centric|{{{3}}}-centric|Pages in non-existent country centric categories}}}}
| all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{{4}}}-centric|{{{4}}}-centric|Pages in non-existent country centric categories}}}}
}}<!-- {{Globalize}} end -->
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
0koak4t0gqdtopbmucb10p9qu6tnp0q
Template:Broken ref
10
1606
4860
4859
2020-10-11T05:39:02Z
Chrisb
1
1 revision imported
4859
wikitext
text/x-wiki
<!-- Prefix: MediaWiki:Cite error -->{{#if:{{{prefix|}}}
|{{#invoke:Namespace detect|main
| main = {{{prefix|}}}
| category = {{{prefix|}}}
| template = {{{prefix|}}}
| file = {{{prefix|}}}
| help = {{{prefix|}}}
| portal = {{{prefix|}}}
| wikipedia = {{{prefix|}}}
| draft = {{{prefix|}}}
| other = <span class="brokenref">{{{prefix|}}}</span>
}}<!-- All other errors -->|{{#invoke:Namespace detect|main
| main = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| category = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| template = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| file = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| help = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| portal = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| wikipedia = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| draft = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}}
| other = <span class="brokenref">{{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}} }}</span>
}}<!-- Category management -->{{#invoke:Namespace detect|main
| main = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=}}
| category = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=γ}}
| template = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=τ}}
| file = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ι}}
| help = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ω}}
| portal = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ρ}}
| wikipedia = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ψ}}
| draft = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=δ}}
| other =
}}
}}
<noinclude>{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{reflist}} <!-- dummy to steer automated tools away from this template -->
</noinclude>
m5q6b0mf2honawv8hfmqffsisu655w3
Template:Broken ref/cat
10
1607
4862
4861
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4861
wikitext
text/x-wiki
<includeonly>{{#if:{{{nocat|}}}|
| [[Category:{{#switch: {{{help|}}}
| Cite error references no text = Pages with broken reference names
| Cite error group refs without references = Pages with missing references list
| Cite error references duplicate key = Pages with duplicate reference names
| #default = Pages with incorrect ref formatting
}}|{{{sortkey|}}}{{PAGENAME}}]]
}}</includeonly><noinclude>{{documentation}}</noinclude>
6zxtu60u084ssjefzrfk4s10hek5qit
Template:Broken ref/lang
10
1608
4864
4863
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4863
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}{{used in system}}</noinclude>{{{msg|<span class="error">Error: no message set for {{tl|broken ref}}</span>}}} ({{#switch:{{{lang|}}}
| en = see the [[Help:Cite errors/{{{help|}}}|help page]]
| es = consulta la [[Help:Cite errors/{{{help|}}}|página de ayuda]]
| en-gb = see the [[Help:Cite errors/{{{help|}}}|help page]]
| fr = vous pouvez consulter [[Help:Cite errors/{{{help|}}}|la page d'aide]] pour plus d'informations
| pt-br = veja [[Help:Cite errors/{{{help|}}}|a página de ajuda]] para mais informações
| ru = подробнее см. [[Help:Cite errors/{{{help|}}}|справочную страницу]]
| de = siehe die [[Help:Cite errors/{{{help|}}}|Hilfeseite]] für weitere Informationen
| id = lihat [[Help:Cite errors/{{{help|}}}|halaman bantuan]] untuk informasi lebih lanjut
| ar = [[Help:Cite errors/{{{help|}}}|صفحة المساعدة]] للمزيد من المعلومات
| nl = meer informatie staat op de [[Help:Cite errors/{{{help|}}}|hulppagina]]
| zh-cn = 详情参见[[Help:Cite errors/{{{help|}}}|帮助页]].
| ro = vedeți [[Help:Cite errors/{{{help|}}}|pagina de ajutor]] pentru mai multe informații
| it = vedi la [[Help:Cite errors/{{{help|}}}|pagina di aiuto]] per maggiori informazioni
| tr = [[Help:Cite errors/{{{help|}}}|yardım sayfasına]] bakınız
| en-ca = see the [[Help:Cite errors/{{{help|}}}|help page]]
}}).<!-- Languages are in order by preference popularity -->
12ss0a10b3kuin1cbmrq0e2655dwfwo
Template:Broken syntax
10
1276
2784
2783
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2783
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Expand section}} begin-->{{Ambox
| name = Broken syntax
| type = content
| small = {{{small|left}}}
| image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=[icon]]]
| issue = This section’s '''syntax is broken'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}}
|  with: {{{with|{{{for|{{{1}}}}}}}}}}}{{#ifeq:{{{punctuation|{{{period|}}}}}}|no||.}} <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} fixing it].</small>
| talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}}
| all = All articles Syntax to be fixed
| cat = Articles that have a syntax problem
| date = {{{date|}}}
}}<!--{{Expand section}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
4t3cvbiad6v403kwndkcxzbgvbcrc99
Template:Burmese script needed
10
1063
2358
2357
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2357
wikitext
text/x-wiki
{{Script needed
|language = Burmese
|image = Burm ABC.svg
}}
agd2i4n5egwh84l7s663f1tenuz7q9k
Template:Buzzword
10
962
2156
2155
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2155
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Buzzword
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This {{{1|article}}} appears to '''{{#ifeq:{{{2|{{{reason|}}}}}}||contain a large number of [[Buzzword|buzzwords]]|{{{2|{{{reason}}}}}}}}'''.
| fix = There might be a discussion about this on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|talk page]]|[[{{TALKPAGENAME}}|talk page]]}}. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{#if:{{NAMESPACE}}|{{lc:{{NAMESPACE}}}} page|article}}}}}] if you can.
| date = {{{date|}}}
| cat = Wikipedia articles containing buzzwords
}}
}}<noinclude>
{{Documentation}}
</noinclude>
4hqc8j2in4rx8zrl5y1et7xp6nnxdkp
Template:C
10
1643
4934
4933
2020-10-11T05:50:38Z
Chrisb
1
1 revision imported
4933
wikitext
text/x-wiki
[[:Category:{{PAGENAME:{{{1}}}}}|{{{2|{{PAGENAME:{{{1}}}}}}}}]]<noinclude>
{{Documentation}}
</noinclude>
5ihlenrrtiyl0onp17hzt1jb0im35x9
Template:CAlso starring
10
1499
4646
4645
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4645
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ffd; color: black; vertical-align: middle; text-align: {{{align|center}}};{{{style|}}}" class="table-cast"|{{{1|[[Ensemble cast|Also starring]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
sjo1vx011xiwqgoxmqz5gdv7q0sei00
Template:CEmpty
10
1500
4648
4647
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4647
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #D3D3D3; vertical-align: middle; {{{style|text-transform: capitalize;}}}" class="table-cast"|<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
6t4s6676xvmn5ql2uwwk2cp0pi6vp5a
Template:CFinalist
10
1501
4650
4649
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4649
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: {{#switch: {{lc:{{{place|Finalist}}}}}
|3rd place|third place|2nd runner-up = {{{color|<nowiki>#</nowiki>ffffdd}}}
|4th place|fourth place = {{{color|<nowiki>#</nowiki>ffffdd}}}
|5th place|fifth place= {{{color|<nowiki>#</nowiki>ffffdd}}}
|6th place|sixth place = {{{color|<nowiki>#</nowiki>ffffdd}}}
|7th place|seventh place = {{{color|<nowiki>#</nowiki>ffffdd}}}
|8th place|eighth place = {{{color|<nowiki>#</nowiki>ffffdd}}}
|#default = {{{color|<nowiki>#</nowiki>ffffdd}}}
}}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}};" class="table-cast"|{{{1|{{{place|finalist}}}}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
[[Category:Big Brother (franchise) templates]]
</noinclude>
dx9uzhdifcwhkwabqstyzlq2gtbkebh
Template:CGuest
10
1502
4652
4651
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4651
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DAEBFF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|[[Guest appearance|Guest]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
h3py5vtbbd7xifh217j9bpnej0c9j2f
Template:CIA-Sect
10
925
2082
2081
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2081
wikitext
text/x-wiki
{{ambox
| name = CIA-Sect
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| text = To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]], this section '''may require rewriting or reformatting'''. The current version of this section was [[Wikipedia:Status of the porting of the CIA World Factbook|imported from the CIA World Factbook]]. Please discuss this issue on the [[Talk:{{PAGENAME}}|talk page]]. [[Help:Editing|Editing help]] is available.
| all = CIA World Factbook cleanup
}}<noinclude>
{{doc}}
</noinclude>
a204ddy1bumro7sfvgojzy2vjzzpugw
Template:CMain
10
1503
4654
4653
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4653
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ddffdd; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|[[Ensemble cast|Main]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
3dhq04avc3jx59bc9r4wt12vkoi961u
Template:CNone
10
1504
4656
4655
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4655
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ECECEC; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|<!-- Accessibility text for screen readers only --><span style="display: none">Does not appear</span>}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
muk4a5nzr7e05ihohmfr955s9do30mq
Template:COI
10
1087
2406
2405
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2405
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{COI}} begin-->{{Ambox
| name = COI
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| class = ambox-COI
| image = [[File:Unbalanced scales.svg|50x40px|link=]]
| issue = ''' A major contributor to this {{{1|article}}} appears to have a [[Wikipedia:Conflict of interest|close connection]] with its subject.'''
| fix = It may require cleanup to comply with Wikipedia's content policies, particularly [[Wikipedia:Neutral point of view|neutral point of view]]. Please discuss further on the [[{{TALKPAGENAME}}|talk page]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles with possible conflicts of interest
}}<!--{{COI}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
qm5pg9her371bv8zlb6co1dxpya6xj6
Template:COther
10
1505
4658
4657
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4657
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background-color: #FFF; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|<!-- Accessibility text for screen readers only --><span style="display: none">Does not appear</span>}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
4vmj1uo0hnm05jpbig34y88zurbofls
Template:CRecurring
10
1506
4660
4659
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4659
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ffe3e3; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"| {{{1|[[Recurring character|Recurring]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
</noinclude>
oz0244rru0c3n8awd0zkezz471dy9lv
Template:CRemoved
10
1507
4662
4661
2020-10-11T05:35:16Z
Chrisb
1
1 revision imported
4661
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFE08B; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|removed}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
[[Category:Big Brother (franchise) templates]]
</noinclude>
ge4ivuxx0k3t8uj8upcitjrag186lyi
Template:Category handler
10
1444
3192
3191
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3191
wikitext
text/x-wiki
{{#invoke:Category handler|main}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, and interwikis to Wikidata. -->
</noinclude>
og6fhyj2ssd4fmzpqzuodk12q3cms0z
Template:Category link
10
1644
4936
4935
2020-10-11T05:50:38Z
Chrisb
1
1 revision imported
4935
wikitext
text/x-wiki
{{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}( {{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}} ){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude>
{{Documentation}}
</noinclude>
npwya2pxpmrb7ss01243bg1cub9s7jq
Template:Category link with count
10
1660
4968
4967
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4967
wikitext
text/x-wiki
[[:Category:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|Category:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}}}<!--
-->]] ({{PAGESINCATEGORY:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}|{{{2|all}}}}})<noinclude>
{{Documentation}}
</noinclude>
elaxrfjlnj9f326kw022s89sr3t43tc
Template:Caution
10
1265
2762
2761
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2761
wikitext
text/x-wiki
{{Mbox
| name = Caution
| demospace = {{{demospace|}}}
| style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||margin:inherit auto;width:80%;}} {{{style}}} }}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|40px|Caution|link={{{imagelink|}}}]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>{{Documentation}}</noinclude>
pd0yqegnfdsj89sf3zt5sihlrghclhd
Template:Check category
10
1289
2810
2809
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2809
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Check category}} begin-->{{Ambox
| name = Check category
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This article may be in the wrong '''[[Wikipedia:Category|category]]''' or belong in further categories.
| fix = Please [[Wikipedia:Categorization|re-categorize]] this article to list it with similar topics or add further categories if required. If you are satisfied that the article is in the correct category please remove this tag.
| date = {{{date|}}}
| removalnotice = yes
| all = Category needs checking
}}<!--{{Check category}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
gkwckih15t7u88iyxle4oe1vc28vtct
Template:Cherokee script needed
10
990
2212
2211
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2211
wikitext
text/x-wiki
{{Script needed
|language = Cherokee
|image = Cherokee sample.svg
}}
8af6o9q4hfyxli7ntmq8fkt7kx4qk52
Template:Chicago style
10
1181
2594
2593
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2593
wikitext
text/x-wiki
{{Ambox
|name = Chicago style
|small = {{{small|}}}
|type = notice
|issue = This {{SUBJECTSPACE formatted}} '''uses [[The Chicago Manual of Style|Chicago style]] [[Wikipedia:Parenthetical referencing|citation format]].''' This should not be changed without broad consensus.
}}<includeonly>[[Category:Articles using Chicago style citation format]]</includeonly><noinclude>
{{documentation|content=
Adding this template to a page automatically adds that page to the hidden category [[:Category:Articles using Chicago style citation format]].
<pre>{{Chicago style}}</pre>
produces
{{Chicago style}}
<pre>{{Chicago style|small={{{small|left}}}}}</pre>
produces
{{Chicago style|small={{{small|left}}}}}
}}
</noinclude>
pznlunxfiaumgbmop4sb9bwkzl3iu0w
Template:Chinese script needed
10
991
2214
2213
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2213
wikitext
text/x-wiki
{{Script needed
|language = Chinese
|image = Hanzi.svg
}}
euh3yzwnlajdbb6u1ac601a8oc0m9hp
Template:Chronological
10
1164
2560
2559
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2559
wikitext
text/x-wiki
<!--{{POV}} begin-->{{Ambox
| name = Chronological
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| image = [[File:Orologio oro.svg|40x40px|link=|alt=]]
| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}
| issue = lists events whose '''chronological order is ambiguous, backward, or otherwise incorrect'''.
| talk = {{{talk|#}}}
| fix = Please do not remove this message until the described events are arranged in an unambiguous forward-chronological sequence.
| date = {{{date|}}}
| cat =
| all =
}}<noinclude>
{{Documentation}}
</noinclude>
beq2xmk2fi8x1dbyx4x8lovgeu8b06b
Template:Citation style
10
1004
2240
2239
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2239
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Citation style}} begin-->{{Ambox
| name = Citation style
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| small = {{{small|}}}
| class = ambox-citation_style
| sect = {{{1|}}}
| issue = '''has an unclear citation style'''.
| fix = The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]] and [[Help:Footnotes|footnoting]]. {{#if:{{{details|}}}|<em>{{{details}}}.</em>}}
| cat = Wikipedia references cleanup
| all = All articles needing references cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| removalnotice = yes
}}<!--{{Citation style}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
rvjcf4vzh6qbaflcbcdq71nzxi9zi2m
Template:Citations broken
10
1005
2242
2241
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2241
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Citations broken}} begin-->{{Ambox
| name = Citations broken
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[Image:Text document with red question mark.svg|50x40px]]
| issue = This {{{1|article}}} '''uses [[Wikipedia:Citing sources|citations]] that [[WP:Link rot|link to broken or outdated sources]]'''. {{#if:{{{details|}}}|{{{details|}}}}}
| fix = Please {{plain link|url={{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article}} or discuss this issue on the [[{{TALKPAGENAME}}|talk page]]. [[Wikipedia:Footnotes#How to use|Help]] on using footnotes is available.<!-- Consider using [[tools:~dispenser/cgi-bin/webchecklinks.py/{{PAGENAMEE}}|the Checklinks tool]] to find, resolve and repair links. -->
| date = {{{date|}}}
| cat = Articles with broken or outdated citations
| all = All articles with broken or outdated citations
| removalnotice = yes
}}<!--{{Citations broken}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
t1fu9akx2a3messnvulaoe3l6ndiwi9
Template:Cite check
10
1006
2244
2243
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2243
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cite check}} begin-->{{Ambox
| name = Cite check
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Text document with red question mark.svg|50x40px]]
| issue = This {{{1|article}}} '''possibly contains inappropriate or misinterpreted [[WP:CITE|citations]] that do not [[WP:V|verify]] the text'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}}
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by checking for citation inaccuracies.
| talk = {{{talk|}}}
| cat = Articles lacking reliable references
| date = {{{date|}}}
| removalnotice = yes
| all = All articles lacking reliable references
}}<!--{{Cite check}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
p48ugx6eldbud5jgjmpzuqkskit2jho
Template:Cite news
10
1445
3194
3193
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3193
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=news
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
pbjnspfej5gxihr9izxrzkow3f1uf3i
Template:Cite web
10
1446
3196
3195
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3195
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=web
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
rcgmbcxu7hvs583g1f3rzz4c4dkizda
Template:Cl
10
1645
4938
4937
2020-10-11T05:50:39Z
Chrisb
1
1 revision imported
4937
wikitext
text/x-wiki
#REDIRECT [[Template:Category link]]
{{R from move}}
sxb6uqb5pxx7i9ck11lxcop05gxni7w
Template:Clc
10
1661
4970
4969
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4969
wikitext
text/x-wiki
#REDIRECT [[Template:Category link with count]]
092gm3mu5vr84eif0gc6y7q98csnc9h
Template:Cleanup
10
1197
2626
2625
2020-09-29T19:18:01Z
Chrisb
1
1 revision imported
2625
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifexpr:{{#expr:{{#iferror:{{#time:U|{{{date}}}}}|2000000000}}>=1341100800}}*{{#if:{{{reason|<noinclude>x</noinclude>}}}|0|1}}*{{#ifeq:{{{nocat}}}|true|0|1}}
|{{error|1=You must add a {{para|reason}} parameter to this Cleanup template – replace it with <code><nowiki>{{Cleanup|</nowiki>{{#if:{{{1|}}}|{{{1|}}}{{!}}|}}{{#if:{{{date|}}}|<nowiki>date=</nowiki>{{{date|}}}{{!}}}}<nowiki>reason=<Fill reason here>}}</nowiki></code>, or remove the Cleanup template.<br style="clear:both;">
}}{{Category handler
|nocat = {{{nocat|}}}
|main = {{DMC|Cleanup tagged articles without a reason field|from|{{{date|}}}}}
}}
|{{main other
|{{ambox
| name = Cleanup
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| class = ambox-Cleanup
| small = {{{small|}}}
| sect = {{{1|}}}
| issue = may '''require [[Wikipedia:cleanup|cleanup]]''' to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]. {{#if:{{{2|{{{reason|}}}}}}
|The specific problem is: '''{{{2|{{{reason}}}}}}'''
}}
| talk = {{{talk|{{{talksection|}}}}}}
| fix = {{#if:{{{2|{{{reason|}}}}}}|
|No [[Template:Cleanup/doc|cleanup reason]] has been specified.
}} Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Cleanup tagged articles with{{#if:{{{2|{{{reason|}}}}}}||out}} a reason field
}}
|{{mbox
| demospace = {{{demospace|}}}
| type = style
| text = This {{{1|{{SUBJECTSPACE formatted}}}}} '''may require [[Wikipedia:cleanup|cleanup]] to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]'''. {{#if:{{{2|{{{reason|}}}}}}
|The specific problem is: '''{{{2|{{{reason}}}}}}'''
|No [[Template:Cleanup/doc|cleanup reason]] has been specified.
}} Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can{{#ifeq:{{SUBJECTSPACE}}|{{NAMESPACE}}
|; the [[{{TALKPAGENAME}}{{#if:{{{talksection|}}}|#{{{talksection}}}}}|talk page]] may contain suggestions.
|.
}}
}}
| demospace = {{{demospace|<noinclude>main</noinclude>}}}
}}{{Category handler
|page = {{SUBJECTPAGENAME}}
|nocat = {{{nocat|}}}
|category = {{DMC|Wikipedia categories needing cleanup|from|{{{date|}}}}}
|template = {{#ifeq:{{#titleparts:{{FULLPAGENAME}}|1}}|Template:Cleanup||{{DMC|Wikipedia templates needing cleanup|from|{{{date|}}}}}}}
|other = {{DMCA|Wikipedia pages needing cleanup|from|{{{date|}}}}}
}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
5e3z12y1koj4dg9rtv10gu1ojmgr2gl
Template:Cleanup-PR
10
1252
2736
2735
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2735
wikitext
text/x-wiki
<noinclude>{{for|the citation template|Template:Cite press release}}</noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{News release}} begin-->{{Ambox
| name = Cleanup-PR
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| sect = {{{1|}}}
| issue = '''reads like [[Wikipedia:What Wikipedia is not#SOAPBOX|{{#if:{{{2|}}}|{{{2}}}|a press release}}]] or [[Wikipedia:What Wikipedia is not#NEWS|{{#if:{{{3|}}}|{{{3}}}|a news article}}]]''' and '''is largely based on [[Wikipedia:Notability (events)#Routine coverage|routine coverage]]''' or '''[[Wikipedia:Notability (events)#Sensationalism|sensationalism]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} expand this article] with [[Wikipedia:Identifying reliable sources|properly sourced content]] to meet Wikipedia's [[Wikipedia:Manual of Style|
quality standards]], [[Wikipedia:Notability (events)|event notability guideline]], or [[Wikipedia:What Wikipedia is not|encyclopedic content policy]].
| date = {{{date|}}}
| cat = Articles with a promotional tone
| all = All articles with a promotional tone
}}<!--{{News release}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
hdey3q64oltra9qnp7d6fmfzhwjs0e0
Template:Cleanup-notwebhost
10
1244
2720
2719
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2719
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup-notwebhost}} begin-->{{Ambox
| name = Cleanup-notwebhost
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-notwebhost
| issue = '''[[WP:NOTWEBHOST|Wikipedia is not a web host]]'''. To conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, this article may need to be [[Wikipedia:Cleanup|rewritten]] from a [[Wikipedia:Neutral point of view|neutral point of view]].
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding encyclopedic content and [[Wikipedia:Identifying reliable sources|reliable secondary sources]]. There may be relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]].<br /><small>{{find sources mainspace}}</small>
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with a promotional tone
| all = All articles with a promotional tone
}}<!--{{Cleanup-notwebhost}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
sfk1s9s70dregtndcryq1metki3478p
Template:Cleanup AfD
10
1155
2542
2541
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2541
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Cleanup AfD
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-cleanup-afd
| sect = article
| issue = '''was [[Wikipedia:Articles for deletion|considered for deletion]], and requires [[Wikipedia:Cleanup|cleanup]] according to [[Wikipedia:Articles for deletion/{{{1|{{PAGENAME}}}}}|the discussion]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] if you can; the deletion discussion may suggest necessary improvements.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
loxj2vy335edd67qfrd3nzu298qc43p
Template:Cleanup Congress bio
10
1292
2816
2815
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2815
wikitext
text/x-wiki
<!--{{Cleanup Congress bio}} begin-->{{Ambox
| name = Cleanup Congress bio
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| imageright = [[File:Seal of the United States Congress.svg|50x40px|US Congress seal]]
| issue = This article was '''[[Wikipedia:WikiProject U.S. Congress/Bioguide|imported]] in part or in full from the [[Biographical Directory of the United States Congress]]''' and may require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]].
| fix = [[Help:Editing|Editing help]] is available.
| all = Biographical Directory of the United States Congress cleanup
| removalnotice = yes
}}<!--{{Cleanup Congress bio}} end--><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
1nj08csz3sw3dutjjqnf116bntp0jsb
Template:Cleanup HTML
10
1263
2758
2757
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2757
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup HTML begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Cleanup HTML
| type = style
| image = [[File:Ambox wikify.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''uses [[Help:HTML_in_wikitext|HTML markup]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by changing HTML markup to [[Help:Wikitext|Wiki markup]] where appropriate. For help finding or replacing the problematic tags, see [[:Category:Articles with HTML markup|instructions]].
| cat = Articles with HTML markup
| cat2 = Articles covered by WikiProject Wikify
| date = {{{date|}}}
| info = {{#if:{{{tags|}}}| The specific tags found on this page (there may be others) include: {{{tags}}} }}
}}<!--{{Cleanup HTML}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
5whxtsidlszt85mbvuzmxtq9c76qhly
Template:Cleanup bare URLs
10
1255
2742
2741
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2741
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup bare URLs}} begin-->{{Ambox
| name = Cleanup bare URLs
| type = style
| class = ambox-cleanup-link_rot
| image = [[File:Text document with red question mark.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''uses [[Wikipedia:Bare URLs|bare URLs]], which may be threatened by [[Wikipedia:Link rot|link rot]].'''
| fix = Please consider converting them to [[Wikipedia:Citing sources#Citation styles|full citations]] to ensure the article remains [[Wikipedia:Verifiability|verifiable]] and maintains a consistent citation style. [[Wikipedia:Template messages/Sources of articles#Examples|Several templates]] and tools are available to assist in formatting. (One such tool to fix up some types of bare URLs is [https://refill.toolforge.org/ng/result.php?page={{FULLPAGENAMEE}}&defaults=y reFill], see also its [[User:Zhaofeng Li/reFill|documentation]])
| date = {{{date|}}}
| cat = Articles needing cleanup
| cat2 = Articles with bare URLs for citations
| all2 = All articles with bare URLs for citations
| cat3 = Articles covered by WikiProject Wikify
| all3 = All articles covered by WikiProject Wikify
| removalnotice = yes
}}<!--{{Cleanup bare URLs}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
o80wou3dejoee7fq0ykb8hvn90aq7g6
Template:Cleanup biography
10
1290
2812
2811
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2811
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup biography}} begin-->{{Ambox
| name = Cleanup biography
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| issue = '''This biographical article needs more biographical information on the subject.'''
| fix = Statistical information, such as date and place of birth, information on historical significance, and information on accomplishments is desired. Please remove this message when done. See this article's [[{{TALKSPACE}}:{{PAGENAME}}|talk page]] for more information.
| date = {{{date|}}}
| all = Biographies with insufficient biographical information
}}<!--{{Cleanup biography}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
brhb5zwitjvuodzf3o4s2c0qmibyun2
Template:Cleanup book
10
1209
2650
2649
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2649
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup book}} begin-->{{Ambox
| name = Cleanup book
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| imageright = [[File:Books-aj.svg aj ashton 01.svg|50px|link=]]
| issue = '''To comply with the Wikipedia [[:Category:Wikipedia style guidelines|quality standards]], this book-related article may require [[Wikipedia:Cleanup|cleanup]].'''
| fix = This article contains very little context, or is '''unclear''' to readers who know little about the book. See this article's [[Talk:{{PAGENAME}}|talk page]] before making any large or controversial edits.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| all2 = Books needing cleanup
}}<!--{{Cleanup book}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
6c4zbam196kc3szkinoadw1nxygmavk
Template:Cleanup gallery
10
1277
2786
2785
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2785
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Cleanup gallery}} begin--> {{Ambox
| name = Cleanup gallery
| type = style
| removalnotice = yes
| issue = This {{{1|section}}} '''contains an unencyclopedic or excessive gallery of images'''.
| fix = Please help improve the {{{1|section}}} by [[Wikipedia:Image use policy#Image galleries|removing excessive or indiscriminate images]] or by [[MOS:IMAGERELEVANCE|moving relevant images]] beside adjacent text, in accordance with the [[Wikipedia:Manual of Style/Images|Manual of Style on use of images]]. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}}
}}<!--{{Cleanup gallery}} end-->}}<noinclude>{{Documentation}}</noinclude>
dz42hotvv9l7qkj9mu9wiot46cqtkc8
Template:Cleanup infobox
10
1237
2706
2705
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2705
wikitext
text/x-wiki
{{Ambox
|name = Cleanup infobox
|subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|type = style
|image = [[File:Icon tools.svg|35px|Maintenance]]
|issue ='''This {{{1|page}}}'s [[Help:Infobox|infobox]] may require expansion, verification, or otherwise need cleanup.'''
|fix = Please make sure that the infobox meets [[Wikipedia:Manual of Style/Infoboxes|Wikipedia's guidelines for infoboxes]]. There might be relevant comments on [[{{TALKPAGENAME}}|the talk page]]. You may also want to view the infobox template page to view the full parameter list and read guidance on usage of that infobox.
|demospace={{{demospace|}}}
|date ={{{date|<noinclude>{{#time:F Y}}</noinclude>}}}
}}{{category handler
| main = [[Category:Wikipedia infobox cleanup|{{PAGENAME}}]]
| talk = [[Category:Wikipedia infobox cleanup|{{SUBJECTPAGENAME}}]]
| template= <includeonly>{{Error|Serious error:{{tlg|Cleanup infobox}} is for specific transclusions of infoboxes, not for infobox templates themselves.}}[[Category:Pages with misplaced templates|{{PAGENAME}}]]</includeonly>
| other = <!-- Don't categorize when not in the above spaces -->}}
<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
pgl8v5y71wo97z8b3gh3luttp41hhve
Template:Cleanup merge
10
1165
2562
2561
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2561
wikitext
text/x-wiki
{{Ambox
| small = {{{small|}}}
| name = Cleanup merge
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| image = [[Image:Split-arrows.svg|50x40px|alt=|link=]]
| issue = '''This {{#ifeq:{{{21}}}|section|section|article}} may need to be cleaned up.''' It has been merged from {{Pagelist|delim=''|{{{1|(link)}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}.
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
3zxmn6vww2x5c9gd7719voafj1wzw1c
Template:Cleanup red links
10
1007
2246
2245
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2245
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup red links}} begin-->{{Ambox
| name = Cleanup red links
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This {{{1|article}}}'s use of [[Wikipedia:Red link|red links]] '''may not follow Wikipedia's [[Wikipedia:Red link|guidelines]]'''.
| fix = Please help {{#ifeq:{{{1}}}|section|[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this section]|[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]}} by removing excessive and inappropriate red links while leaving those that help [[WP:BUILD|interlink articles and encourage growth]].
| cat = Wikipedia red link cleanup
| date = {{{date|}}}
}}<!--{{Cleanup red links}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
3z6b44zaz76217bwgyfhkrb7w7zf55i
Template:Cleanup reorganize
10
1256
2744
2743
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2743
wikitext
text/x-wiki
<noinclude>{{redirects here|Template:Organization|the infobox|Template:Infobox organization}}</noinclude>{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!-- {{Cleanup reorganize}} begin -->{{Ambox
| name = Cleanup reorganize
|type = style
|image = [[File:Ambox rewrite.svg|40px|link=]]
|issue = This {{{1|article}}} '''may be in need of reorganization to comply with Wikipedia's [[Wikipedia:Manual of Style/Layout|layout guidelines]]'''. {{{more|}}}
|fix = Please help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} editing the article] to make improvements to the overall structure.
|removalnotice = yes
|cat = Wikipedia articles needing reorganization
|date = {{{date|}}}
}}<!-- {{Cleanup reorganize}} end -->
}}<noinclude>
{{Documentation}}
</noinclude>
5nzpisrtsk7hu7mg6jtcys19uykhvtd
Template:Cleanup rewrite
10
1260
2752
2751
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2751
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|Cleanup rewrite}}}
| subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly>
| type = content
| image = [[File:Crystal Clear app kedit.svg|50x40px]]
| sect = {{{2|{{#ifeq:{{{section|}}}|yes|section}}}}}
| small = {{{small|}}}
| issue = may need to be '''rewritten''' to comply with Wikipedia's [[Wikipedia:Manual of Style|quality standards]]{{#if:{{{1|}}}|, as {{{1}}}}}.
| fix = [{{fullurl:{{FULLPAGENAME}}|action=edit}} You can help]. The [[{{TALKPAGENAME}}|talk page]] may contain suggestions.
| cat = Wikipedia articles needing rewrite
| all = All articles needing rewrite
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
gx7dtdwvat2ogj92vm5s0owwlf2hvjl
Template:Cleanup split
10
1008
2248
2247
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2247
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup Split}} begin-->{{Ambox
| small = {{{small|}}}
| name = Cleanup split
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| image = [[Image:Split-arrows.svg|50x40px|alt=|link=]]
| issue = This article or section '''may need to be cleaned up or summarized''' because it has been split from/to {{Pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}.
}}<!--{{Split}} end-->
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, please not here! -->
</noinclude>
3iwu989o65s56dri74c1wmyy26l4fv5
Template:Cleanup taxobox
10
1270
2772
2771
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2771
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Cleanup taxobox}} begin-->{{Ambox
| name = Cleanup taxobox
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| image =
| issue = '''This article's [[Wikipedia:Automated taxobox system|taxobox]] needs cleanup<includeonly>{{#if:{{{concern|}}}|{{sp}}({{{concern|}}})}}</includeonly>.'''
| talk = {{{talk|#}}}
| fix = Please confirm the [[Taxonomy (biology)|taxonomy]] and check the formatting of the information in the taxobox.
| date = {{{date|}}}
| removalnotice = yes
| cat =
| all = Taxobox cleanup requests
}}<!--{{Cleanup taxobox}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
fkpjn145xmll77upy4ytdjlvbn4zhr5
Template:Cleanup tense
10
1257
2746
2745
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2745
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Cleanup tense
| type = style
| class = ambox-cleanup-tense
| issue = This {{{1|article}}} '''does not follow Wikipedia's [[WP:Writing better articles#Tense|guidelines on the use of different tenses]]'''.
| fix = Please consider [[Wikipedia:Basic copyediting |copy editing]] to {{{tense|past tense if historic, present tense if not time-based (e.g. [[Wikipedia:Manual of Style (writing about fiction)|fiction]]), or future tense if upcoming}}}.
| removalnotice = yes
| date = {{{date|}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Wikipedia articles with incorrect tenses}}}}}}}</includeonly>
}}<noinclude>
{{Documentation}}
</noinclude>
ankehu7ozvfulj1vxwjha58s954gjml
Template:Clear
10
1325
2882
2881
2020-09-29T19:18:25Z
Chrisb
1
1 revision imported
2881
wikitext
text/x-wiki
<div style="clear:{{{1|both}}};"></div><noinclude>
{{documentation}}
</noinclude>
6mk3e4afot6hzu6tzbljxxk83e14xv6
Template:Close paraphrasing
10
1009
2250
2249
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2249
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Close paraphrasing}} begin-->{{Ambox
| name = Close paraphrasing
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| class = ambox-Close_paraphrasing{{#if:{{{1|}}}|{{#ifeq:{{{1}}}|article||-section}}|}}
| image = [[File:Copyright-problem.svg|50x40px|alt=|link=]]
| issue = This {{{1|article or section}}} '''contains [[Wikipedia:Close paraphrasing|close paraphrasing]] of {{#if:{{{source|}}}|{{#ifeq:{{{free|}}}|yes|an external|a non-free copyrighted}} source, {{{source|}}} {{#ifeq: {{str left|{{{source|}}}|7}} | http:// | ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{source|}}}|minwords={{{minwords|3}}}}})}} |one or more {{#ifeq:{{{free|}}}|yes|external|non-free copyrighted}} sources}}'''.
| fix = Ideas in this article should be expressed in an original manner.
| removalnotice = yes
| talk = {{{talk|#}}}
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = {{#ifeq:{{{free|}}}|yes|Articles with close paraphrasing of public domain sources|Articles with close paraphrasing}}
| all2 = All articles with close paraphrasing
}}<!--{{Close paraphrasing}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
soka965nq8zlbzh6mdk26u1w9yc2mfc
Template:Cmbox
10
915
2062
2061
2020-09-29T19:17:22Z
Chrisb
1
1 revision imported
2061
wikitext
text/x-wiki
{{#invoke:Message box|cmbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
2wg1g94nws2nefrz0o1pxm105lovzoz
Template:Cmbox/doc
10
1322
2876
2875
2020-09-29T19:18:23Z
Chrisb
1
1 revision imported
2875
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). -->
{{High-risk| 167000+ }}
{{Lua|Module:Message box}}
{{Mbox templates (small)}}
This is the {{tl|Cmbox}} (['''C''']ategory ['''m''']essage ['''box''']) metatemplate.
It is used to build message box templates such as {{tl|Category diffuse}} for category pages. It offers several different colours, uses default images if no image parameter is given, and it has some other features.
This template works almost exactly like {{tl|Ambox}} and uses the same parameters.
<!--
=== We are deploying! ===
After long discussion on the [[Template talk:Cmbox|talk page]] of this template and at other places we are finally deploying this template. Feel free to convert any message boxes used on category pages to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help.
When this template is used to build category message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here.
-->
=== Usage ===
Simple usage example:
<pre>
{{cmbox | text = Some text.}}
</pre>
{{cmbox | text = Some text.}}
Complex example:
<pre>
{{cmbox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
</pre>
{{cmbox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
=== Category message box types ===
The following examples use different '''type''' parameters but use no image parameters, thus they use the default images for each type.
{{cmbox
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion templates such as {{tl|db-c1}}.
}}
{{cmbox
| type = delete
| text = type=<u>delete</u> – Deletion templates such as {{tl|cfd}}.
}}
{{cmbox
| type = content
| text = type=<u>content</u> – Major warnings and problems such as {{tl|Categorization of people disputed}}.
}}
{{cmbox
| type = style
| text = type=<u>style</u> – Minor warnings and problems such as {{tl|Overpopulated category}}.
}}
{{cmbox
| type = notice
| text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary.
}}
{{cmbox
| type = move
| text = type=<u>move</u> – Move, merge, and split messages and proposals such as {{tl|Category redirect}}.
}}
{{cmbox
| type = protection
| text = type=<u>protection</u> – Protection templates such as {{tl|pp}} when shown on a category page.
}}
=== Other images ===
The default images shown above are mostly for convenience. In many cases it is more appropriate to use more specific images. These examples use the '''image''' parameter to specify an image other than the default images.
{{cmbox
| type = style
| image = [[File:Sub-arrows.svg|40px]]
| text = type = style<br />image = <nowiki>[[File:Sub-arrows.svg|40px]]</nowiki><br />This image is used for {{tl|Overpopulated category}} and {{tl|Category diffuse}}.
}}
{{cmbox
| type = move
| image = [[File:Redirect arrow.svg|52px]]
| text = type = move<br />image = <nowiki>[[File:Redirect arrow.svg|52px]]</nowiki><br />This image is used for {{tl|Category redirect}}.
}}
=== Special ===
Some other parameter combinations.
{{cmbox
| text = No type and no image given ('''default''')
}}
{{cmbox
| image = none
| text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area.
}}
{{cmbox
| image = [[File:Gnome globe current event.svg|42px]]
| imageright = [[File:Nuvola apps bookcase.svg|40px]]
| text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki><br />imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki>
}}
{{cmbox
| image = [[File:Gnome globe current event.svg|42px]]
| imageright = [[File:Shuttle.svg|20px]]
| text = '''This category lists articles about current and recent [[spaceflight]]s.'''<br />It is populated by the {{tl|Current spaceflight}} template.
}}
=== Parameters ===
List of all parameters:
<pre>
{{cmbox
| name = name of the template
| type = speedy / delete / content / style / notice / move / protection
| image = none / [[File:Some image.svg|40px]]
| imageright = [[File:Some image.svg|40px]]
| class = A custom CSS class to apply to the box
| style = CSS values
| textstyle = CSS values
| plainlinks = no
| text = The message body text.
}}
</pre>
'''name'''
:(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts.
'''type'''
:If no '''type''' parameter is given, the template defaults to type '''notice'''. That means it gets a blue background.
'''image'''
:'''No parameter''' = If no '''image''' parameter is given, the template uses a default image. Which default image it uses depends on the '''type''' parameter.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width is usually about right depending on the image height-to-width ratio (but the message box can handle images of any size).
::For example: <code><nowiki>image = [[File:Sub-arrows.svg|40px]]</nowiki></code>
:'''none''' = Means that no image is used.
'''imageright'''
:'''No parameter''' = If no '''imageright''' parameter is given, no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width is usually about right depending on the image height-to-width ratio (but the message box can handle images of any size).
::For example: <code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
'''style'''
:An optional [[Cascading Style Sheets|CSS]] value used by the entire message box table. Without quotation marks <code>" "</code>.
::For example: <code>style = margin-bottom: 0.5em;</code>
'''textstyle'''
:An optional [[Cascading Style Sheets|CSS]] value used by the text cell.
::For example: <code>textstyle = text-align: center;</code>
'''plainlinks'''
:Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
'''text'''
:The message body text.
=== Technical details ===
If you need to use special characters in the text parameter then you need to escape them like this:
<pre>
{{cmbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</pre>
{{cmbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
This template uses the cmbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable.
Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[mw:Help:Extension:ParserFunctions|parser functions]] and special characters in parameters.
The default images for this meta-template are in PNG format instead of SVG format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for SVG images. The PNG images here have hand-optimised transparent background colour so they look good in all browsers. Note that SVG icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
For more technical details see the [[Template talk:Cmbox|talk page]]. Since this template works almost exactly like the other mboxes, their talk pages and related pages might also contain more details (see the [[#See also|See also]] section below).
===See also===
{{Mbox templates see also}}
<includeonly>{{Sandbox other||
<!-- Categories go below this line, please; interwikis go to Wikidata, thank you! -->
[[Category:Mbox and messagebox templates]]
[[Category:Category namespace templates|*]]
}}</includeonly>
i97vgvgkelf7e227cmr65vl8xd326e5
Template:Collapse bottom
10
1476
3256
3255
2020-10-11T01:41:27Z
Chrisb
1
1 revision imported
3255
wikitext
text/x-wiki
|}</div><noinclude>
{{Documentation|Template:Collapse top/doc}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
thrcxllb1z8kfhc183yxne30rpzluba
Template:Collapse top
10
1477
3258
3257
2020-10-11T01:41:27Z
Chrisb
1
1 revision imported
3257
wikitext
text/x-wiki
<div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section -->
{| <!-- Template:Collapse top --> class="mw-collapsible {{{{{|safesubst:}}}#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;"
|-
! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{align|}}}|left|center}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display:inline;font-size:115%">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div>
{{{{{|safesubst:}}}#if:{{{warning|{{{2|}}}}}}
|{{{{{|safesubst:}}}!}}-
{{{{{|safesubst:}}}!}} style="text-align:center; font-style:italic;" {{{{{|safesubst:}}}!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }}
|-
| style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{{{{|safesubst:}}}!}}<noinclude>
{{lorem ipsum|3}}
{{Collapse bottom}}
{{Documentation}}
{{Collapse top/TemplateData}}
</noinclude>
0499saf84vfqfe8hu8ka47kg01mfohz
Template:Colloquial
10
1088
2408
2407
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2407
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Colloquial}} begin-->{{Ambox
| name = Colloquial
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This {{{1|article}}} '''may contain too many [[WP:COLLOQUIAL|colloquial]] terms, phrases or words.'''
| fix = These concerns ought to be addressed or reviewed. Specific concerns may be found on the [[{{TALKPAGENAME}}|talk page]]. See Wikipedia's [[Wikipedia:Guide to writing better articles|guide to writing better articles]] for suggestions.
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Colloquial}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
4ykizql89bismtj37ck6glgbsfnefpc
Template:Coming soon
10
1508
4664
4663
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4663
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#FFD1DC; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-siteactive"|{{{1|Coming soon}}}<noinclude>
|}
{{Documentation|Template:Coming soon/doc}}
</noinclude>
4kuudaae6ez6p3n6t7dz13iaz2y9hhg
Template:Condense
10
1010
2252
2251
2020-09-29T19:17:34Z
Chrisb
1
1 revision imported
2251
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Condense}} begin-->{{Ambox
| name = Condense
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| class = ambox-condense
| issue = This {{{1|article}}} '''may have [[Wikipedia:Manual of Style/Layout#Headings and sections|too many {{#ifeq:{{{1}}}|section|sub}}section headers dividing up its content]]'''.
| fix = Please help improve the {{{1|article}}} by merging similar sections and removing unneeded subheaders.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
}}<!--{{Condense}} end-->
}}<noinclude>
{{Documentation}}
<!-- Please add this template's categories to the /doc subpage, languages go in Wikidata - thanks! -->
</noinclude>
qwxymwi66ztl9nz2zibt9aq94cowfxi
Template:Confusing
10
936
2104
2103
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2103
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Confusing
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-confusing
| sect = {{{1|}}}
| issue = '''may be [[Wikipedia:Vagueness|confusing or unclear]] to readers'''. {{#if:{{{reason|}}}|In particular, {{{reason}}}.}}
| fix = Please help us [[Wikipedia:Please clarify|clarify the {{{1|article}}}]]. There {{#if:{{{talk|{{{2|}}}}}}|is|might be}} a discussion about this on {{#if:{{{talk|{{{2|}}}}}}|{{format link|{{{talk|{{{2|}}}}}}}}|[[{{TALKPAGENAME}}|the talk page]]}}.
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles needing clarification
| all = All Wikipedia articles needing clarification
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
qyzhgkbvwoa41srarxnz2mg8ajo8edo
Template:Content
10
1089
2410
2409
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2409
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Content}} begin-->{{Ambox
| name = Content
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| issue = The relevance of particular information in (or previously in) this article or section is '''[[Wikipedia:Accuracy dispute|disputed]]'''.
| fix = The information may have been '''removed''' or '''included''' by an editor as a result. Please see discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{1|}}}|talk page]] considering whether its inclusion is warranted.
| date = {{{date|}}}
| cat = Accuracy disputes
}}<!--{{Content}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ejce8nknlmceppbldyglxqevemmtcl4
Template:Context
10
1090
2412
2411
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2411
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Context}} begin-->{{Ambox
| name = Context
| subst= <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class= ambox-Context
| issue= This {{{1|article}}} '''provides insufficient context for those unfamiliar with the subject'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve the article] by [[Wikipedia:Writing better articles#Provide context for the reader|providing more context for the reader]]{{#if:{{{details|}}}|, especially: {{{details}}}}}.
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles needing context
| all = All Wikipedia articles needing context
| cat2 = Wikipedia introduction cleanup
| all2 = All pages needing cleanup
}}<!--{{Context}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ms4va6oqoc9e7jko54ylu6jlab6uy9a
Template:Contradicts other
10
1217
2666
2665
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2665
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Contradicts other
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[Image:Ambox contradict.svg|link=|50x40px|Accuracy dispute]]
| issue = This {{{4|article}}} '''appears to contradict {{#if: {{{1|}}} | {{#ifeq: {{Mw lang|fn=is_code|{{{lang|}}}}} | true | the {{Mw lang|{{{lang}}}}} {{{5|article}}} [[:{{{lang}}}:{{{1}}}|{{{1}}}]] | the {{{5|article}}} [[{{{1}}}]] }} | another article }}'''.
| fix = Please see discussion on the linked [[{{#switch:{{lc:{{{2}}}}}|here={{TALKPAGENAME}}|there={{#if:{{{talk|}}}|{{{talk}}}|Talk:{{{1}}}}}|{{TALKPAGENAME}}}}{{#if:{{{3|}}}|#{{{3|}}}}}|talk page]].
| date = {{{date|}}}
| removalnotice = yes
| all = Articles contradicting other articles
}}
}}<noinclude>
{{Documentation}}
</noinclude>
5a3icqmj1nxn5175eyj15ops1zw1nr4
Template:Contradicts others
10
1220
2672
2671
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2671
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Contradicts others
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Ambox contradict.svg|50x40px|alt=]]
| issue = This article '''appears to contradict {{#if:{{{1|}}}|the article{{#if:{{{2|}}}|s}} {{Pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}|{{{21|}}}}}|another article}}'''.
| fix = Please see discussion on the linked [[{{#if:{{{discuss|}}}|{{{discuss}}}|{{TALKPAGENAME}}}}|talk page]]. Please do not remove this message until the contradictions are resolved.
| date = {{{date|}}}
| all = Articles contradicting other articles
}}
}}<noinclude>
{{Documentation}}
</noinclude>
mltys63vzn9ekfv09gfm1gex8ujilkx
Template:Converted
10
1091
2414
2413
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2413
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Converted
| class = ambox-converted
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[Image:Ambox outdated serious.svg|44x40px]]
| issue = The title of this page was previously used for another page, which was recently moved{{#if:{{{new|}}}| to [[{{{new}}}]]|}} to allow the title to be used for this page.
| talk = {{{talk|}}}
| fix = Other pages that should link to that new title may still link here. You can help fix this by clicking on the [[Help:What links here|What links here]] tab on the left, and making these changes accordingly.
| date = {{{date|}}}
| cat = Wikipedia articles in need of updating
}}
}}<noinclude>
{{Documentation}}<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
o90xc3vnlc1i6ooxo0e2tq5p0exhxyk
Template:Copied section to Wikisource
10
1011
2254
2253
2020-09-29T19:17:34Z
Chrisb
1
1 revision imported
2253
wikitext
text/x-wiki
<!--{{Copied section to Wikisource}} begin-->{{Ambox
| name = Copied section to Wikisource
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| small = {{{small|}}}
| image = [[Image:Edit-copy purple.svg|40px]]
| sect = {{{1|section}}}
| issue = '''has been copied to [[Wikisource]].'''
| fix = Please rewrite it in an encyclopedic style, provide link to source material using {{tl|wikisource}} template, and remove this notice.
| all = Copy to Wikisource
}}<!--{{Copied section to Wikisource}} end--><noinclude>
{{documentation}}
</noinclude>
hl9k0x31djbounu64vswgfb3gb6xa72
Template:Copied to Wikibooks
10
1012
2256
2255
2020-09-29T19:17:34Z
Chrisb
1
1 revision imported
2255
wikitext
text/x-wiki
<!--{{Copied to Wikibooks}} begin-->{{Ambox
| name = Copied to Wikibooks
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| image = [[Image:Wikibooks-logo.svg|48px|Wikibooks logo]]
| type = move
| small = {{{small|}}}
| sect = {{{1|}}}
| issue = '''has now been successfully [[b:WB:IMPORT|imported]] to [[Wikibooks]] under the name {{#if:{{{1|}}}|[[b:{{{1}}}|{{{1}}}]]|[[b:Transwiki:{{PAGENAME}}|{{PAGENAME}}]]}}.'''
| fix = If this page can be [[WP:EDIT|rewritten]] into an encyclopedic article, please do so and remove this message and/or add a link to the Wikibook using {{tl|wikibooks}}.
| all = Articles copied to Wikibooks in need of cleanup
}}<!--{{Copied to Wikibooks}} end--><noinclude>
{{documentation}}
</noinclude>
jisdk6dfsci92mc4gq7ezredlu8tlfx
Template:Copied to Wikibooks Cookbook
10
1013
2258
2257
2020-09-29T19:17:34Z
Chrisb
1
1 revision imported
2257
wikitext
text/x-wiki
<!--{{Copied to Wikibooks Cookbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copied to Wikibooks Cookbook
|image=[[Image:Wikibooks-logo.svg|48px|Wikibooks logo]]
|type=move
|text='''This page has been successfully [[meta:Transwiki|copied]] to the [[Wikibooks]] [[b:Cookbook|Cookbook]]''' using the [[b:Wikibooks:Transwiki log|Import]] tool. The wikibooks version of this article can be found by following [[b:Cookbook:{{{1|{{PAGENAME}}}}}|this link to the cookbook article]]. <br /><small>If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message and/or add a link to the wikibook using {{tl|cookbook}}.</small>
}}<includeonly>[[Category:Articles copied to Wikibooks in need of cleanup]]</includeonly><!--{{Copied to Wikibooks Cookbook}} end--><noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
p6k1az4iebn62mon0cgpcmgaq8t9kbo
Template:Copy edit
10
1168
2568
2567
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2567
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| name = Copy edit
| type = style
| class = ambox-Copy_edit
| image = [[File:Acap.svg|40x40px|alt=|link=]]
| issue = This {{{1|article}}} '''may require [[Wikipedia:Basic copyediting|copy editing]] for {{{for|{{{reason|grammar, style, cohesion, tone, or spelling}}}}}}'''.
| fix = You can assist by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} editing it].
| removalnotice = yes
| cat = Wikipedia articles needing copy edit
| date = {{{date|}}}
| all = All articles needing copy edit
}}
}}<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{documentation}}
</noinclude>
a4xxt7htz4adczm8yv0grc6ey1vj65d
Template:Copy section to Wikisource
10
1186
2604
2603
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2603
wikitext
text/x-wiki
<!--{{Copy section to Wikisource}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy section to Wikisource
| type = move
| image = [[Image:Edit-copy purple-wikis.svg|40px]]
| text = '''This section is a candidate to be [[meta:Transwiki|copied]] to [[Wikisource]].'''<br /><small>If the section can be [[Wikipedia:How to edit a page|edited]] into encyclopedic content, rather than merely a copy of the source text, please do so and remove this message. Otherwise, you can help by formatting it per the [[:s:Help:Adding texts|Wikisource guidelines]] in preparation for the duplication.</small>{{#if:{{{1|}}}|<div style="font-size:0.9em;">
: '''Notes:''' {{{1|}}}.
</div>}}
}}<includeonly>{{{category|[[Category:Copy section to Wikisource]]}}}</includeonly><!--{{Copy section to Wikisource}} end--><noinclude>
{{documentation|content=
==See also==
* [[Template:Copy to Wikisource]]
* [[Template:Wikisource-addition]]
}}
[[Category:Transwiki templates]]
[[Category:Wikisource templates]]
</noinclude>
bd7xnd4xob4vax9w7ybdxpsz4okl2n2
Template:Copy to Wikibooks
10
1261
2754
2753
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2753
wikitext
text/x-wiki
<!--{{Copy to Wikibooks}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikibooks
|image=[[Image:Edit-copy purple-Wikibooks.svg|40px]]
|type=move
|issue='''This {{#if:{{{section|}}}|section|{{#if:{{NAMESPACE}}|page|article}}}} is a candidate to be [[meta:Help:Transwiki|copied]] to {{#if:{{{1|}}}|[[:wikibooks:{{{1}}}|Wikibooks entry on {{{1}}}]]|[[Wikibooks]]}}''' using the '''[[b:Special:Import|Import]]''' process.
|fix=<br />If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br />
<small>Before you move this content to Wikibooks, verify that it conforms to Wikibooks policies of acceptable content at ''[[b:WB:WIW|What is Wikibooks?]]'' Often content unacceptable to Wikipedia may not be acceptable on Wikibooks either; facilitate the copying of this article by listing it on [[b:WB:RFI|Wikibooks:Requests for Import]].</small>
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikibooks]]}}}}}</includeonly><!--{{Copy to Wikibooks}} end--><noinclude>
{{Documentation}}
</noinclude>
pyq98az7fdzpon2r358x3a1gb37bfah
Template:Copy to Wikibooks Cookbook
10
1015
2262
2261
2020-09-29T19:17:35Z
Chrisb
1
1 revision imported
2261
wikitext
text/x-wiki
<!--{{Copy to Wikibooks Cookbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikibooks Cookbook
|image=[[File:Edit-copy purple.svg|40px]]
|type=move
|text='''This page is a candidate to be [[m:transwiki|copied]] to the [[Wikibooks:Cookbook:Table of Contents|Wikibooks Cookbook]]''' using the '''[[b:Special:Import|Import]]''' process. <br>If the page can be [[Wikipedia:How to edit a page|edited]] into an encyclopedic article, rather than simply a recipe, please do so and remove this message. <br /><small>To facilitate the copying of this article, please consider listing it on [[b:Wikibooks:Requests for Import|Wikibooks:Requests for Import]]. Check to see if the cookbook already has [[b:Cookbook:{{PAGENAME}}|a page about this recipe or ingredient]] and alternatively use a [[Wikipedia:Soft redirect|soft redirect]] if appropriate.</small>
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikibooks]]}}}}}</includeonly><!--{{Copy to Wikibooks Cookbook}} end--><noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
n63jgs6fue5f3ivzgmkn2xdu7gss2j1
Template:Copy to Wikimedia Commons
10
1144
2520
2519
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2519
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Copy to Wikimedia Commons}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{main other
| demospace = {{{demospace|}}}
| <!-- Show with ambox style on article pages -->
{{Ambox
| name = Copy to Wikimedia Commons
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = move
| image = [[File:To Commons.svg|50px|Copy to Commons]]
| text = '''This page is a candidate to be [[m:Help:Transwiki|copied]] to [[commons:Main Page|Wikimedia Commons]]'''. <br/> If the page can be [[Help:Editing|re-written]] into an encyclopedic article, please do so and remove this message.
}}
| <!-- Show with imbox style on all other pages -->
{{Imbox
| type = move
| name = Copy to Wikimedia Commons
| image = [[File:To Commons.svg|50px|Copy to Commons]]
| text = '''This file is a candidate to be copied to [[c:Main Page|Wikimedia Commons]]'''.
Any user may perform this transfer; refer to [[Wikipedia:Moving files to Commons]] for details.
If this file has problems with [[Wikipedia:Verifiability|attribution]], [[c:Commons:Licensing|copyright]], or is otherwise [[c:Commons:Project scope/Precautionary principle|ineligible]] for Commons, then '''remove''' this tag and '''DO NOT''' transfer it; repeat violators may be [[Wikipedia:Blocking policy|blocked]] from editing.
{{hidden|ta1=left|style=padding:0; font-style:italic;|contentstyle=font-size:80%; font-style:normal;
|1=Other Instructions
|2=
* Endorse this file for transfer by adding <code>{{Pipe}}human=<your username></code> to this Template.
* If this file is freely licensed, but otherwise unsuitable for Commons (e.g. out of [[c:Commons:Project scope|Commons' scope]], still copyrighted in the US), then replace this Template with {{Tlx|Do not move to Commons|reason{{=}}<Why it can't be moved>}}
* If you think that a local copy of this file should be retained, then replace this Template with {{Tlx|Keep local|reason{{=}}<Why a local copy is needed>}}
* Please ensure that the file has a properly descriptive and unambiguous name '''before''' transferring; see [[Wikipedia:File mover#What files should be renamed?]] for details.
}}
<div class="movetocommons-reviewme"></div>
| below = {{#if:{{{bot|}}}| {{imbox|type = delete|text = {{red|'''This file was suggested for transfer by a bot ([[User:{{{bot}}}]])'''}}. Please verify that this file is [[:commons:Special:MyLanguage/Commons:Project_scope/Summary|suitable for Commons]] before transferring it. }} }}{{#if:{{{human|}}}|{{imbox||text = {{Green|'''This file has been reviewed by a human, ([[User:{{{human}}}]])'''}}, who has confirmed that it is suitable for Commons.}}}}
{{#if:{{{human|}}}
| {{#ifexist:Category:Copy to Wikimedia Commons reviewed by {{{human|}}}
| [[Category:Copy to Wikimedia Commons reviewed by {{{human|}}}]]
| [[Category:Copy to Wikimedia Commons reviewed by a human]] }}
}}
}}
}}<includeonly>{{#ifeq: {{NAMESPACE}} | {{ns:6}} |{{{category|{{#if:{{{bot|}}}|[[Category:Copy to Wikimedia Commons (bot-assessed)|{{PAGENAME}}]]|{{#if: {{{inline|}}}|[[Category:Copy to Wikimedia Commons (inline-identified)|{{PAGENAME}}]]|[[Category:Copy to Wikimedia Commons|{{PAGENAME}}]]}}}}}}}}}</includeonly><!--{{Copy to Wikimedia Commons}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
9b2to4e428vnvuinibzbkgmdgxa457m
Template:Copy to Wikiquote
10
1016
2264
2263
2020-09-29T19:17:35Z
Chrisb
1
1 revision imported
2263
wikitext
text/x-wiki
<!--{{Copy to Wikiquote}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikiquote
| image = [[Image:Edit-copy purple-wikiq.svg|50x40px]]
| type = move
| issue = This {{#if:{{{section|}}}|section|page}} '''is a candidate to be [[m:Help:Transwiki|copied]] to [[q:Main Page|Wikiquote]] using the [[Wikipedia:Transwiki log|Transwiki]] process'''.
| fix = {{#if:{{{section|}}}||If the page can be [[Wikipedia:How to edit a page|expanded]] into an encyclopedic article, rather than a list of quotations, please do so and remove this message.}}
| cat = Copy to Wikiquote
}}<!--{{Copy to Wikiquote}} end--><noinclude>
{{Documentation}}
</noinclude>
ehs2wdil16qbwklejbh2ase4asbcx1w
Template:Copy to Wikisource
10
1189
2610
2609
2020-09-29T19:18:00Z
Chrisb
1
1 revision imported
2609
wikitext
text/x-wiki
<!--{{Copy to Wikisource}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikisource
| image = [[Image:Edit-copy purple-wikis.svg|40px]]
| type = move
| issue = '''This page is a candidate to be [[meta:Help:Transwiki|copied]] to [[wikisource:Main Page|Wikisource]].'''
| fix = <br />
If the page can be [[Wikipedia:How to edit a page|edited]] into an encyclopedic article, rather than merely a copy of the source text, please do so and remove this message. Otherwise, you can help by formatting it per the [[:s:Help:Adding texts|Wikisource guidelines]] in preparation for being imported to Wikisource by a Wikisource admin. Note that if this source text is not in English, it will have to be copied using the [[m:Help:Transwiki|transwiki process]].{{#if:{{{1|}}}|<div style="font-size:0.9em;">
: '''Notes:''' {{{1|}}}
</div>}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikisource]]}}}}}</includeonly><!--{{Copy to Wikisource}} end--><noinclude>
{{Documentation}}
</noinclude>
cnwhgol8ozvjs6pfbobh6369fyqncq1
Template:Copy to Wikiversity
10
1017
2266
2265
2020-09-29T19:17:35Z
Chrisb
1
1 revision imported
2265
wikitext
text/x-wiki
<!--{{Copy to Wikiversity}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikiversity
|image=[[Image:Edit-copy purple.svg|40px]]
|type=move
|issue='''This page is a candidate to be [[meta:Help:Transwiki|copied]] to [[Wikiversity:Main Page|Wikiversity]]''' using the '''[[v:Special:Import|Import]]''' process.
|fix=<br />If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br />
<small>Before you move this content to Wikiversity, verify that it conforms to Wikiversity policies of acceptable content at ''[[v:WV:WIW|What is Wikiversity?]]'' Often content unacceptable to Wikipedia may not be acceptable on Wikiversity either; facilitate the copying of this article by listing it on [[v:WV:I|Wikiversity:Requests for Import]].</small>
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikiversity]]}}}}}</includeonly><!--{{Copy to Wikiversity}} end--><noinclude>
{{Documentation}}
</noinclude>
obji74u1tm8z7eokus4j1wu0vemm4n9
Template:Copy to Wikivoyage
10
1152
2536
2535
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2535
wikitext
text/x-wiki
<!--{{Copy to Wikivoyage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Copy to Wikivoyage
| image = [[Image:Edit-copy purple.svg|40px]]
| type = move
| issue = This {{#if:{{{section|}}}|section|page}} '''is a candidate to be [[m:Help:Transwiki|copied]] to [[voy:Main Page|Wikivoyage]] using the [[Wikipedia:Transwiki log|Transwiki]] process'''.
| fix = <br />If the {{#if:{{{section|}}}|section|page}} can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br />
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikivoyage]]}}}}}</includeonly><!--{{Copy to Wikiboyage}} end--><noinclude>
{{Documentation}}
</noinclude>
en338bjqcqaj72efo6uxm955u9qcrll
Template:Copy to Wiktionary
10
1210
2652
2651
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2651
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||$B=<!--{{Copy to Wiktionary}} begin-->
{{Ambox
| name = Copy to Wiktionary
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = move
| image = [[File:Edit-copy purple-wikit.svg|40px|alt=]]
| text =
'''This page will be copied to [[wiktionary:Main Page|Wiktionary]] using the [[meta:Help:Transwiki|transwiki]] process.'''
The information in this article appears to be suited for inclusion in a dictionary, and this article's topic meets [[Wiktionary:Wiktionary:Criteria for inclusion|Wiktionary's criteria for inclusion]], has [[wikt:transwiki:{{PAGENAME}}|not been transwikied]], and is [[wikt:{{PAGENAME}}| not already represented]]. It will be copied into Wiktionary's transwiki space from which it can be formatted appropriately.
<small>If this page does not meet the criteria, please remove this notice. Otherwise, the notice will be automatically removed after transwiki completes. If this template is placed on a [[MOS:GLOSSARIES|glossary article]], it should be {{em|removed}} immediately after the transwiki is completed, and not replaced with {{tl|TWCleanup}}, as there is [[Wikipedia:Consensus#No consensus|no consensus]] for the deletion of [[MOS:GLOSSARIES|glossary articles]].</small>
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|{{main other|[[Category:Copy to Wiktionary|{{PAGENAME}}]]}}}}}}}</includeonly><!--{{Copy to Wiktionary}} end-->}}<noinclude>
{{Documentation}}
</noinclude>
mrzf4lohsbkduomkcuzga8s888sm6zz
Template:Copy to gaming wiki
10
1014
2260
2259
2020-09-29T19:17:34Z
Chrisb
1
1 revision imported
2259
wikitext
text/x-wiki
{{Ambox
|name=Copy to gaming wiki
|subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|image=[[Image:Edit-copy purple.svg|40px]]
|type=move
|issue='''This article or section is a candidate to be [[m:Help:Transwiki|copied]] to a gaming wiki.'''
|fix=Articles on video games should not [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, or textbook|read like an instruction manual]] or give [[Wikipedia:Neutral point of view#Undue weight|undue weight to details]]. Unsuitable information should be copied to a gaming wiki, such as [[StrategyWiki:Main Page|StrategyWiki]] or [[wikia:gaming|Wikia Gaming]], and then deleted from Wikipedia.<br /><small>If this article or section can be [[Wikipedia:Manual of Style/Writing about fiction|improved for inclusion in Wikipedia]], please do so and remove this message.</small>{{#if:{{{1<includeonly>|</includeonly>}}}|<div style="font-size:0.9em;">
: '''Notes:''' {{{1}}}.
</div>}}
|all=Video game cleanup
}}<noinclude>
{{documentation}}
</noinclude>
ncewcugskj6bpqlrktyua0plqsq0m2z
Template:Copypaste
10
1092
2416
2415
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2415
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Copypaste}} begin-->{{Ambox
| name = Copypaste
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = speedy
| image = [[File:Copyright-problem paste 2.svg|50x40px]]
| issue = This {{{1|article or section}}} '''may have been [[Wikipedia:Copying text from other sources|copied and pasted]] from another location, ''possibly'' in violation of [[Wikipedia:Copyrights|Wikipedia's copyright policy]]'''.
| fix = Please review {{#if:{{{url|}}}|{{CVD|{{{url|}}}}}|the source}} and [[Wikipedia:Text Copyright Violations 101|remedy this]] by editing this article to remove any non-free copyrighted content and attributing free content correctly, or flagging the content for deletion. Please be sure that the supposed source of the copyright violation is not itself a [[Wikipedia:Mirrors and forks|Wikipedia mirror]].
| date = {{{date|}}}
| cat = Copied and pasted articles and sections{{#if:{{{url|}}}| with url provided}}
| all = All copied and pasted articles and sections
}}<!--{{Copypaste}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
0kiyo3ue7k9g7ti3xqo69hphy06e1fz
Template:Correct title examples
10
1651
4950
4949
2020-10-11T05:50:41Z
Chrisb
1
1 revision imported
4949
wikitext
text/x-wiki
{| class="wikitable" style="background:transparent"
|-
! Template !! Involves !! Correct name !! Actual article name
|-
! {{tlp|Italic title}}
| Title in italics || ''To Kill a Mockingbird'' || [[To Kill a Mockingbird]]
|-
! {{tlp|Lowercase title}}
| Lowercase first character || eBay || [[EBay]]
|-
! {{tlp|Correct title|reason{{=}}bracket}}
| [[bracket|< > [ ] { }]] || Benzo[''a'']pyrene || [[Benzo(a)pyrene]]
|-
! {{tlp|Correct title|reason{{=}}#}}
| [[Number sign|#]] || Pilot #5 || [[Pilot No. 5]]
|-
! {{tlp|Correct title|reason{{=}}:}}
| [[Forward slash|/]] [[colon (punctuation)|:]] || DK: King of Swing || [[DK King of Swing]]
|-
! {{[[meta:Help:Magic words#Miscellany|DISPLAYTITLE]]}}
| Various || _NSAKEY || [[NSAKEY]]
|}<noinclude>
[[Category:Correct title templates|Examples]]
</noinclude>
3dec25gwnuqmv7azvkib91p3m3bhzzp
Template:Coverage
10
1018
2268
2267
2020-09-29T19:17:35Z
Chrisb
1
1 revision imported
2267
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Coverage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Coverage
| class = ambox-coverage
| type = content
| image = [[Image:Unbalanced scales.svg|50x40px|link=]]
| issue = This {{{1|article}}} '''may focus too much on one aspect of a topic''' and thus damage the article's usefulness or even lend [[Wikipedia:Neutral point of view#Undue weight|undue weight]] in favor of certain viewpoints.
| fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] by adding information on neglected viewpoints, or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]].
| date = {{{date|}}}
}}<includeonly>{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}</includeonly><!--{{Coverage}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
tbw05nwywuejwlp0tlfmdu5cjdycsl3
Template:Criticism section
10
1019
2270
2269
2020-09-29T19:17:35Z
Chrisb
1
1 revision imported
2269
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Criticism section}} begin-->{{Ambox
| name = Criticism section
| class = ambox-criticism
| type = content
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| image = [[File:Ambox scales.svg|50px|link=]]
| issue = This article's ''Criticism'' or ''Controversy'' section '''may compromise the article's [[Wikipedia:Neutral point of view|neutral point of view]] of the subject'''.
| fix = Please [[Wikipedia:Neutral point of view#Article structure|integrate the section's contents]] into the article as a whole, or rewrite the material.
| date = {{{date|}}}
| cat = Articles needing POV-check
| all = All NPOV disputes
}}<!--{{Criticism section}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, please, not here! -->
</noinclude>
mgqfb3o1vw88zvtnd076hq26qazb5av
Template:Cross
10
1634
4916
4915
2020-10-11T05:50:22Z
Chrisb
1
1 revision imported
4915
wikitext
text/x-wiki
[[{{ {{{|safesubst:}}}#switch:{{ {{{|safesubst:}}}lc:{{{color|{{{colour|}}}}}} }}
|red |rd |r =File:X mark.svg
|darkred |dkred |drd |dr =File:Dark Red x.svg
|orange |or |o =File:Orange x.svg
|yellow |yel |y =File:Yellow x.svg
|black |blk |k =File:Black x.svg
|grey |gray |gry |gy =File:SemiTransBlack x.svg
<!--default--> |File:X mark.svg
}}|{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|20}}px|link=|alt=☒]]<span style="display:none">N</span><!--template:cross--><noinclude>
{{documentation}}
</noinclude>
krgazefqy0ht4a37jfoudi2zcd9h6rk
Template:Csb-pageincluded
10
1207
2646
2645
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2645
wikitext
text/x-wiki
<!--{{Csb-pageincluded}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude><center>'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''<br/></center><br/></noinclude>
{{Ambox
| name = Csb-pageincluded
|type=content
|image=[[Image:Copyright-problem.svg|50px|alt=|link=]]
|text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has detected that the contents of this page may have been copied from the following web page:
:{{{1|{{{url}}}}}} ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{1|{{{url}}}}}}|minwords=3}}{{Dot}}{{Copyvios|url={{{1|{{{url}}}}}}|page={{FULLPAGENAME}}}})
This may be a potential '''infringement''' of the copyright of a third-party. It will soon be reviewed to determine if there are any copyright issues. The content should not be mirrored or otherwise reused until the issue has been resolved.
<br/>
*'''If this marking was made in error,''' simply note so on the [[Talk:{{PAGENAME}}|this article's discussion page]].
*You can '''write a new article without infringing material.''' Note that simply modifying copyrighted text is ''not'' sufficient to avoid copyright infringement— it is best to write the article ''from scratch'', using web pages or other publications as sources of facts, but not as sources of sentences or phrases. You may want to begin the article as a "[[Wikipedia:Stubs|stub]]".
*Or, '''if you hold the copyright to this text and permit its use under the terms consistent with [[Wikipedia:Terms of use|Wikipedia's policies]]''', please see [[Wikipedia:Donating copyrighted materials]] for instructions on how to verify the licensing.
*'''If this text is in the public domain, or is already under a license suitable for Wikipedia,''' explain this on [[Talk:{{PAGENAME}}|this article's discussion page]], with reference to evidence.
'''Note:''' Articles on Wikipedia must be written from a [[Wikipedia:Neutral point of view|neutral point of view]] and must be [[Wikipedia:Verifiability|verifiable]] in published third-party sources; your text may not be appropriate for inclusion in Wikipedia, legal issues aside.
}}
<includeonly>[[Category:Possible copyright violations]]</includeonly><!--{{Csb-pageincluded}} end--><noinclude>
{{Documentation}}
</noinclude>
aub5ivmggsb5rr1bfqwpfiwf68zqq43
Template:Csb-pageincludes
10
1020
2272
2271
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2271
wikitext
text/x-wiki
<!--{{Csb-pageincludes}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude>{{center|'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''}}<br/></noinclude>{{Ambox
| name = Csb-pageincludes
|type=delete
|image=[[Image:Copyright-problem.svg|50px|alt=|link=]]
|text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has performed a web search with the contents of this page, and it appears to include material copied directly from:
:{{{1|{{{url}}}}}} ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{1|{{{url}}}}}}|minwords=3}}{{Dot}}{{Copyvios|url={{{1|{{{url}}}}}}|page={{FULLPAGENAME}}}})
It will soon be reviewed to determine if there are any copyright issues. The content should not be mirrored or otherwise reused until the issue has been resolved.
If substantial content ''is'' duplicated, unless evidence is provided to the contrary (e.g. evidence of permission to use this content under terms consistent with the [[Wikipedia:Terms of use|Wikimedia Terms of Use]] or public domain status; see [[Wikipedia:Donating copyrighted materials]]), editors will assume that this text is a [[Wikipedia:Copyright FAQ|copyright violation]], and will soon delete the copy.
'''Before removing this notice, you should:'''
<br/>
*'''Check if {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} is in error:''' If so, simply note so on [[{{TALKPAGENAME}}|this article's discussion page]].
*'''Replace the copyrighted text with your own work.''' Note that simply modified or rephrased text is ''still'' an infringement—to remove the copyrighted contents you will need to completely remove them and then write totally new text to replace it.
* '''If you hold the copyright to this text and permit its use under the terms consistent with [[Wikipedia:Terms of use|Wikipedia's policies]]''', please see [[Wikipedia:Donating copyrighted materials]] for instructions on how to verify the licensing.
*'''Replace the copyrighted content with a [[WP:REF|wikified reference]]'''.
*'''Check whether it is reasonable to revert to one of the previous versions of the article'''
*'''Remove the copyrighted content''' if it is not critical to the article.
}}
<includeonly>[[Category:Possible copyright violations]]</includeonly><!--{{Csb-pageincludes}} end--><noinclude>
{{Documentation}}
</noinclude>
8izjwo2x1zi2c0839cxbfiu0jq4fqgj
Template:Csb-wikipage
10
1021
2274
2273
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2273
wikitext
text/x-wiki
<!--{{Csb-wikipage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude><center>'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''<br/></center><br/></noinclude>
{{Ambox
| name = Csb-wikipage
|type=content
|text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has performed a web search with the contents of this page, and it appears to be a substantial copy of the Wikipedia page [[:{{{1|{{{page}}}}}}]]. Content copied from one page to another must be properly attributed; see [[Wikipedia:Copying within Wikipedia]]. It will soon be reviewed to determine if there are any copyright issues.
*'''If the bot has made an error or the content is properly attributed:''' Simply note so on the [[Talk:{{PAGENAME}}|this article's discussion page]] and remove the tag.
*'''If this page was created by error:''' You can request that it be [[WP:CSD|speedily deleted]].
*If appropriate, you can '''convert this page into a [[Wikipedia:Redirect|redirect]] to [[:{{{1|{{{page}}}}}}]]''' by replacing its contents with: <code>#REDIRECT <nowiki>[[</nowiki>{{{1|{{{page}}}}}}]]</code>
*Or, '''edit the page''' and remove the tag.
}}<!--{{Csb-wikipage}} end--><noinclude>
{{Documentation}}
</noinclude>
cag21euh8j9c1j8fnflytaqfid30dcs
Template:Current
10
930
2092
2091
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2091
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Current
| type = notice
| image = [[File:{{Ambox globe current red}}|50x40px|alt=Graphic of a globe with a red analog clock|link=]]
| text = '''This {{#if:{{{1|}}}|{{{1}}}|article}} documents {{#switch:{{lc:{{str left|{{{2|current event}}}|1}}}}|a|e|i|o|u=an|#default=a}} [[Portal:Current events|{{#if:{{{2|}}}|{{{2}}}|current event}}]].''' Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]]. The [[Special:History/{{FULLPAGENAME}}|latest updates]] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| cat = Current events
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
azddut81cgw8xpfh22aonpy65wnizfi
Template:Current disaster
10
1022
2276
2275
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2275
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Current disaster}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Current disaster
| type = notice
| removalnotice = yes
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#If: {{{type|}}}|{{{type|}}}|article}}] using [[Wikipedia:Reliable sources|reliable sources]] or help by discussing changes on the [[{{TALKPAGENAME}}|talk page]].
| image = [[File:{{Ambox globe current red}}|50x40px|alt=Globe icon with a red clock.]]
| text = This {{#If: {{{type|}}}|{{{type|}}}|article}} is about {{#if:{{{name|}}}
| ''' {{{name}}}''',
|
}} a {{#if:{{{link|}}}
| {{{time|current}}} {{#if:{{{severity|}}}
|  {{{severity}}}
|
}} {{{event|disaster}}}
| '''[[Portal:Current events|{{{time|current}}} {{#if:{{{severity|}}}
|  {{{severity}}}
|
}} {{{event|disaster}}}]]'''
}} where information can [[Wikipedia:Reliable sources#Breaking news|change quickly or be unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} latest page updates] [[Wikipedia:Risk disclaimer|may not reflect]] the most up-to-date information. {{#if:{{{areas|}}}
|  {{{areas}}}
|
}} {{#if:{{{notes|}}}
|  {{{notes}}}
|
}}
|
}} {{#if:{{{nocat|}}}
|<!-- don't categorize -->
|{{DMCA|Current events|from|{{{date|}}}}}
}}<!--{{Current disaster}} end-->
}}<noinclude>{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
hytb04f01j5f4dsj9iqk4i4dpgt1tzi
Template:Current disaster list
10
1228
2688
2687
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2687
wikitext
text/x-wiki
{{Ambox
| name = Current disaster list
| subst =
| small = {{{small|}}}
| type = notice
| removalnotice=yes
| image = [[File:{{Ambox globe current red}}|50x40px|alt=]]
| sect = {{{1|}}}
| issue = containing a '''list of {{{type|disasters}}}''' may be affected by a [[Portal:Current events|currently active]] incident. Information regarding it may change rapidly as more information becomes available. The last updates to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information about this {{{event|disaster}}} for all areas. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]].
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}<noinclude>{{documentation}}
ekggyb76wdx8serl93wjp1uwxbnz9k8
Template:Current election
10
1229
2690
2689
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2689
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Current election
| type = notice
| image = [[File:A coloured voting box.svg|30px|alt=Voting box|link=]]
| text = '''This {{#if:{{{1|}}}|{{{1}}}|article}} documents {{#if:{{{2|}}}|{{{2}}}|a current {{{3|election}}}}}.''' Information may change rapidly as the {{{3|election}}} progresses, until official results have been published. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]], and the [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| all = Current elections
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
9gvq182pe1t8kq9fbwg51a9b3f4gvcq
Template:Current music-related
10
1250
2732
2731
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2731
wikitext
text/x-wiki
<noinclude>{{pp|vandalism|small=yes|expiry=indef|action=edit|date=August 7, 2016}}</noinclude>
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ambox
| name = Current music-related
| type = notice
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| image = [[File:Fifties jukebox.png|60px]]
| imageright = [[File:Gibson-sg.svg|60px]]
| text = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may be affected by {{#if:{{{2|}}}|the following|a}} [[Wikipedia:WikiProject Music|{{#if:{{{4|}}}|{{{4}}}|current music related event}}]]{{#if:{{{2|}}}|<nowiki>:</nowiki> [[{{{2}}}{{#if:{{{3|}}}|{{!}}{{{3}}}|}}]]|}}'''. Information in this {{#if:{{{1|}}}|{{{1}}}|article}} may change rapidly as the event progresses. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| cat = Current events
| date = {{{date|}}}
<!--Template:Current music-related-->
}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
ft5xhhmiw4q1offr5bldyikh26o4feb
Template:Current person
10
1023
2278
2277
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2277
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Current person}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Current person
| type = notice
| image = [[File:{{Ambox globe current red}}|50x40px]]
| text = '''This {{{1|article}}} is about a {{{2|person}}} involved in {{{3|{{{event|a [[Portal:Current events|current event]]}}}}}}.''' Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| cat = Current events
| date = {{{date|}}}
}}<!--{{Current person}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
936b9lamtzpeyd8g2yx4n19l1g3kok6
Template:Current related
10
1024
2280
2279
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2279
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Current related}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Current related
| type = notice
| image = [[File:{{Ambox globe current red}}|50x40px]]
| text = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may be affected by {{#if:{{{2|}}}|the following|a}} [[Portal:Current events|{{#if:{{{4|}}}|{{{4}}}|current event}}]]{{#if:{{{2|}}}|<nowiki>:</nowiki> [[{{{2}}}{{#if:{{{3|}}}|{{!}}{{{3}}}|}}]]|}}'''. Information in this {{#if:{{{1|}}}|{{{1}}}|article}} may change rapidly as the event progresses. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| cat = Current events
| date = {{{date|}}}
}}<!--{{Current related}} end-->
}}<noinclude>{{Documentation}}</noinclude>
lpfev1m4m6uwptqedxukqrq9yw16apj
Template:Current spaceflight
10
1025
2282
2281
2020-09-29T19:17:36Z
Chrisb
1
1 revision imported
2281
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Current spaceflight}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Current spaceflight
| type = notice
| removalnotice = yes
| fix = <small>Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article or section}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].</small>
| image = [[File:{{Ambox globe current red}}|50x40px]]
| text = '''This {{{1|article or section}}} documents a [[Portal:Current events|current or recent]] [[spaceflight|{{#if:{{{mission|}}}|space mission|spaceflight}}]]{{#if:{{{related|}}}|-related activity}}.''' {{#if: {{{details|}}}|{{{details}}}|Details may change as the mission progresses. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article or section}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.<br/><small>For more information please see [[Wikipedia:WikiProject Spaceflight|WikiProject Spaceflight]].</small>}}
}}{{DMCA|Current events}}{{ns0|{{#ifexist:Category:{{{year|{{{3|{{CURRENTYEAR}}}}}}}} in spaceflight|[[Category:{{{year|{{{3|{{CURRENTYEAR}}}}}}}} in spaceflight]]|[[Category:Spaceflight]]}}}}<!--{{Current spaceflight}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
3vqwimibcwem20fyr54yiz9genqr6ma
Template:Current sport
10
1246
2724
2723
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2723
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Current sport
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = notice <!--- IMPORTANT: When adding new sports/images, please also add them to {{Current sport-related}}. -->
| image = {{Current sports event icon|sport={{{sport|}}}|size=40px}}
| text = This {{{1|article}}} '''documents a [[Portal:Current events/Sports|current {{{event|sporting event}}}]]'''. Information may change rapidly as the event progresses. Initial news reports, scores, or statistics may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| all = {{#switch:{{{category}}}
|y
|Y=Current sports events
}}
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
0ayrns4ag9a4j3hnj8dmm3n2hzg9mih
Template:Current sport-related
10
1093
2418
2417
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2417
wikitext
text/x-wiki
{{ambox
| name = Current sport-related
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = notice
| removalnotice = yes
| fix = {{#if:{{{mini|}}}|<!-Do not show if mini is enabled-->|Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].}}
| image = {{Current sports event icon|sport={{{sport}}}|size={{#if:{{{mini|}}}|30|42}}px}}
| text = {{#if:{{{mini|}}}
|For current information on this topic, see [[{{{1}}}]]. {{#if:{{{second|}}}|{{{second}}}, see [[{{{2}}}]].}}<!-- used to link to last years seasons articles --->
|This article '''is related to a current [[Portal:Current events/Sports|sports-related event]]'''. For information on the topic, see [[{{{1}}}]]. {{#if:{{{second|}}}|{{{second}}}, see [[{{{2}}}]].}} Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to these articles [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
i5rz3gdbsd75hanxa5putlq8ir2jg1g
Template:Current sports transaction
10
1026
2284
2283
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2283
wikitext
text/x-wiki
{{Ambox
| name = Current sports transaction
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = notice <!--- IMPORTANT: When adding new sports/images, please also add them to {{Future sport}} and {{Current sport-related}}. -->
| image = {{Current sports event icon|sport={{{sport}}}|size=50x40px}}
| text = The subject of this {{#if:{{{1|}}}|{{{1}}}|article}} '''is in the news regarding a reported {{lc: {{{trans|transaction}}}}}'''. Information regarding the {{lc: {{{trans|transaction}}}}} {{{reason|may be based on [[Wikipedia:Biographies of living persons#Avoid gossip and feedback loops|anonymous sources]] and/or awaiting an [[Wikipedia:WikiProject Sports/Handling sports transactions|official announcement]].}}} [[Wikipedia:Reliable sources#Breaking news|Breaking news]] reports may be unreliable.
| removalnotice = yes
| fix = Please feel free to discuss changes on the [[{{TALKPAGENAME}}|talk page]].
}}<noinclude>
{{Documentation}}
</noinclude>
5fxuwhow56wxoldak85ppyxwk0xs06d
Template:D-A
10
1509
4666
4665
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4665
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|A}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
0yqvkcpj7cfwi55jw21thn4li04mu4h
Template:D-I
10
1510
4668
4667
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4667
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #CFC; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|I}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
os5y569e2zze9a76kv0e3usexj41ft9
Template:D-N
10
1511
4670
4669
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4669
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FF9090; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|N}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
06x3zho3i1o6odgu2gc2mn56v9j12wp
Template:D-Nv
10
1512
4672
4671
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4671
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|NV}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
pwcoeptet19ac8ps5uk44x05cj5ys0b
Template:D-O
10
1513
4674
4673
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4673
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #C5D2EA; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|O}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
srunx6ymotudagyf4gaf21qecuwvqg2
Template:D-Out
10
1514
4676
4675
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4675
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|Out}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
l06l1iyyn3igzptctlhnkjzid1cqodo
Template:D-P
10
1515
4678
4677
2020-10-11T05:35:17Z
Chrisb
1
1 revision imported
4677
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #90FF90; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|P}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
2j3t1aulh8vw9c888qahocktv5z9pl8
Template:D-W
10
1516
4680
4679
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4679
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #f0e68c; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|W}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
dcgzlourwd4vgv6pox1rq2h97bpdj6r
Template:DMCA
10
1609
4866
4865
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4865
wikitext
text/x-wiki
{{Dated maintenance category
|onlyarticles=yes
|1={{{1|}}}
|2={{{2|}}}
|3={{{3|}}}
|4={{{4|}}}
|5={{{5|}}}
}}<noinclude>
{{documentation|Template:Dated maintenance category/doc}}
</noinclude>
cl1tba6o83bu6hpmnvwvbcse6qwofoo
Template:Dablinks
10
1191
2614
2613
2020-09-29T19:18:00Z
Chrisb
1
1 revision imported
2613
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Dablinks
| type = move
| image = [[File:Disambig.svg|40px]]
| issue = '''This article currently [[Wikipedia:Disambiguation pages with links|links]] to a large number of [[Help:Disambiguation|disambiguation pages]] (or back to itself).'''
| fix = Please [[Wikipedia:Piped link|help direct]] these ambiguous links to articles dealing with the specific meaning intended. <small>Read the [[Template:Dablinks/FAQ|FAQ]]</small>.{{#if:{{{1|}}}|
{{hidden|header=|headerstyle = font-weight:3; margin-right:3em|content= <hr style="margin-right:4em">Please find [[H:WIKILINK|wikilinks]] in this article that point to articles in the list below. They may be of the form: <code><nowiki>[[</nowiki>''ArticleName''<nowiki>|...]]</nowiki></code>, with or without [[WP:PIPE|piping]]. {{#if:{{{1|}}}|* [[{{{1}}}]]}}{{#if:{{{2|}}}|* [[{{{2}}}]]}}{{#if:{{{3|}}}|* [[{{{3}}}]]}}{{#if:{{{4|}}}|* [[{{{4}}}]]}}{{#if:{{{5|}}}|* [[{{{5}}}]]}}{{#if:{{{6|}}}|* [[{{{6}}}]]}}{{#if:{{{7|}}}|* [[{{{7}}}]]}}{{#if:{{{8|}}}|* [[{{{8}}}]]}}{{#if:{{{9|}}}|* [[{{{9}}}]]}}{{#if:{{{10|}}}|* [[{{{10}}}]]}}
}}}}
| date = {{{date|}}}
| cat = Pages with excessive dablinks
| all = All pages with excessive dablinks
}}
}}<noinclude>
{{documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, please, not here! -->
</noinclude>
bfnwcy0m9kknov2y25mrzoab9i7m1m2
Template:Dated maintenance category
10
1610
4868
4867
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4867
wikitext
text/x-wiki
<nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!--
-->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}}
|{{#if:{{{3|}}}
|[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!--
-->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}}
|<!--
-->|[[Category:Articles with invalid date parameter in template]]<!--
-->}}
|[[Category:{{#if:{{{5|}}}
|{{{5}}}<!--
-->|{{{1}}}<!--
-->}}]]<!--
-->}}{{#if:{{{4|}}}
|[[Category:{{{4}}}]]}}<!--
-->}}<!--
-->}}<noinclude>
{{documentation}}
</noinclude>
7p59j4cq4i8wg65odpv5287yu50sczo
Template:Dead end
10
1027
2286
2285
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2285
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Dead end}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Dead end
| class = ambox-dead_end
| type = style
| image = [[File:MUTCD W14-1.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''has no [[Wikipedia:Manual of Style/Linking|links]] to other Wikipedia articles.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text.
| date = {{{date|}}}
| cat = Dead-end pages
| all = All dead-end pages
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
}}<!--{{Dead end}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
m00l82vyao2vy1xaci1l46hj2g8u1uq
Template:Debate
10
1028
2288
2287
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2287
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Debate
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-debate
| sect = {{{1|}}}
| issue = '''is written in the style of a debate rather than an encyclopedic summary'''.
| fix = It may require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and make it more accessible to a general audience. Please discuss this issue on the [[{{TALKPAGENAME}}|talk page]].
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
26p221k6qhhl9tym6ojc9967627w7yt
Template:Delink
10
1447
3198
3197
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3197
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
nxxwkb2lon9wgne4irg9ctbsle6zwiy
Template:Depends
10
1517
4682
4681
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4681
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="depends table-depends"|{{{1|Depends}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
k5f0tfybyqm7m6yt6plwt0txykkhi7z
Template:Devanagari script needed
10
1068
2368
2367
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2367
wikitext
text/x-wiki
{{Script needed
|language = Devanagari
|image = JanaSanskritSans ddhrya.svg
}}
i5wr9gu2soguym9xdag8vvpq1w4p0fk
Template:Dicdef
10
1029
2290
2289
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2289
wikitext
text/x-wiki
<!--{{Dicdef}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Dicdef
| type = move
| image = [[File:Edit-copy purple-wikit.svg|50x40px]]
| issue = This {{{1|article}}} '''appears to be a [[Wikipedia:Wikipedia is not a dictionary|dictionary definition]]'''.
| all = {{#ifeq:{{yesno-no|{{{nocat|}}}}}|yes||Flagged dictionary definitions}}
| fix = Please [[WP:DEVELOP|rewrite it]] to present the subject from an encyclopedic point of view. If it cannot be turned into a full encyclopedia article in the near future, consider moving it to [[Wiktionary]].
{{hidden top|title=Steps for moving to Wiktionary:}}
# Check that this {{{1|article}}} meets [[Wiktionary:Wiktionary:Criteria for inclusion|Wiktionary's criteria for inclusion]].
# Check that Wiktionary does not have an article on this word or phrase, as [[wikt:Special:Search/{{PAGENAME}}|verified using the search page]].
If Wiktionary has a definition already, change this tag to {{tl|TWCleanup2}} or else consider a [[Wikipedia:Soft redirect|soft redirect]] to Wiktionary by replacing the text on this page with {{tl|Wi}}.
If Wiktionary does not have the definition yet, consider moving the whole {{{1|article}}} to Wiktionary by replacing this tag with the template {{tl|Copy to Wiktionary}}.
<small>This template will no longer automatically categorize articles as candidates to move to Wiktionary.</small>
{{hidden bottom}}
}}<!--{{Dicdef}} end--><noinclude>{{Documentation}}</noinclude>
ekdmtg721wdb3djnj7v519tj40j1btw
Template:Directory
10
1030
2292
2291
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2291
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Directory
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-directory
| sect = {{{1|}}}
| issue = '''reads like [[WP:NOTDIRECTORY|{{#if:{{{2|}}}|{{{2}}}|a directory}}]]'''.
| fix = Wikipedia policy generally considers directories in articles to be unencyclopedic and potential [[Wikipedia:spam|spam]]. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite it], to better conform with [[Wikipedia:Manual of Style/Lists|the Wikipedia Manual of Style standards on lists]]. If it cannot be properly modified, it may be '''[[WP:DELPRO|considered for deletion]]'''.
| removalnotice = yes
| date = {{{date|}}}
}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
eoi72ex496156clhp0n2xsyhd1ox3h0
Template:Disambiguation subject notice
10
1287
2806
2805
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2805
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=
{{Ambox
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| small = {{{small|}}}
| text = A request that this page be {{#ifeq:{{{2}}}|delete|deleted is [[{{{1}}}|under discussion]]. Please do not delete this page until the discussion has been closed.|converted to a '''{{c|Disambiguation pages containing one non-primary topic|one non-primary topic}}''' disambiguation page titled {{#ifeq:{{FULLPAGENAME}}|Template:Disambiguation subject notice|"... (disambiguation)"|"{{-r|{{FULLPAGENAME}} (disambiguation)}}"}} is [[{{{1}}}|under discussion]]. It may not be necessary to delete this page if the [[WP:ONEOTHER]] editing guideline applies.}}
}}
}}<noinclude>
{{Documentation|content=
==Usage==
This template is used usually on [[WP:TWODABS]] pages during a requested move to a [[WP:Glossary#basename|base name]]. The first unnamed parameter, {{para|1}}, gives the talk page and section where the move request takes place. For example:
<pre>
{{Disambiguation subject notice|1=Talk:Foo#Bar}}
</pre>
If instead, the RM requires deletion of the disambiguation or set index page, then the second unnamed parameter, {{para|2}} should be used with the word "delete", as in:
<pre>
{{Disambiguation subject notice|1=Talk:Foo#Bar|2=delete}}
</pre>
The notice then becomes:
{{Disambiguation subject notice|1=Talk:Foo#Bar|2=delete}}
==See also==
* {{tl|Title notice}}, used by the [[User:RMCD bot|RMCD bot]]
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Article message templates]]
}}</noinclude>
d09a3g3hxoqjfl14ewfchvp4anlkxbp
Template:Dispute about
10
938
2108
2107
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2107
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Dispute about}} begin-->{{Ambox
| name = Dispute about
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| image = [[File:System-search.svg|45px]]
| type = content
| issue = '''The factual accuracy of part of this article is [[Wikipedia:Accuracy dispute|disputed]].''' The dispute is about ''{{{1}}}''.
| fix = Please help to ensure that disputed statements are [[Wikipedia:Reliable sources|reliably sourced]]. {{#ifexist:{{TALKPAGENAME}}|See the relevant discussion on the [[{{{talkpage|{{TALKPAGENAME}}#{{{2|{{{1|Disputed}}}}}}}}}|talk page]].}}
| date = {{{date|}}}
| cat = Accuracy disputes
| removalnotice = yes
}}<!--{{Dispute about}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
30k0ejwt3u2b0qsglzpwyh06dze6s0w
Template:Disputed
10
1031
2294
2293
2020-09-29T19:17:37Z
Chrisb
1
1 revision imported
2293
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Disputed
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| image = [[File:System-search.svg|45px|link=]]
| class = ambox-disputed
| issue = This {{{what|article}}}'s '''factual accuracy is [[Wikipedia:Accuracy dispute|disputed]]'''. {{#if:{{{details|}}}|{{{details|}}}}}
| talk = {{{talkpage|{{{talk|{{{1|#Disputed}}}}}}}}}
| fix = Please help to ensure that disputed statements are [[Wikipedia:Reliable sources|reliably sourced]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Accuracy disputes
| all = All accuracy disputes
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
lh2t0kfjky1yd1w3iibcrrxz7nf7erc
Template:Disputed title
10
1032
2296
2295
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2295
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Disputed title}} begin-->{{Ambox
| name = Disputed title
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| issue = The current title of this {{{what|article}}} '''is [[Wikipedia:Accuracy dispute|disputed]]'''. {{#if:{{{alternate title|}}}|An alternative proposed title is ''{{{alternate title}}}.''}} {{#if:{{{alternate titles|}}}|Alternative proposed titles are: ''{{{alternate titles}}}''.}}
| fix = Please see the relevant discussion on the {{#if:{{{page|}}}|[[{{{page}}}|''discussion page'']]|[[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{section|}}}|''talk page'']]}}.
| date = {{{date|}}}
| cat = Accuracy disputes
| all = Wikipedia title cleanup
}}<includeonly>{{Main other | [[Category:Wikipedia title cleanup (sorted by template)|D{{PAGENAME}}]] | }}</includeonly><!--{{Disputed title}} end-->
}}<noinclude>{{Documentation}}</noinclude>
olijv7diq9wz37wyzod36na78bfkby2
Template:Distinguish
10
1629
4906
4905
2020-10-11T05:50:20Z
Chrisb
1
1 revision imported
4905
wikitext
text/x-wiki
{{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
t4az5q8zekjr0kpgvlz6fgo7i77psk8
Template:Distinguish/doc
10
1635
4918
4917
2020-10-11T05:50:23Z
Chrisb
1
1 revision imported
4917
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please add categories at the bottom of this page, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{High-use| 65005 }}
{{Lua|Module:Distinguish}}
== Description ==
It renders a [[WP:HAT|hatnote]] to remind readers about the existence of one or more articles or elements whose title(s) is/are similar to this page. It is used in cases where the distinction between the title(s) is/are obvious that it does not need further explanation.
For cases where an explanation is required, use {{tl|For}} and {{tl|About}}. For use on category pages, the corresponding template is {{Tl|Category distinguish}}.
== Usage ==
It is the standard usage:
{{tlx|Distinguish|Foo}} → {{Distinguish|Foo}}
This hatnote can be used to distinguish from multiple articles:
{{tlx|Distinguish|Foo|Bar}} → {{Distinguish|Foo|Bar}}
{{tlx|Distinguish|Foo|Bar|Gaz}} → {{Distinguish|Foo|Bar|Gaz}}
You may customize the text too. Use {{para|text}}. For example:
{{tlx|Distinguish|text {{=}} custom [[text]], or [[foo]], a common example term}} → {{Distinguish|text = custom [[text]], or [[foo]], a common example term}}
== When to use ==
This hatnote is generally used when readers have misspelled their desired title, and the error would be apparent by simply displaying the alternative term without further explanation. For example, consider a reader looking for the punctuation mark who instead ends up at [[coma]]:
: [[Coma]]
: {{Distinguish|Comma}}
Readers are presumed to recognize that they actually wanted ''comma'' by merely looking at the spelling, and this case generally requires no further explanation.
However, {{tlx|distinguish}} is not suitable when the difference is not readily apparent without additional details. Consider a reader looking for a game they believe is named Reversi:
: {{cross}} [[Reversi]]
: {{Distinguish|Reversis}}
In the above hatnote, it is not generally apparent how the suggested Reversis is different from Reversi, which is also a game.
In this case you should use {{tlx|about}} instead of {{tlc|distinguish}}. The difference is to provide explanatation upfront without requiring the reader to click through and differentiate the terms on their own.
: {{tick}} [[Reversi]]
: {{About|the board game|the card game|Reversis}}
{{tlc|Distinguish}} should only be used when the ambiguity exists for a portion of the readership that is sufficient to warrant a hatnote. Care should be taken to [[WP:TRHAT|avoid trivial uses]].
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Name of article",
"description": "Name of article that you want to link to",
"type": "wiki-page-name",
"suggested": true
},
"2": {
"label": "Optional additional article to link (2)",
"description": "Optional additional article to link",
"type": "wiki-page-name"
},
"3": {
"label": "Optional additional article to link (3)",
"description": "Optional additional article to link",
"type": "wiki-page-name"
},
"4": {
"label": "Optional additional article to link (4)",
"description": "Optional additional article to link",
"type": "wiki-page-name"
},
"text": {
"label": "Custom text",
"description": "Custom message in wikitext; e.g. \"[[foo]] and [[bar]]\" produces \"Not to be confused with [[foo]] and [[bar]].\"",
"type": "string"
},
"selfref": {
"label": "Self reference",
"description": "If set, marks note as being a self reference, to not be shown when content is reused",
"type": "boolean"
}
},
"description": "A hatnote used when there is an ambiguity in an article's title.",
"paramOrder": [
"1",
"2",
"3",
"4",
"text",
"selfref"
],
"format": "inline"
}
</templatedata>
== Redirects ==
* {{tl|Confused}}
* {{tl|Confuse}}
* {{tl|Misspelling}}
== See also ==
* {{tl|About}}
* {{tl|Category distinguish}}
* {{tl|For}}
* {{tl|Redirect}}
* {{tl|R from misspelling}}
{{Hatnote templates}}
<includeonly>{{sandbox other||
<!-- Add categories below this line, and interwikis at Wikidata -->
[[Category:Disambiguation and redirection templates]]
[[Category:Hatnote templates]]
}}</includeonly>
bastyrxykyp7bsm7o1ua0s10yequkw2
Template:Dmbox
10
922
2076
2075
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2075
wikitext
text/x-wiki
<templatestyles src="Dmbox/styles.css" />
<table id="
{{#switch:{{{type|}}}
| setindex = setindexbox
| disambig
| #default = disambigbox
}}" class="metadata plainlinks dmbox
{{#switch:{{{type|}}}
| setindex = dmbox-setindex
| disambig
| #default = dmbox-disambig
}} {{{class|}}}" style="{{{style|}}}" role="presentation">
<tr>
{{#ifeq:{{{image|}}}|none
| <!-- No image. Cell with some width or padding necessary for text cell to have 100% width. --><td class="mbox-empty-cell"></td>
| <td class="mbox-image" style="padding: 2px 0 2px 0.4em;"> {{#if:{{{image|}}}
| {{{image}}}
| [[File:{{#switch:{{{type|}}}
| setindex = DAB list gray.svg
| disambig <!-- disambig = default -->
| #default = Disambig gray.svg
}}|30px|alt=Disambiguation icon]]
}}</td>
}}
<td class="mbox-text" style="padding: 0.25em 0.4em; font-style: italic; {{{textstyle|}}}"> {{{text}}} </td>
{{#if:{{{imageright|}}}
| <td class="mbox-imageright" style="padding: 2px 0.4em 2px 0;"> {{{imageright}}} </td>
}}
</tr>
</table><!--
Detect and report usage with faulty "type" parameter:
-->{{#switch:{{{type|}}}
| <!-- No type fed, is also valid input -->
| disambig
| setindex = <!-- Do nothing, valid "type" -->
| #default = <div style="text-align: center;">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace -->
}}<!--
Magic word for disambiguation pages:
-->{{#if:{{{nocat|}}}||{{#ifeq:{{{type|}}}|disambig|__DISAMBIG__|}}}}<!--
Categorization:
-->{{#switch:{{{type|}}}
| setindex =
{{category handler
| main = [[Category:All set index articles]]
| nocat = {{{nocat|}}} <!--So "nocat=true" works-->
| page = {{{page|}}} <!--For testing-->
}}
| disambig <!-- disambig = default -->
| #default =
{{category handler
| main = [[Category:All article disambiguation pages]][[Category:All disambiguation pages]]
| template = <!-- Don't categorize on template pages. -->
| other = [[Category:All disambiguation pages]]
| nocat = {{{nocat|}}} <!--So "nocat=true" works-->
| page = {{{page|}}} <!--For testing-->
}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
n6r7u9qq70c0wdfbtg7ybyimkk47x0t
Template:Documentation
10
1294
2820
2819
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2819
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
o4ddn701tao1ufdnkxe1wdgz5b5ga84
Template:Documentation subpage
10
1295
2822
2821
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2821
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
'''This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]] for {{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
iwoex9r4jjje2jlwm8eygcyef0s6hzx
Template:Draw
10
1518
4684
4683
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4683
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#c5d2ea; color:black; vertical-align:middle; text-align:{{{align|center}}}; {{{style|}}}" class="table-draw" |{{{1|}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
syo1yjnhgk2f3q5596y2d9areyggabo
Template:Dropped
10
1519
4686
4685
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4685
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="dropped table-dropped"|{{{1|Dropped}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
e844dty585c314f15fdd5knxzjfuo52
Template:Dunno
10
1520
4688
4687
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4687
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>{{Unknown|{{{1|?}}}|{{{align|}}}|{{{style|}}}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
exqdy5k57eyslr79m98xly11nqy5vv3
Template:Duplicated citations
10
1184
2600
2599
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2599
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Duplicated citations}} begin-->{{Ambox
| name = Duplicated citations
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| class = ambox-cleanup-link_rot
| image = [[File:Text document with red question mark.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''lists the same citations more than once.'''
| fix = Please consider using [[Help:Footnotes#WP:NAMEDREFS|named references]] to ensure each citation appears only one time.
| cat = Wikipedia references cleanup
| all = All articles needing references cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
|all3 = All articles with duplicate citations
| date = {{{date|}}}
| removalnotice = yes
}}<!--{{Duplicated citations}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
3d89bkamqguio7cdpmb28ljwexhmzjx
Template:Duplication
10
1154
2540
2539
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2539
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Duplication}} begin-->{{Ambox
|name = Duplication
|subst = <includeonly>{{subst:substcheck}}</includeonly>
|type = style
|sect = {{{1|{{#if:{{yesno|{{{section|}}}}}|section|article}}}}}
|small = {{{small|{{#if:{{yesno|{{{section|}}}}}|left|{{#ifeq:{{{1|}}}|section|left|no}}}}}}}
|issue = '''[[WP:CFORK|duplicates]] the scope of other {{#if:{{yesno|{{{section|}}}}}|sections|articles}}'''{{#if:{{{dupe|}}}|, specifically, [[:{{{dupe}}}]]{{#if:{{{dupe2|}}}| and [[:{{{dupe2}}}]]}}}}.
|fix = Please [[{{{discuss|{{TALKPAGENAME}}}}}|discuss]] this issue on the talk page and edit it to conform with [[Wikipedia:Summary style|Wikipedia's Manual of Style]]{{#if:{{yesno|{{{section|}}}}}| by replacing the section with a link and a [[Wikipedia:Summary style|summary]] of the repeated material, or by spinning off the repeated text into an article in its own right.|.}}
|date = {{{date|}}}
|all = {{#if:{{{dupe|}}}|Duplicate articles|Articles in need of internal merging}}
}}<!--{{Duplication}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
7qhsujy95ilzyyuf14f0jswxbaqftjd
Template:Egyptian hieroglyphic script needed
10
987
2206
2205
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2205
wikitext
text/x-wiki
{{Script needed
|language = Egyptian hieroglyphic
|image = Nbw.wy.svg
}}<noinclude>
[[ar:قالب:نص هيروغليفية مصرية]]
</noinclude>
futj6vcow4aagvxe62wuxd4einlto5j
Template:Election results missing
10
969
2170
2169
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2169
wikitext
text/x-wiki
{{ambox
| name=Election results missing
| subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type=content
| image=[[File:Ballot box current.svg|40px]]
| issue='''Election results are missing from this {{{1|article}}}.'''
| fix=Using a [[Wikipedia:Reliable sources|reliable source]], please add results from elections that are unlisted or incompletely listed.
| date=
| cat=
| all=
}}
<noinclude>
{{documentation}}
[[Category:Temporal templates]]</noinclude>
5f3r4p96q654p6pznlfidkfhmbrs7qh
Template:Eliminated
10
1521
4690
4689
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4689
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#F99; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no" | {{{1|Eliminated}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
5fpl2i1pa8vs5le42gs9td79zi3p17q
Template:Em
10
1314
2860
2859
2020-09-29T19:18:21Z
Chrisb
1
1 revision imported
2859
wikitext
text/x-wiki
<em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
qihth5vbfna026aqh87kteifb1nb5ot
Template:Empty section
10
961
2154
2153
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2153
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Empty section}} begin-->{{Ambox
| name = Empty section
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| small = {{{small|left}}}
| image = [[File:Wiki letter w cropped.svg|20px|alt=[icon]]]
| text = '''This section is empty.''' <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} adding to it].</small>
| cat = Articles to be expanded
| all = All articles to be expanded
| date = {{{date|}}}
| cat2 = Articles with empty sections
| all2 = All articles with empty sections
| date2 = {{{date|}}}
}}<!--{{Empty section}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
n5fpyel15004cloibxo7o12iw8orf7r
Template:Ensure AA contrast ratio
10
1522
4692
4691
2020-10-11T05:35:18Z
Chrisb
1
1 revision imported
4691
wikitext
text/x-wiki
<includeonly>{{#if:{{{base|}}}|{{#ifexpr:{{#invoke:Color contrast|ratio|{{{base}}}|{{{other|}}}|error=21}} < 4.5 OR {{#invoke:Color contrast|ratio|{{{base}}}|black|error=0}} < 4.5 AND {{#invoke:Color contrast|ratio|{{{base}}}|white|error=0}} < 4.5|{{{category|}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
eefhmsqnkmcglwrvnc7ewpotwcv7p7d
Template:Essay-like
10
1033
2298
2297
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2297
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Essay-like
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-essay-like
| sect = {{{1|}}}
| issue = '''is written like {{#if:{{{2|}}}|{{{2}}}|a [[Wikipedia:What Wikipedia is not#Wikipedia is not a publisher of original thought|personal reflection, personal essay, or argumentative essay]]|an [[WP:EDITORIAL|editorial]] or [[WP:NOTESSAY|personal essay]]}}''' that states a Wikipedia editor's personal feelings or presents an original argument about a topic.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]].
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
6v5wrax5mirgbe8h1z8244hy5by9ixy
Template:Example farm
10
1034
2300
2299
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2299
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Example farm}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Example farm
| type = content
| issue = This {{{1|article}}} '''may contain [[Wikipedia:What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|indiscriminate]], [[Wikipedia:Manual of Style/Embedded lists#List size|excessive]], or [[Wikipedia:Neutral point of view#Due and undue weight|irrelevant]] examples'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve the article] by adding more descriptive text and removing [[Wikipedia:Example cruft|less pertinent examples]]. See Wikipedia's [[Wikipedia:Writing better articles|guide to writing better articles]] for further suggestions.
| date = {{{date|}}}
| all = All articles with too many examples
| cat = Articles with too many examples
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}||Wikipedia articles with style issues by month}}<!--{{Example farm}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
3ywb6lpf2kgind6kzqju1rlho8xingx
Template:Excessive citations
10
1233
2698
2697
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2697
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Excessive citations}} begin-->{{Ambox
| name = Excessive citations
| type = style
| small = {{{small|}}}
| class = ambox-citation_style
| sect = {{{1|}}}
| issue = '''may contain [[Wikipedia:Citation overkill|an excessive number of citations]]'''.
| fix = Please consider [[Wikipedia:Citation_overkill#How_to_trim_excessive_citations|removing references to unnecessary or disreputable sources]], [[Wikipedia:Citation_overkill#Citation_Merging|merging citations]] where possible, or, if necessary, flagging the content for deletion. {{#if:{{{details|}}}|<em>{{{details}}}</em>.}}
| cat = Wikipedia references cleanup
| all = All articles needing references cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| removalnotice = yes
}}<!--{{Excessive citations}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
67l289l7s76dtl9ge7tsvzkdk1srl2y
Template:Exempt
10
1523
4694
4693
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4693
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: limegreen; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|exempt}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
f4b5xj9ishddj0g1e30xi7xyi6o8sr2
Template:Exit list
10
1035
2302
2301
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2301
wikitext
text/x-wiki
<!--{{Exit list}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Exit list
| type = content
| image = [[Image:Jct plate.svg|50x40px|link=|alt=]]
| text = '''This section is missing a table that represents a list of exits or junctions.'''<br>Please help by <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} adding the missing exit or junction list]</span>.
}}{{main other
| [[Category:Road articles needing a junction list|{{PAGENAME}}]]
|
}}<!--{{Exit list}} end--><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
n2osr64q7lwvzr73t1fwgvhkocpqtdy
Template:Expand Spanish
10
1177
2586
2585
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2585
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Expand language
|name=Expand Spanish
|langcode=es
|google=yes
|section={{{section|}}}
|otherarticle={{{1|}}}
|set={{{1|}}}
|no interwiki={{{no interwiki|}}}
|date={{{date|}}}
|fa={{{fa|}}}
|demospace={{{demospace|<noinclude>main</noinclude>}}}
|topic={{#switch: {{{topic}}}
| geo = Geography
| gov = Government and politics
| cult
| culture = Culture
| hist = History
| sci = Science
| tech = Technology
| sport = Sports
| transport = Transport
| struct = Building and structure
}}
|nodoc={{{nodoc|}}}
}}
}}
gnwqjhqog6p18k54e8xzuo2ws36u59z
Template:Expand Tibetan
10
1179
2590
2589
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2589
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Expand language
|name=Expand Tibetan
|langcode=bo
|google=yes
|otherarticle={{{1|}}}
|set={{{1|}}}
|no interwiki={{{no interwiki|}}}
|date={{{date|}}}
|fa={{{fa|}}}
|demospace={{{demospace|<noinclude>main</noinclude>}}}
|topic={{#switch: {{{topic}}}
| geo = Geography
| gov = Government and politics
| cult
| culture = Culture
| hist = History
| sci = Science
| tech = Technology
| sport = Sports
| transport = Transport
| struct = Building and structure
}}
|nodoc={{{nodoc|}}}
}}
}}
ar2f13c33d0dm4wzkdtddy0gqsbi0jh
Template:Expand language
10
1157
2546
2545
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2545
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Expand language}} begin-->{{ambox
| name = {{{name|Expand language}}}
| subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly>
| type = notice
| image = [[File:Translation to english arrow.svg|50x40px|alt=|link=]]
| text =
{{hidden
| 1 =<!--
Multiple languages
--> {{#if:{{{langcode2|}}}|This {{#ifeq:yes|{{yesno|def=|{{{section|}}}}}|section|article}} '''may be expanded with text translated from the corresponding articles in {{#if:{{{otherarticle|}}}|[[:{{{langcode|}}}:{{{otherarticle}}}|{{#language:{{{langcode|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}|[[:{{{langcode}}}:{{Wikidata sitelink|lang={{{langcode}}}}}|{{#language:{{{langcode|}}}|en}}]]|{{#language:{{{langcode|}}}|en}}}}}}{{#if:{{{langcode3|}}}|{{#if:{{{otherarticle3|}}}|, [[:{{{langcode3|}}}:{{{otherarticle3}}}|{{#language:{{{langcode3|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode3}}}}}|, [[:{{{langcode3}}}:{{Wikidata sitelink|lang={{{langcode3}}}}}|{{#language:{{{langcode3|}}}|en}}]]|, {{#language:{{{langcode3|}}}|en}}}}}}}} and {{#if:{{{otherarticle2|}}}|[[:{{{langcode2|}}}:{{{otherarticle2}}}|{{#language:{{{langcode2|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode2}}}}}|[[:{{{langcode2}}}:{{Wikidata sitelink|lang={{{langcode2}}}}}|{{#language:{{{langcode2|}}}|en}}]]|{{#language:{{{langcode2|}}}|en}}}}}}'''.<!--
One language
-->|This {{#ifeq:yes|{{yesno|def=|{{{section|}}}}}|section|article}} '''may be expanded with text translated from {{#if:{{{langcode|}}}|the {{#if:{{{otherarticle|}}}|[[:{{{langcode|}}}:{{{otherarticle}}}|corresponding article]]|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}|[[:{{{langcode}}}:{{Wikidata sitelink|lang={{{langcode}}}}}|corresponding article]]|corresponding article}}}} in {{#language:{{{langcode|}}}|en}}|a corresponding article in another language}}'''.}} {{#if:{{{date|}}}|  ''<small>({{{date}}})</small>''}} <small>Click [show] for important translation instructions.</small>
| 2 =
{{#switch: {{{langcode|}}} <!--all languages with machine translate-->|af |am |ar |az |be |be-tarask |bg |bn |bs |ca |ceb |co |cs |cy |da |de |el |en |eo |es |et |eu |fa |fi |fr |fy |ga |gd |gl |gu |ha |haw |he |hi |hr |ht |hu |hy |id |ig |is |it |ja |jv |ka |kk |km |kn |ko |ku |ky |la |lb |lo |lt |lv |mg |mi |mk |ml |mn |mr |ms |mt |my |ne |nl |nn |no |ny |pa |pl |ps |pt |ro |ru |sd |sh |si |sk |sl |sm |sn |so |sq |sr |st |su |sv |sw |ta |te |tg |th |tl |tr |uk |ur |uz |vi |xh |yi |yo |zh |zu =
* {{#if:{{{otherarticle|}}}|[https://translate.google.com/translate?&u=https%3A%2F%2F{{{langcode|}}}.wikipedia.org%2Fwiki%2F{{urlencode:{{{otherarticle}}}}}&sl={{{googlelangcode|{{{langcode|}}}}}}&tl=en&prev=_t&hl=en View] a machine-translated version of the {{#language:{{{langcode|}}}|en}} article.|}}
* Machine translation like [https://deepl.com DeepL] or [https://translate.google.com/ Google Translate] is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia.
|#default = }}
* Do not translate text that appears unreliable or low-quality. If possible, verify the text with references provided in the foreign-language article.
* You '''must''' provide [[Wikipedia:Copying within Wikipedia|copyright attribution]] in the [[Help:Edit summary|edit summary]] accompanying your translation by providing an [[Help:Interlanguage links|interlanguage link]] to the source of your translation. A model attribution edit summary {{#if: {{Mw lang|fn=is_code|{{{langcode}}}}} | <code>Content in this edit is translated from the existing {{#language:{{{langcode|}}}|en}} Wikipedia article at <nowiki>[[:</nowiki>{{{langcode}}}<nowiki>:</nowiki>{{{otherarticle|Exact name of German article}}}<nowiki>]]</nowiki>; see its history for attribution.</code> | (using German): <code>Content in this edit is translated from the existing German Wikipedia article at <nowiki>[[:de:Exact name of German article]]</nowiki>; see its history for attribution.</code> }}
* You should also add the template {{#if:{{{otherarticle|}}}|<code><nowiki>{{Translated|</nowiki>{{{langcode|}}}<nowiki>|</nowiki>{{{otherarticle}}}<nowiki>}}</nowiki></code>|{{tl|Translated page}}}} to the [[{{TALKPAGENAME}}|talk page]].
* For more guidance, see [[Wikipedia:Translation]].
| headerstyle = padding-right: 3em; font-weight: normal; text-align: left
}}
|demospace={{{demospace|}}}
}}{{DMCA|Articles to be expanded|from|{{{date|}}}|All articles to be expanded}}<includeonly>{{#ifeq:{{NAMESPACE}}|Template
| {{Sandbox other||[[Category:Expand by language Wikipedia templates|{{#language:{{{langcode|}}}|en}}]]}}{{#if:{{{nodoc|}}}|
| {{documentation}}
}}
| {{{category|{{#ifeq:{{{fa}}}|yes|<!-- Featured articles
-->{{Main other|[[Category:Featured articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]{{#if:{{{langcode2|}}}|[[Category:Featured articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]}}{{#if:{{{langcode3|}}}|[[Category:Featured articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]}} }} }}<!--Topic
-->{{#if:{{{topic|}}}|{{Main other|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]{{#if:{{{langcode2|}}}|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]}}{{#if:{{{langcode3|}}}|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]}}}}|<!--No topic
-->{{Main other|{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}}}}{{#if:{{{langcode2|}}}|{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}} }}{{#if:{{{langcode3|}}}{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}} }} }}
}}}
}}{{Main other|{{#if:{{{otherarticle|}}}|<!-- a target article has been set we need do nothing -->|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}||{{#ifeq:{{{no interwiki}}}|yes|[[Category:pages with no translate target and no interwiki]]|[[Category:pages with no translate target]]}}}}}}}}</includeonly><!--{{Expand language}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ljsgz6hy1cxma52zw2f9hpnujpcu0le
Template:Expand section
10
1094
2420
2419
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2419
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Expand section}} begin-->{{Ambox
| name = Expand section
| type = content
| small = {{{small|left}}}
| image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=[icon]]]
| issue = This section '''needs expansion'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}}
|  with: {{{with|{{{for|{{{1}}}}}}}}}}}{{#ifeq:{{{punctuation|{{{period|}}}}}}|no||.}} <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} adding to it].</small>
| talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}}
| all = All articles to be expanded
| cat = Articles to be expanded
| date = {{{date|}}}
}}<!--{{Expand section}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
mtgickm0iqn9cvtlkr3hkm6ds7bxe9a
Template:Expert needed
10
1208
2648
2647
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2647
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||Expert needed|date=__DATE__|$B=
{{Ambox
| name = Expert needed
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| sect = {{{2|}}}
| issue= '''needs attention from an expert {{#if:{{{1|}}}
|in {{{1}}}{{#if:{{{ex2|}}}
|{{#if:{{{ex3|}}}
| , {{{ex2}}}{{#if:{{{ex4|}}}
| , {{{ex3}}}{{#if:{{{ex5|}}}
| , {{{ex4}}} or {{{ex5}}}
| or {{{ex4}}}}}
| or {{{ex3}}}}}
| or {{{ex2}}}}}
|}}
|on the subject}}'''. {{#if:{{{reason|}}}
|The specific problem is: '''{{{reason}}}.'''
}}
| fix = {{#if:{{{talk|}}}
|See the [[{{TALKPAGENAME}}#{{{talk}}}|talk page]] for details.
|{{#if:{{{reason|}}}|
|Please add a ''reason'' or a ''talk'' parameter to this template to explain the issue with the {{{2|article}}}.<includeonly>{{#ifeq:{{lc:{{{nocat|}}} }}|true||[[Category:Articles needing expert attention with no reason or talk parameter]]}}</includeonly>
}}
}} {{#if: {{{1|}}}
|[[Wikipedia:WikiProject {{ucfirst:{{{1}}}}}|WikiProject {{ucfirst:{{{1}}}}}]]{{#if:{{{ex2|}}}
|{{#if:{{{ex3|}}}
|, [[Wikipedia:WikiProject {{ucfirst:{{{ex2}}}}}|WikiProject {{ucfirst:{{{ex2}}}}}]]{{#if:{{{ex4|}}}
|, [[Wikipedia:WikiProject {{ucfirst:{{{ex3}}}}}|WikiProject {{ucfirst:{{{ex3}}}}}]]{{#if:{{{ex5|}}}
|, [[Wikipedia:WikiProject {{ucfirst:{{{ex4}}}}}|WikiProject {{ucfirst:{{{ex4}}}}}]] or [[Wikipedia:WikiProject {{ucfirst:{{{ex5}}}}}|WikiProject {{ucfirst:{{{ex5}}}}}]]
| or [[Wikipedia:WikiProject {{ucfirst:{{{ex4}}}}}|WikiProject {{ucfirst:{{{ex4}}}}}]]}}
| or [[Wikipedia:WikiProject {{ucfirst:{{{ex3}}}}}|WikiProject {{ucfirst:{{{ex3}}}}}]]}}
| or [[Wikipedia:WikiProject {{ucfirst:{{{ex2}}}}}|WikiProject {{ucfirst:{{{ex2}}}}}]]}}
|}} may be able to help recruit an expert.
|<br /><small>''When placing this tag, consider [[:Template:Expert needed#Parameters|associating this request]] with a [[WP:WikiProject|WikiProject]].''</small><includeonly>[[Category:Articles needing unspecified expert attention]]</includeonly>
}}
| date = {{{date|<noinclude>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}</noinclude>}}}
| cat = Articles needing expert attention
| all = All articles needing expert attention
}}<!--
Additional categories
-->{{category handler
|nocat={{{nocat|<noinclude>true</noinclude>}}}
|main={{Expert needed/catcheck|{{{1|}}}}}{{Expert needed/catcheck|{{{ex2|}}}}}{{Expert needed/catcheck|{{{ex3|}}}}}{{Expert needed/catcheck|{{{ex4|}}}}}{{Expert needed/catcheck|{{{ex5|}}}}}
}}
}}<noinclude>
{{Documentation}}<!-- Add category links to the /doc subpage -->
</noinclude>
esfuyyznuiihmagdrvlencruhk2ap2d
Template:External links
10
1216
2664
2663
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2663
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{External links}} begin-->{{Ambox
| name = External links
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-external_links
| issue = This {{{1|article}}}'s '''use of [[Wikipedia:External links|external links]] may not follow Wikipedia's policies or guidelines'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by removing [[Wikipedia:What Wikipedia is not#Wikipedia is not a mirror or a repository of links, images, or media files|excessive]] or [[Wikipedia:External links|inappropriate]] external links, and converting useful links where appropriate into [[Wikipedia:Citing sources|footnote references]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia external links cleanup
| cat2 = Wikipedia spam cleanup
}}<!--{{External links}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
oswxw585s6irmfqbnk1ad7r07yrmnr7
Template:FULLROOTPAGENAME
10
1611
4870
4869
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4869
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#if: {{ {{{|safesubst:}}}Ns has subpages | {{ {{{|safesubst:}}}#if:{{{1|}}}|{{ {{{|safesubst:}}}NAMESPACE:{{{1}}}}}|{{ {{{|safesubst:}}}NAMESPACE}}}} }}
| {{ {{{|safesubst:}}}#titleparts:{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|{{ {{{|safesubst:}}}FULLPAGENAME}}}}|1}}
| {{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|{{ {{{|safesubst:}}}FULLPAGENAME}}}}
}}<noinclude>
{{documentation}}
</noinclude>
t4jn967jlk6ph7qu71w2b8f5083yjrl
Template:Failure
10
1524
4696
4695
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4695
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #ffbbbb; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-failure" | {{{1|Failure}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
f2jdefnlea6j0wlemidra76kc6vp8ye
Template:Fake heading
10
1612
4872
4871
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4871
wikitext
text/x-wiki
{{main other
|1={{error|Per [[WP:PSEUDOHEADING]] fake headings should not be used in articles.}}[[Category:Pages with templates in the wrong namespace]]
|2=<div style="color: #000000; background: none; overflow: hidden; page-break-after: avoid; {{#switch: {{{level|{{{sub|}}}}}}
| 1 = font-size: 1.8em; font-family: Georgia,Times,serif; margin-top: 1em; margin-bottom: 0.25em; line-height: 1.3; padding: 0; border-bottom: 1px solid #AAAAAA;
| 2 | #default = font-size: 1.5em; font-family: Georgia,Times,serif; margin-top: 1em; margin-bottom: 0.25em; line-height: 1.3; padding: 0; border-bottom: 1px solid #AAAAAA;
| 3 = font-size: 1.17em; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0;
| 4 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0;
| 5 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0;
| 6 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0;
}}">{{{1|Section}}}</div>}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
9omj4duudfxptan2ocabdv8801hlacq
Template:False version
10
1283
2798
2797
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2797
wikitext
text/x-wiki
{{Template for discussion/dated|action=|page=False version|link=Wikipedia:Templates for discussion/Log/2020 September 27#Template:False version|help=off|bigbox={{#invoke:Noinclude|noinclude|text=yes}}}}
{{Ambox
| name = False version
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| style = {{{style|}}}
| image =
| imageright = [[File:Echo chat icon.svg|40px|link=]]
| issue = '''An outdated or falsified version of this {{{what|article}}} has been spreading on social media'''.
| talk = {{{talk|}}}
| fix = Please verify that any screenshots you may have seen are consistent with the actual content on this page.
| removalnotice =
| date = {{{date|}}}
| cat =
| all =
}}<noinclude>
{{Documentation}}
</noinclude>
b7ikea53dwdeexmjrwnz8uqxrfmk4x9
Template:Famous
10
1240
2712
2711
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2711
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Famous}} begin-->{{Ambox
| name = {{{name|Famous}}}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-famous
| sect = list
| issue = of "famous" or "notable" {{{category|}}} persons '''has no clear [[WP:V|inclusion]] or [[WP:V|exclusion criteria]]'''. Please help to define clear inclusion criteria and edit the list to contain only subjects that fit those criteria.
| talk = {{{talk|}}}
| removalnotice = yes
| date = {{{date|}}}
| cat = Unverifiable lists of {{{category|}}} persons
}}<!--{{Famous}} end-->
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
oj4z3cdu3t4bbxmthrzsor3jb5cckza
Template:Fanpov
10
1149
2530
2529
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2529
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Fanpov}} begin-->{{Ambox
| name = Fanpov
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-fanpov
| issue = This {{{1|article}}} '''may be written from a [[Wikipedia:Fancruft|fan's point of view]], rather than a [[Wikipedia:Neutral point of view|neutral point of view]]'''.
| fix = Please [[Wikipedia:Cleanup|clean it up]] to conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, and to make it neutral in tone.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with a promotional tone
| all = All articles with a promotional tone
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Fanpov}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
rk4cdnr0i5wbcsf189cbiy4b6jxb97f
Template:Fiction
10
927
2086
2085
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2085
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Fiction
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-fiction
| issue = This {{{1|article or section}}} '''may fail to make a clear distinction between fact and [[Wikipedia:Fiction|fiction]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] so that it meets Wikipedia's [[Wikipedia:Manual of Style/Writing about fiction|fiction guidelines]] and [[:Category:Wikipedia style guidelines|quality standards]].
| removalnotice = yes
| cat = Articles that need to differentiate between fact and fiction
| all = All articles that need to differentiate between fact and fiction
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
o98pev513x7w77gr5ygvzu104aj3b50
Template:Fiction trivia
10
963
2158
2157
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2157
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Fiction trivia
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| sect = {{{1|}}}
| issue = '''may contain [[WP:IINFO|minor, trivial or unrelated fictional references]]'''.
| talk = {{{talk|}}}
| fix = [[WP:TRIVIA|Trivia]] or references unimportant to the overall [[Plot (narrative)|plot]] of a work of fiction should be edited to explain their importance or deleted.
| date = {{{date|}}}
| cat = Articles with fictioncruft
}}
}}<noinclude>
{{Documentation}}
</noinclude>
bmcpdmx7xgo48xwn40h1ahxv7r1t5op
Template:File page NFCC concerns tag
10
1161
2554
2553
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2553
wikitext
text/x-wiki
{{ambox
| name = File page NFCC concerns tag
| type = delete
| class = ambox-Copy_edit
| image = [[File:Ambox warning pn.svg|40px|alt=|link=]]
| text = This file lacks a [[WP:NFUR|non-free use rationale]] for the following articles:<br/>
:{{{1|''None given: see [[#File usage|File usage]] below''}}}<br/>
Every single use of a non-free file needs a separate non-free use rationale on the file page including the components necessary per [[Wikipedia:Non-free use rationale guideline]]. Please either add a valid rationale for each use if appropriate, remove the file from the article if a valid rationale cannot be created or start a discussion at [[WP:NFCR]] if in doubt. A rationale is required for the file to be in compliance with the [[WP:NFCC|non-free content policy]]. If no valid rationale for each of the above articles has been added within '''7 days''' from the placement of this message, then the file might be removed from the articles where a rationale is lacking.<br/><small>''Note that a rationale might already exist but may not match the article name due to typos or complex page-move operations.'' '''''If possible, you may correct the rationale's article name and safely remove this warning.'''''</small>
}}<includeonly>{{#if:{{{2|{{{timestamp|{{{date|}}}}}}}}}|{{file other <!-- Only categorise when on file pages. -->
| [[Category:Non-free files lacking a non-free use rationale as of {{#time:F Y|{{{2|{{{timestamp|{{{date|}}}}}}}}}}}|{{PAGENAME}}]]
}}}}{{#ifexpr:{{#time:U}}>{{#time:U|{{{2|{{{timestamp|{{{date|30200000000000}}}}}}}}} +7 days}}
|{{ambox
| name = File page NFCC concerns tag
| type = speedy
| image = [[File:Deletion icon.svg|40px|alt=|link=]]
| text = This message has remained in place for seven days and so the files may be [[Wikipedia:Criteria for speedy deletion#F6|removed without further notice]].}}{{file other
| [[Category:Non-free files lacking a non-free use rationale for more than 7 days|{{PAGENAME}}]]
}}
}}</includeonly>{{file other
| [[Category:All non-free files lacking a non-free use rationale|{{PAGENAME}}]]
}}<noinclude>
{{documentation}}
</noinclude>
3ea6hfsrnr1ehcre5e4gyyemjd4t2ul
Template:Fix
10
1448
3200
3199
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3199
wikitext
text/x-wiki
{{#switch:{{{subst|¬}}}
|¬={{category handler
|template=[[Category:Templates needing substitution checking]]
|nocat={{{nocat|<noinclude>true</noinclude>}}}
}}
|SUBST=[[Category:Pages with incorrectly substituted templates]]
}}{{Category handler
|main={{Fix/category
|cat-date={{{cat-date|}}}
|cat={{{cat|}}}
|cat-date2={{{cat-date2|}}}
|cat2={{{cat2|}}}
|cat-date3={{{cat-date3|}}}
|cat3={{{cat3|}}}
|date={{{date|}}}
}}
|template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}}
|subpage=no
}}{{#if:{{{text|}}}
|<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">[<i>{{#if:{{{pre-text|}}}
|{{{pre-text}}} 
}}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}| ({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}}
| {{{post-text}}}
}}</i>]</sup>|{{{special|}}}
}}<noinclude>
{{Documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
owg7pdp6e9nqycfh3g7fuee1rm3t159
Template:Fix/category
10
1449
3202
3201
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3201
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}}
|[[{{{cat-date}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}}
|[[{{{cat-date2}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date2}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}}
|[[{{{cat-date3}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date3}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}
gpikm5p2yggfosi6w5maxtx5my3u9im
Template:Fmbox
10
919
2070
2069
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2069
wikitext
text/x-wiki
{{#invoke:Message box|fmbox}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
q4qfnrd9je1n71bknyj9gdhs02g2rws
Template:For
10
1525
4698
4697
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4697
wikitext
text/x-wiki
<includeonly>{{#invoke:For|For}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
7es2p1mk6qse8zlwn5qqya2ysrq1rcr
Template:For2
10
1613
4874
4873
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4873
wikitext
text/x-wiki
{{Hatnote|For {{{1}}}, see {{{2}}}{{#if:{{{4|}}}|. For {{{3}}}, see {{{4}}}{{#if:{{{6|}}}|. For {{{5}}}, see {{{6}}}.|.}}{{#if:{{{8|}}}| For {{{7}}}, see {{{8}}}.}}{{#if: {{{9|}}}| For {{{9}}}, see {{{10}}}.}}|{{#if:{{{3|}}}| and {{{3}}}.|.}}}}}}<noinclude>{{Documentation}}</noinclude>
bfctflzfy1ei8y5h6039tg3phnliqcu
Template:Format
10
1153
2538
2537
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2537
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Very long}} begin-->{{Ambox
| name = {{{name|Format}}}
| subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| type = style
| class = ambox-format
| issue = This {{#if:{{NAMESPACE}}|page|{{{1|article}}} }}{{#ifeq:{{{1|}}}|section||{{space}}or section}} '''may need to be [[Wikipedia:Manual of Style/Text formatting|formatted]].'''
| fix = You can help Wikipedia by '''formatting''' it if you know how. Please also consider [[Wikipedia:Template messages/Cleanup#Structure, formatting and sections|changing this notice to be more specific]].
| date = {{{date|}}}
| small = {{{small|}}}
| smalltext = This {{#if:{{NAMESPACE}}|page|{{{1|article}}} }}{{#ifeq:{{{1|}}}|section||{{space}}or section}} may need to be [[Wikipedia:Manual of Style/Text formatting|formatted]].<br><small>Please also consider [[Wikipedia:Template messages/Cleanup#Structure, formatting and sections|changing this notice to be more specific]].</small>
| cat = Articles needing cleanup
| all = All pages needing cleanup
}}<!--{{Format}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
f9or46pz0ywxb5a11yxal84rxf1lzwp
Template:Format footnotes
10
964
2160
2159
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2159
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Format footnotes}} begin-->{{Ambox
| name = Format footnotes
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This {{{1|article}}} includes [[WP:CITE#Types of citation|inline citations]], but '''they are not [[Help:Footnotes|properly formatted]].'''
| fix = Please [[{{SITENAME}}:WikiProject Fact and Reference Check|improve]] this article by <span class="plainlinks">[{{fullurl:{{SUBJECTPAGENAME}}|&action=edit}} correcting them]</span>.
| date = {{{date|}}}
| all = Articles needing footnote reformatting
| cat = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| removalnotice = yes
}}<!--{{Format footnotes}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
i86fyga81fmp4trzstmpkz38e3bp96a
Template:Formula missing descriptions
10
1218
2668
2667
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2667
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Formula missing descriptions}} begin-->{{Ambox
| name = Formula missing descriptions
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = Some or all of the formulas presented in this {{#if:{{{section|}}}|section|article}} have '''missing or incomplete descriptions of their variables, symbols or constants''' which may create ambiguity or prevent full interpretation.
| fix = Please assist in recruiting an expert or [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] yourself. See the [[{{TALKPAGENAME}}|talk page]] for details.
| date = {{{date|}}}
| cat = Articles needing expert attention
| cat2 = Wikipedia articles needing factual verification
}}<!--{{Formula missing descriptions}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
ocm6gaw8a5a7ue6ckpin25lifosse6s
Template:Free
10
1526
4700
4699
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4699
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #9FF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="free table-free"|{{{1|Free}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Software table cell templates]]
</noinclude>
gzmoj3251y0apqmfe58r81s4ygmen41
Template:Fringe theories
10
951
2134
2133
2020-09-29T19:17:27Z
Chrisb
1
1 revision imported
2133
wikitext
text/x-wiki
<noinclude>
{{For|the Fringe television show|Template:Fringe (TV series)}}
</noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Fringe theories
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-fringe-theories
| image = [[File:Ambox scales.svg|50px|link=]]
| sect = {{{1|}}}
| issue = '''may present [[WP:FRINGE|fringe theories]], without giving [[WP:UNDUE|appropriate weight]] to the mainstream view''', and explaining the responses to the fringe theories.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] or discuss the issue on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}{{!}}talk page]]|[[{{TALKPAGENAME}}{{!}}talk page]]}}.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles needing more viewpoints
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
8dhee76umpsnl95848045cku5tglt7o
Template:Further
10
1450
3204
3203
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3203
wikitext
text/x-wiki
<includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}| on {{{topic|}}}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
pu1ae8is2dmdurv2yovsfwxjajnhn2s
Template:Further reading cleanup
10
965
2162
2161
2020-09-29T19:17:28Z
Chrisb
1
1 revision imported
2161
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Further reading cleanup}} begin-->{{Ambox
| name = Further reading cleanup
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| text = This '''[[Wikipedia:Manual_of_Style/Layout#Further_reading|further reading]]''' section may contain inappropriate or excessive suggestions that may not follow Wikipedia's [[Wikipedia:External links|guidelines]]. Please ensure that only a [[Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_directory|reasonable number]] of [[Wikipedia:Neutral point of view|balanced]], [[WP:MEDDATE|topical]], [[Wikipedia:Reliable sources|reliable]], and notable further reading suggestions are given; removing less relevant or redundant publications with the [[WP:WEIGHT|same point of view]] where appropriate. Consider utilising appropriate texts as [[Wikipedia:Inline citation|inline sources]] or creating a [[Wikipedia:WikiProject_Bibliographies#Relevant_guidelines_and_manual_of_style|separate bibliography article]].
| date = {{{date|}}}
| cat = Wikipedia spam cleanup
| all = Wikipedia further reading cleanup
| all2 = {{#if:{{{1|}}}|Further reading cleanup templates with parameter 1}}
|removalnotice = yes
}}<!--{{Further reading cleanup}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
oxq4qyt1eudwpzl0phm0t6im33djlqt
Template:GOCEinuse
10
974
2180
2179
2020-09-29T19:17:30Z
Chrisb
1
1 revision imported
2179
wikitext
text/x-wiki
<!--{{GOCEinuse}} begin-->{{Ambox
| name = GOCEinuse
| type = notice
| class = ambox-GOCEinuse
| image = [[File:Ambox clock.svg|55px|alt=|link=]]
| text = This '''{{yesno|{{{section}}}|yes=section|no=article|def=article}}''' is currently undergoing a major edit by the '''[[Wikipedia:WikiProject Guild of Copy Editors|Guild of Copy Editors]]'''. As a courtesy, '''please do not edit this page''' while this message is displayed.<br /><span style="font-size: 88%">The copy editor who added this notice is listed in the [{{safesubst:<noinclude />fullurl:{{safesubst:<noinclude />FULLPAGENAMEE}}|action=history}} page history]. {{safesubst:<noinclude />#if:{{{time|}}}|This message was added at {{{time|}}}.|}} This page was last revised at {{#time:H:i, j F Y|{{REVISIONTIMESTAMP}}}} (UTC) ({{time ago|{{REVISIONTIMESTAMP}}}}) by {{User|{{REVISIONUSER}}}} ({{Purge|Click here to refresh this time calculation.}}). {{main other|{{#ifexpr:{{#time:U}}-{{#time:U|{{REVISIONTIMESTAMP}}}}<86400||Please remove {{Tlc|GOCEinuse}} from this page as this page has not been edited for at least 24 hours.<includeonly>[[Category:Pages with a stale GOCEinuse template on them]]</includeonly>}}}} <br/>If you have any questions or concerns, please direct them to the [[Wikipedia talk:WikiProject Guild of Copy Editors|Guild of Copy Editors' talk page]]. Thank you for your patience.</span>
| all = Pages actively undergoing a major edit
}}<!--{{GOCEinuse}} end--><noinclude>
{{Documentation}}
</noinclude>
eyqgad922cb1anui78l6qiyjzycnj5l
Template:GOCEuc
10
975
2182
2181
2020-09-29T19:17:30Z
Chrisb
1
1 revision imported
2181
wikitext
text/x-wiki
<!--{{GOCEinuse}} begin-->{{Ambox
| name = GOCEuc
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = notice
| image = [[File:Ambox clock.svg|55px|alt=|link=]]
| text = This article is in the middle of an expansion or major revamping by the '''[[WP:PACE|Guild of Copy Editors]]'''. {{#ifeq: {{{contest}}} | yes |If you are a fellow copyeditor participating in a Backlog Elimination Drive, please do not copyedit this page. |You are welcome to assist in its construction by editing it as well. }}
<br /><span style="font-size: 88%">The copy editor who added this notice is listed in the [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=history}} page history]. If this page has not been edited for several days, please remove this template. If you have any questions or concerns, please direct them to our [[Wikipedia talk:WikiProject Guild of Copy Editors|talk page]]. Thanks for your patience and cooperation while we improve the quality of Wikipedia.</span>
}}<!--{{GOCEinuse}} end--><noinclude>
[[Category:WikiProject user templates]]
[[Category:WikiProject Guild of Copy Editors templates]]
</noinclude>
hecp0dcqce4nxhxamwg43tzfckjbryy
Template:Game guide
10
970
2172
2171
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2171
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Game guide}} begin-->{{Ambox
| name = Game guide
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| imageright = {{WPVG icon|40px}}
| issue = This {{#if:{{{section|}}}|section|{{#ifeq:{{{1|}}}|section|section|article}}}} '''may contain material discouraged by the [[Wikipedia:Manual of Style/Video games|manual of style for video game subjects]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by removing content such as lists of minutiae or a detailed description of how to play a game, and rewriting the article in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. {{#if:{{{serious|}}}|To copy to a gaming wiki, replace this template with <tt>{{tl|Copy to gaming wiki}}</tt>.}}
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| all2 = Video game cleanup
}}<!--{{Game guide}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE
</noinclude>
n7d9v9hzxawjxwe4bsfqnba7e7pyla4
Template:Game trivia
10
1183
2598
2597
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2597
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Game trivia}} begin-->{{Ambox
| name = Game trivia
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| imageright = {{WPVG icon|40px}}
| issue = This {{#if:{{{section|}}}|section|article}} '''may contain excessive or off-topic [[Wikipedia:Manual of Style/Video games#Article content|gaming-related detail]]'''.
| fix = Please help by removing [[Wikipedia: What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|purely indiscriminate information]], relocating encyclopedic material to more appropriate pages, and adding relevant information written in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]].
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| all2 = Video game cleanup
}}<!--{{Game trivia}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE
</noinclude>
n2vkcbgjy13t9xz04iitvl3sm84xqzy
Template:Gameplay
10
971
2174
2173
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2173
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Gameplay}} begin-->{{Ambox
| name = Gameplay
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = The [[gameplay]] summary in this {{{1|article}}} is '''too long or detailed compared to the rest of the article.'''
| fix = Please [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} edit the {{{1|article}}}] to [[Wikipedia:Manual of Style (writing about fiction)|focus on discussing the work]] rather than merely [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, or textbook|detailing the gameplay]].
| cat = Wikipedia articles with plot summary needing attention
| all = All Wikipedia articles with plot summary needing attention
| date = {{{date|}}}
}}<!--{{Gameplay}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
hdxm3pczue2r8rjuy160deh5j06505t
Template:Ge'ez script needed
10
1169
2570
2569
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2569
wikitext
text/x-wiki
{{Script needed
|language = Ge'ez
|image = Ge'ez.svg
|info = Wikipedia:Manual of Style/Ethiopia-related articles
}}
ftpjatk3om8qk5tg60mc8txjf4tmgr1
Template:GenderPOV
10
1204
2640
2639
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2639
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{GenderPOV}} begin-->{{Ambox
| name = GenderPOV
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-POV
| style = {{{style|}}}
| image = [[File:Ambox scales.svg|50px|link=]]
| issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this gender-related {{{what|article}}} is [[Wikipedia:NPOV dispute|questioned]] because it may show [[Wikipedia:WikiProject Countering systemic bias#Selection based on gender bias|systemic bias]]'''.
| fix = Please see the discussion on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]]. Please do not remove this message until the issue is resolved.
| date = {{{date|}}}
| removalnotice = yes
| cat = NPOV disputes
| all = All NPOV disputes
}}<!--{{GenderPOV}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
cgykue9c6r22nhrvdecxiw62w51tct4
Template:Gender unclear
10
1175
2582
2581
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2581
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style<!--
| class = ambox-Gender -->
| issue = The '''gender of this {{#if:{{{1|}}}|{{{1}}}|article}}'s subject is not apparent'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve the {{#if:{{{1|}}}|{{{1}}}|article}}] by stating their gender, or by using a gender-specific pronoun such as "he", "she", "his", "her", etc. {{#if: {{wikidata|label|raw}} | You may also wish to add the gender to the [[d:Special:EntityPage/{{wikidata|label|raw}}|corresponding Wikidata entry]]. }}
| cat = Wikipedia articles with unclear gender
| date = {{{date|}}}
| all = All Wikipedia articles with unclear gender
| name = Gender unclear
}}
}}<noinclude>
<!-- Add categories to the /doc subpage, not here! -->
{{documentation}}
</noinclude>
b5x25cerluryvasnc6ws3qf3hk5kk5p
Template:Generalize
10
972
2176
2175
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2175
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Generalize}} begin-->{{Ambox
| name = Generalize
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| issue = This {{{1|article}}} '''only describes one highly specialized aspect of its associated subject'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding more general information. {{#ifeq:{{SUBJECTSPACE}}|{{NAMESPACE}}|The [[{{TALKPAGENAME}}|talk page]] may contain suggestions.}}
| date = {{{date|}}}
| cat = Wikipedia articles needing context
}}<!--{{Generalize}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
c7yp405rwt4resuickgbxr105elpbv1
Template:Geographical imbalance
10
973
2178
2177
2020-09-29T19:17:30Z
Chrisb
1
1 revision imported
2177
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Geographical imbalance}} begin-->{{Ambox
| name = Geographical imbalance
| class = ambox-geographical-imbalance
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[Image:Ambox globe content.svg|50x40px|link=]]
| imageright = [[Image:Ambox scales.svg|50px|link=]]
| issue = This {{{2|article}}} '''may not provide [[Wikipedia:WikiProject Countering systemic bias|balanced geographical coverage]] on {{{1|the region in question}}}'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]].
| cat = Articles with limited geographic scope
| date = {{{date|}}}
}}<!--{{Geographical imbalance}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
jojtmtdaq7zgvsttrduuv4pxkodcqso
Template:Georgian script needed
10
994
2220
2219
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2219
wikitext
text/x-wiki
{{Script needed
|language = Georgian
|image = ღ.png
}}
0gtom64j3vy92hso90yqach2gow8jze
Template:Globalize
10
1148
2528
2527
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2527
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!-- {{Globalize}} begin -->{{ambox
| name = Globalize
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-globalize
| image = [[File:ambox globe content.svg|50x40px|alt=Globe icon.|link=]]
| issue = The examples and perspective in this {{{1|article}}} '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|deal primarily with {{#if:{{{4|}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}}, {{{3name|{{Globalize/name|{{Globalize/name|{{{3}}}}}|displayname}}}}}, and {{{4name|{{Globalize/name|{{Globalize/name|{{{4}}}}}|displayname}}}}}|{{#if:{{{3|}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}} and {{{3name|{{Globalize/name|{{Globalize/name|{{{3}}}}}|displayname}}}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}}}}}} and do|may}} not represent a [[Wikipedia:WikiProject Countering systemic bias|worldwide view]] of the subject'''. {{#if:{{{reason|}}}|The specific issue is: '''{{{reason}}}'''}}
| fix = You may [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}], discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}}
|[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]], or {{#ifeq:{{{1|article}}}|article|[[Wikipedia:Article wizard|create a new article]]|create a new {{{1}}}}}, as appropriate
|[[{{TALKPAGENAME}}|talk page]], or {{#ifeq:{{{1|article}}}|article|[[Wikipedia:Article wizard|create a new article]]|create a new {{{1}}}}}, as appropriate
}}.
| removalnotice = yes
| date = {{{date|}}}
| small = {{{small|}}}
| cat = Articles with limited geographic scope
| all = {{#if:{{{2|}}}|{{#ifexist:Category:{{Globalize/name|{{{2}}}}}-centric|{{Globalize/name|{{{2}}}}}-centric|Pages in non-existent country centric categories}}}}
| all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{Globalize/name|{{{3}}}}}-centric|{{Globalize/name|{{{3}}}}}-centric|Pages in non-existent country centric categories}}}}
| all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{Globalize/name|{{{4}}}}}-centric|{{Globalize/name|{{{4}}}}}-centric|Pages in non-existent country centric categories}}}}
}}<!-- {{Globalize}} end -->
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
64rs141jcxtzkuy0cmf6fzy18kk5wse
Template:Good
10
1527
4702
4701
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4701
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #bfd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes2 table-yes2"| {{{1|Good}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
ozn5kq60ba8pfdh06596rcpyqj2uzx3
Template:Greek script needed
10
995
2222
2221
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2221
wikitext
text/x-wiki
{{Script needed
|language = Greek
|image = Omega uc lc.svg
}}
a0g6ii62w1fy8zm8vb81331nv5zsvo9
Template:Hasty
10
976
2184
2183
2020-09-29T19:17:30Z
Chrisb
1
1 revision imported
2183
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst||$B={{Ambox
| name = Hasty
| type = notice
| image = [[Image:Ambox clock.svg|left|50px|alt=|link=]]
| text = Because the speedy deletion tag(s) shown below was placed very shortly after this page's creation, at a time when the creator may not have finished the initial entry, and the CSD criteria it was tagged under is not critical (unlike attack pages, copyright violations, obvious tests, vandalism, patent nonsense, etc., all of which should be deleted immediately) the {{#switch: {{{role}}}|admin=''[[WP:ADMIN|administrator]]''|editor=uninvolved ''[[Wikipedia:Wikipedians|editor]]''|''[[WP:ADMIN|administrator]]'' or other uninvolved ''[[Wikipedia:Wikipedians|editor]]''}} who reviewed the speedy deletion tag(s) is asking, by this notice's placement, for a customary [[Wikipedia:Criteria_for_speedy_deletion#cite_note-Hasty-7|10-15 minute courtesy window]] for the original contributor to address any deficiencies. The article should not be deleted before {{#if:{{{1|}}}|{{{1}}} (UTC); current time: {{CURRENTTIME}} (UTC))|that time}}.<br/><small>''This template should only be applied to short articles with insufficient content for assessment purposes – always placed above (and never in place of) an existing speedy deletion tag''</small>
}}}}<noinclude>
{{Documentation}}
</noinclude>
egwokm2vevtrygzl8ufji9zos07cijg
Template:Hatnote
10
1614
4876
4875
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4875
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
8nnude79i1y2v6yy2z7j285k1k4v8p3
Template:Hatnote templates
10
1478
3260
3259
2020-10-11T01:41:28Z
Chrisb
1
1 revision imported
3259
wikitext
text/x-wiki
{{Navbox
| name = Hatnote templates
| state = {{{state|<includeonly>autocollapse</includeonly>}}}
| bodyclass = hlist
| belowclass = hlist
| title = [[WP:Hatnote#Hatnote templates|Hatnote templates]]
| above =
*[[Wikipedia:Hatnote]]
*[[Wikipedia:Disambiguation]]
*[[Wikipedia:Redirect]]
| group1 = Generic
| list1 =
*{{tl|Hatnote}}
*{{tl|Selfref}} (for self-references)
| group2 = For and about
| list2 =
*{{tl|For}}
*{{tl|For2}} (for custom text)
*{{tl|About}}
*Variations: {{tl|Other uses}}
*{{tl|Other uses of}}
| group3 = Other topics
| list3 =
*{{tl|Other people}}
*{{tl|About other people}} (adds "about" description)
*{{tl|Similar names}}
*{{tl|Other places}}
*{{tl|Other ships}}
*{{tl|Other hurricanes}}
| group4 = Redirect
| list4 =
*{{tl|Redirect}}
*{{tl|Redirect2}} (for two redirects)
*{{tl|Redirect-multi}} (for multiple redirects)
*{{tl|Redirect-several}} (for several redirects, without listing each)
*{{tl|Redirect-synonym}}
*{{tl|Redirect-distinguish}}
*{{tl|Technical reasons}}
| group5 = Distinguish
| list5 =
*{{tl|Distinguish}} (supports custom text too)
*{{tl|Redirect-distinguish}}
*{{tl|Redirect-distinguish2}} (for custom text)
*{{tl|Redirect-distinguish6}}
*{{tl|About-distinguish}}
*{{tl|About-distinguish2}} (for custom text)
| group6 = For use in sections
| list6 =
*{{tl|Main}}
*{{tl|Further}}
*{{tl|Further2}} (for custom text)
*{{tl|See also}}
*{{tl|See also if exists}}
*{{tl|For outline}}
| group7 = Special
| list7 =
*{{tl|Broader}}
*{{tl|See introduction}}
*{{tl|See Wiktionary}}
*{{tl|Transcluding article}}
*{{tl|Transcluded section}}
| group8 = Subject specific
| list8 =
* {{tl|Year dab}}
* {{tl|Highway detail hatnote}}
* {{tl|For LMST}}
* {{tl|WikiIPA}}
* {{tl|Other MeSH codes}}
| below =
*{{Icon|cat}} [[:Category:Hatnote templates]]
**[[:Category:Hatnote modules|modules]]
**[[:Category:Hatnote templates for names|for [family] names]]
**[[:Category:Hatnote templates for lists|for lists]]
*[[Template:Category hatnote templates|hatnote templates for category pages]]
}}<noinclude>
{{Documentation}}
</noinclude>
o6w460x052zj98f5i9nxv8ajkcyn8sj
Template:Hebrew script needed
10
1000
2232
2231
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2231
wikitext
text/x-wiki
{{Script needed
|language = Hebrew
|image = Shalom.svg
|category = Articles needing modern Hebrew script or text
}}
kmary6d832fanv4wfofhcyljqcn5ldy
Template:High-risk
10
1296
2824
2823
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2823
wikitext
text/x-wiki
#REDIRECT [[Template:High-use]]
{{Rcat shell|
{{Wikidata redirect}}
{{R from merge}}
{{R from template shortcut}}
}}
5ypw8nzs5x9l9hs9og1m6vi8vbxlq11
Template:High-use
10
873
1978
1977
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1977
wikitext
text/x-wiki
{{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|all-pages={{{all-pages|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! -->
</noinclude>
irrlemrylj34lyo95ruko5p2ows0l5r
Template:High Quality Article
10
1280
2792
2791
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2791
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|High Quality Article}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Diamond_Document.png|60x120px|]]
| issue = The information in this {{#if:{{{1|}}}|{{{1}}}|article}} '''is correct and up to date'''. To suppress vandalism and/or disruptive editing, this page has been [[Wikipedia:Protection policy|protected]] until further notice. Please leave a message on the talk page if you wish to improve this article.
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = High-quality articles with no reason to be edited
| all = All high-quality articles with correct information with no reason to be edited
}}
}}<noinclude>
<!-- Please add categories to the /doc subpage, thanks -->
{{Documentation}}
</noinclude>
8ccj5lsxz6yfcb8hcmkwjlb2reokjeo
Template:Historical congressional article
10
978
2188
2187
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2187
wikitext
text/x-wiki
<!--{{Historical congressional article}} begin-->{{Ambox
| name = Historical congressional article
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[File:Seal of the United States Congress.svg|40px]]
| text = '''This is a historical article, not necessarily a current listing.'''<br>Therefore, if someone steps down or dies, don't erase them. Write that they stepped down, died, etc.
}}<!--{{Historical congressional article}} end--><noinclude>
{{documentation}}
</noinclude>
ojjmuwunxh7ujf9zvpvd7r89udthizy
Template:Hlist
10
1451
3206
3205
2020-10-11T01:32:03Z
Chrisb
1
1 revision imported
3205
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ihcdy525o8nnmq114czc48dpk6pnojd
Template:Hoax
10
1273
2778
2777
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2777
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Hoax}} begin-->{{Ambox
| name = Hoax
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = delete
| image = [[File:OOjs UI icon helpNotice-ltr-destructive.svg|40px|Suspected hoax]]<!--see talk page-->
| class = ambox-hoax
| issue = '''The truthfulness of this {{#if:{{{section|}}}|section|article}} has been questioned.''' It is believed that some or all of its content ''may'' constitute a [[WP:Do not create hoaxes|hoax]].
| fix = Please carefully verify any [[WP:Reliable sources|reliable sources]] used to support the claims in the {{{1|article or section}}}, and add reliable sources for any uncited claims. If the claims cannot be reliably sourced, consider {{{2|placing the article at [[WP:AFD|articles for deletion]] and/or }}} removing the section in question. ''For blatant hoaxes, use {{tl|db-hoax}} to identify it for [[WP:CSD#G3|speedy deletion]] instead.'' Further information and discussion may be on the article's [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
| all = Wikipedia suspected hoax articles
}}<!--{{Hoax}} end-->
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ipvvk4yjuploedrmqq477y6w8nr6aur
Template:Hook
10
1159
2550
2549
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2549
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Hook
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-hook
| sect = [[Wikipedia:How to write a plot summary|plot summary]]
| issue = '''may be [[Narrative hook|a hook]] or written as if for a [[listings magazine]].'''
| talk = {{{talk|}}}
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by ensuring it covers the whole story, however briefly, and in an [[Wikipedia:Encyclopedic style|encyclopedic style]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles with plot summary needing attention
| all = All Wikipedia articles with plot summary needing attention
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
qb8zcaii5muhu0wrqkk3dy470coo7nq
Template:Ibid
10
949
2130
2129
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2129
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|Ibid}}}
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| text = Constructs such as ''[[ibid.]]'', ''[[loc. cit.]]'' and ''[[idem]]'' are '''discouraged by [[WP:IBID|Wikipedia's style guide]] for footnotes''', as they are easily broken. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by replacing them with [[Wikipedia:Footnotes#Naming a ref tag so it can be used more than once|named references]] (''[[Template:Refref/core|quick guide]]''), or an abbreviated title.
| removalnotice = yes
| cat = Articles with ibid
| date = {{{date|}}}
}}
}}<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{documentation}}
</noinclude>
9zkyxwy8g7k6wnrkjqckygs9eacgqo9
Template:Icon
10
1452
3208
3207
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3207
wikitext
text/x-wiki
{{#invoke:Icon|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
m4ab9noabl8v4ki5cx6t5ksjcjh5u8o
Template:ImageAnnotation
10
1768
5250
5248
2020-11-22T00:21:05Z
Chrisb
1
5250
wikitext
text/x-wiki
<noinclude>
This is the "ImageAnnotation" template.
It should be called in the following format:
<pre>
{{ImageAnnotation
|AnnotationOf=
|AnnotationComment=
|LastModificationDate=
|LastModificationUser=
|AnnotationMetadata=
}}
</pre>
Edit the page to see the template text.
</noinclude><includeonly>{| class="wikitable"
! Annotation of
| [[Annotation of::{{{AnnotationOf|}}}]]
|-
! Annotation Comment
| [[AnnotationComment::{{{AnnotationComment|}}}]]
|-
! Last Modification Date
| [[LastModificationDate::{{{LastModificationDate|}}}]]
|-
! Last Modification User
| [[LastModificationUser::{{{LastModificationUser|}}}]]
|-
! Annotation Metadata
| [[AnnotationMetadata::{{{AnnotationMetadata|}}}]]
|}
[[Category:ImageAnnotation]]
</includeonly>
16dvimlz40mhg0p6vxztf6104dyqclu
Template:Image captions for cleanup
10
1231
2694
2693
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2693
wikitext
text/x-wiki
<!-- {{{|safesubst:}}} begin -->{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Image captions for cleanup}} begin-->{{Ambox
| name= Image captions for cleanup<!--
-->
| type= style<!--
-->
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly><!--
-->
| image= {{#ifeq:{{{shrink|}}}|file||[[Image:Camera-photo.svg|none|alt=Small camera icon|{{#ifeq:{{{link|}}}|y|link=https://en.wikipedia.org/wiki/File:Camera-photo.svg|{{#ifeq:{{{link|}}}|yes|link=https://en.wikipedia.org/wiki/File:Camera-photo.svg|link={{{link}}} }} }}|{{#ifeq:{{{shrink|}}}||40px|20px}}]]}}<!--
-->
| issue= {{#ifeq:{{{shrink|}}}|file|{{#if:{{{clarify|{{{c|{{{cl|}}} }}} }}}|'''This caption''' does not clearly '''[[Wikipedia:Manual of Style/Captions#Clear identification of the subject|identify the subject]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With unclear subject identification]]</includeonly>|{{#if:{{{succinct|{{{sc|{{{s|}}} }}} }}}|'''This caption''' is not '''[[Wikipedia:Manual of Style/Captions#Succinctness|succinct]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/Not succinct]]</includeonly>|{{#if:{{{relevance|{{{re|{{{r|}}} }}} }}}|'''This caption''' does not establish '''[[Wikipedia:Manual of Style/Captions#Establishing relevance to the article|the image's relevance]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With no established relevance]]</includeonly>|{{#if:{{{context|{{{ct|{{{con|}}} }}} }}}|'''This caption''' provides insufficient '''[[Wikipedia:Manual of Style/Captions#Providing context for the picture|context]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With inadequate context]]</includeonly>|{{#if:{{{allure|{{{al|{{{a|}}} }}} }}}|'''This caption''' does not '''[[Wikipedia:Manual of Style/Captions#Drawing the reader into the article|draw readers in]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With no allure]]</includeonly>|{{#if:{{{wording|{{{wo|{{{w|}}} }}} }}}|'''This caption''' uses '''[[Wikipedia:Manual of Style/Captions#Wording|trivial wording]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With trivial wording]]</includeonly>|{{#if:{{{format|{{{fm|{{{f|}}} }}} }}}|'''This caption''' is improperly '''[[Wikipedia:Manual of Style/Captions#Formatting and punctuation|formatted]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With improper formatting and punctuation]]</includeonly>|'''This caption''' requires '''[[Wikipedia:Manual of Style/Captions#Some criteria for a good caption|cleanup]]'''.<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>}} }} }} }} }} }} }}|{{#if:{{{onefile|{{{o|{{{of|}}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>'''The image caption|{{#if:{{{allfiles|{{{all|{{{af|}}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>'''The image captions|Some of '''the image captions}} }}''' in this {{#if:{{{subset|}}}|{{{subset}}}|{{#if:{{{sub|}}}|{{{sub}}}|{{#if:{{{su|}}}|{{{su}}}|{{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }} }} }} }} '''{{#if:{{{onefile|{{{o|{{{of|}}} }}} }}}|[[Wikipedia:Cleanup|requires cleanup]]|{{#if:{{{1|{{{example|{{{e|{{{es|{{{examples|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|[[Wikipedia:Cleanup|require cleanup]]|[[Wikipedia:Cleanup|may require cleanup]]<includeonly>[[Category:Image captions for cleanup/Without examples]]</includeonly>}} }}''' to comply with '''[[Wikipedia:Manual of Style/Captions#Some criteria for a good caption|Wikipedia guidelines]]'''{{#if:{{{clarify|{{{c|{{{cl|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Clear identification of the subject|clearly identifying the image's subject]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With unclear subject identification]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With unclear subject identification]]</includeonly>}}|{{#if:{{{succinct|{{{sc|{{{s|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Succinctness|succinctness]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/Not succinct]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/Not succinct]]</includeonly>}}|{{#if:{{{relevance|{{{re|{{{r|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Establishing relevance to the article|establishing an image's relevance to the article]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With no established relevance]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With no established relevance]]</includeonly>}}|{{#if:{{{context|{{{ct|{{{con|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Providing context for the picture|providing context for the picture]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With inadequate context]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With inadequate context]]</includeonly>}}|{{#if:{{{allure|{{{al|{{{a|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Drawing the reader into the article|drawing readers into the article]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With no allure]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With no allure]]</includeonly>}}|{{#if:{{{wording|{{{wo|{{{w|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Wording|trivial wording]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With trivial wording]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With trivial wording]]</includeonly>}}|{{#if:{{{format|{{{fm|{{{f|}}} }}} }}}| for '''[[Wikipedia:Manual of Style/Captions#Formatting and punctuation|formatting and punctuating image captions]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With improper formatting and punctuation]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With improper formatting and punctuation]]</includeonly>}}|.}} }} }} }} }} }} }} }}<!--
-->
| fix=<span style="font-size:85%;">{{#if:{{{example|}}}|<br />In particular, the caption for '''{{{example}}}''' should be cleaned-up right away.|{{#if:{{{1|}}}|<br />In particular, the caption for '''{{{1|<noinclude>{{{1}}}</noinclude>}}}''' should be cleaned-up right away.|{{#if:{{{e|}}}|<br />In particular, the caption for '''{{{e}}}''' should be cleaned-up right away.|{{#if:{{{examples|}}}|<br />In particular, the captions for '''{{{examples}}}''' should be cleaned-up right away.|{{#if:{{{es|}}}|<br />In particular, the captions for '''{{{es}}}''' should be cleaned-up right away.|<br />}} }} }} }} }} ''See '''Wikipedia's [[Wikipedia:Picture tutorial|picture tutorial]]''' and '''[[:Category:Wikipedia image help|image help pages]]''' – review '''[[Wikipedia:Image use policy|policy on image use]]''' {{#ifexist:{{TALKPAGENAME}}|and check the '''[[{{TALKPAGENAME}}|talk page]]''' – visit the '''[[Wikipedia:Graphics Lab|Graphics Lab]]''' and '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }}]''' if you can.|and visit the '''[[Wikipedia:Graphics Lab|Graphics Lab]]''' – And '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }}]''' if you can.}}''</span><!--
-->
| removalnotice = {{#ifeq:{{{shrink|}}}|file||yes}}
| talk = {{{talk|}}}
| date = {{{date|}}}
|small={{#if:{{{shrink|}}}|{{{small|left}}}|}}
|cat=Image captions for cleanup
|all=All image captions for cleanup
}}<!-- end {{Image captions for cleanup}} -->
<!-- {{File other}} begin -->{{file other
| <includeonly>[[Category:Image captions for cleanup|{{PAGENAME}}]]</includeonly>
}}<!-- end {{File other}}-->
}}<!-- end {{{|safesubst:}}} --><noinclude>
{{documentation}}<!--
Please add categories and interwikis to the /doc subpage, not here!
-->
</noinclude>
kevbnhvsxosbpp11y30fgaq3r0yi2x1
Template:Imbox
10
916
2064
2063
2020-09-29T19:17:22Z
Chrisb
1
1 revision imported
2063
wikitext
text/x-wiki
{{#invoke:Message box|imbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
90yqkd9klfkh2s7isb6vikemdvm668g
Template:Imbox/doc
10
1323
2878
2877
2020-09-29T19:18:24Z
Chrisb
1
1 revision imported
2877
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
{{High-use| 850,000+ }}
{{Lua|Module:Message box}}
{{Mbox templates (small)}}
This is the {{tl|Imbox}} (['''I''']mage ['''m''']essage ['''box''']) metatemplate.
It is used to build message box templates for file (image) pages, such as {{tl|cleanup-image}} etc. It offers several different colours, uses default images if no image parameter is given and it has some other features.
This template works almost exactly like {{tl|Ambox}} and uses the same parameters.
<!--
===We are deploying!===
After long discussion on the [[Template talk:Imbox|talk page]] of this template and at other places we are finally deploying this template. Feel free to convert any message boxes used on file pages to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help.
When this template is used to build image message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here.
-->
===Usage===
Simple usage example:
<pre>
{{Imbox |text=Some text.}}
</pre>
{{Imbox |text=Some text.}}
Complex example:
<pre>
{{Imbox
| type = style
| style = width:400px;
| image = [[File:Emblem-question-yellow.svg|40px]]
| textstyle = font-style:italic; font-weight:bold; color:red;
| text = The message body text.
}}
</pre>
{{Imbox
| type = style
| style = width:400px;
| image = [[File:Emblem-question-yellow.svg|40px]]
| textstyle = font-style:italic; font-weight:bold; color:red;
| text = The message body text.
}}
===Image message box types===
The following examples use different '''type''' parameters but use no image parameters thus they use the default images for each type.
{{Imbox
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion templates such as {{tl|isd}}.
}}
{{Imbox
| type = delete
| text = type=<u>delete</u> – Deletion templates such as {{tl|ifd}}.
}}
{{Imbox
| type = content
| text = type=<u>content</u> – Major warnings and problems, such as {{tl|non-free reduce}}.
}}
{{Imbox
| type = style
| text = type=<u>style</u> – Minor warnings and problems, such as {{tl|cleanup-image}}.
}}
{{Imbox
| type = notice
| text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary.
}}
{{Imbox
| type = move
| text = type=<u>move</u> – Move and rename messages and proposals, such as {{tl|Requested move}}.
}}
{{Imbox
| type = protection
| text = type=<u>protection</u> – Protection templates such as {{tl|pp-protected}} when shown on an image page.
}}
{{Imbox
| type = license
| text = type=<u>license</u> – License templates such as {{tl|GFDL}}.
}}
{{Imbox
| type = featured
| text = type=<u>featured</u> – Featured image templates such as {{tl|FeaturedPicture}}.
}}
===Other images===
The default images shown above are mostly for convenience. In many cases it is more appropriate to use more specific images. These examples use the '''image''' parameter to specify an image other than the default images.
{{Imbox
| type = style
| image = [[File:Gnome-dev-camera.svg|42px]]
| text = type = style<br/>image = <nowiki>[[File:Gnome-dev-camera.svg|42px]]</nowiki><br/>This image is used for {{tl|cleanup-image}}.
}}
{{Imbox
| type = move
| image = [[File:To Commons.svg|52px]]
| text = type = move<br/>image = <nowiki>[[File:To Commons.svg|52px]]</nowiki><br/>This image is used for {{tl|copy to Wikimedia Commons}}.
}}
{{Imbox
| type = license
| image = [[File:Heckert GNU white.svg|48px]]
| text = type = license<br/>image = <nowiki>[[File:Heckert GNU white.svg|48px]]</nowiki><br/>This image is used for the GFDL license templates such as {{tl|GFDL}}.
}}
===Special===
Some other parameter combinations.
{{Imbox
| text = No type and no image given ('''default''')
}}
{{Imbox
| image = none
| text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area.
}}
{{Imbox
| type = license
| image = [[File:Imbox license.svg|40px]]<br/>[[File:Ambox warning yellow.svg|40px]]
| imageright = [[File:Shuttle.svg|30px]]
| text = type = license<br/>image = <nowiki>[[File:Imbox license.svg|40px]]<br/>[[File:Ambox warning yellow.svg|40px]]</nowiki><br/>imageright = <nowiki>[[File:Shuttle.svg|30px]]</nowiki>
}}
{{Imbox
| type = license
| image = [[File:Imbox license.svg|40px]]<br/>[[File:Ambox warning yellow.svg|40px]]
| imageright = [[File:Shuttle.svg|30px]]
| text = '''This file is in the [[public domain]] because it was created by [[NASA]].'''<br/>Note that use of NASA logos, insignia and emblems are restricted per US law.
}}
{{Imbox
| type = license
| image = [[File:Imbox license.svg|40px]]
| text =
type = license<br/>image = <nowiki>[[File:Imbox license.svg|40px]]</nowiki><br/>below = <nowiki>{{Imbox |type=content |text='''This license tag is deprecated!'''}}</nowiki>
| below = {{Imbox |type=content |text='''This license tag is deprecated!'''}}
}}
===Parameters===
List of all parameters:
<pre>
{{Imbox
| name = name of the template
| type = speedy / delete / content / style / notice /
move / protection / license / featured
| image = none / [[File:Some image.svg|40px]]
| imageright = [[File:Some image.svg|40px]]
| style = CSS value
| textstyle = CSS value
| text = The message body text.
| below = More text or another imbox.
| plainlinks = no
}}
</pre>
'''name'''
:(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts.
'''type'''
:If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a blue border.
'''image'''
:'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>image = [[File:Gnome-dev-camera.svg|40px]]</nowiki></code>
:'''none''' = Means that no image is used.
'''imageright'''
:'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
'''style'''
:An optional [[Cascading Style Sheets|CSS]] value used by the entire message box table. Without quotation marks <code>" "</code>. For example:
::<code>style = margin-bottom: 0.5em;</code>
'''textstyle'''
:An optional [[Cascading Style Sheets|CSS]] value used by the text cell. For example:
::<code>textstyle = text-align: center;</code>
'''text'''
:The message body text.
'''below'''
:A full width area below the images and text area. Can take a text or any kind of object, for instance another imbox:
::<code><nowiki>below = {{Imbox |type=content |text=This license tag is deprecated.}}</nowiki></code>
'''plainlinks'''
:Defaults to yes. If external link arrows - [[File:External.svg|10px]] - are desired, specify:
::<code><nowiki>plainlinks = no</nowiki></code>
===Technical details===
Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was created long before that, and that is why it is named "imbox" as in "image message box".
If you need to use special characters in the text parameter then you need to escape them like this:
<pre>
{{Imbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</pre>
{{Imbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
This template uses the imbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable.
Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and special characters in parameters.
The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent png images. For those older browsers these png images have been modified so that the color of their default backgrounds match the background color of the template. The default background that MediaWiki renders for svg images is always white. This creates a white box around the images when displayed in older browsers.
For more technical details see the [[Template talk:Imbox|talk page]]. Since this template works almost exactly like the other mboxes their talk pages and related pages might also contain more details, see the "See also" section below.
===See also===
{{Mbox templates see also}}
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE, PLEASE -->
[[Category:Mbox and messagebox templates]]
[[Category:File namespace templates|*]]
}}</includeonly>
95avn3bln0faup74erj79tg40mdnxom
Template:Improve categories
10
979
2190
2189
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2189
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Improve categories}} begin-->{{Ambox
| name = Improve categories
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| class = ambox-cat_improve
| image = [[File:Wiki letter w.svg|50x40px]]
| issue = This article '''needs additional or more specific [[Wikipedia:Categorization|categories]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help out] by [[Wikipedia:FAQ/Categorization#How do I add an article to a category?|adding categories]] to it so that it can be listed with similar articles.
| date = {{{date|}}}
| cat = Articles needing additional categories
}}<!--{{Improve categories}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
pxvvtec1128hdc3ces9c9st9sditnkk
Template:In-universe
10
982
2196
2195
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2195
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{In-universe}} begin-->{{Ambox
| name = In-universe
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| class = ambox-in-universe
| issue = This {{#if:{{{subject<includeonly>|</includeonly>}}}|{{{subject}}}-related|}} {{{1|article}}} '''describes {{{described_object|a work or element of fiction}}} in a primarily [[Wikipedia:Manual of Style/Writing about fiction#The problem with in-universe perspective|in-universe]] style'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite it] to [[Wikipedia:Manual of Style/Writing about fiction|explain the fiction more clearly and provide non-fictional perspective]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles that need to differentiate between fact and fiction
| all = All articles that need to differentiate between fact and fiction
| all2 = {{#if:{{{category|}}}|{{{category}}} articles that need to differentiate between fact and fiction}}
}}<!--{{In-universe}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, please, not here! -->
</noinclude>
bkbhwx4tvio4n0wsi3miav0tzo3mqrm
Template:In popular culture
10
980
2192
2191
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2191
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = In popular culture
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| sect = {{{1|}}}
| issue = '''appears to contain [[Wikipedia:What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|trivial, minor, or unrelated]] references to [[Wikipedia:Manual of Style/Trivia sections#"In popular culture" and "Cultural references" material|popular culture]]'''.
| talk = {{{talk|}}}
| fix = Please reorganize this content to explain the subject's impact on popular culture, [[Wikipedia:Citing sources|providing citations]] to [[Wikipedia:No original research#Primary, secondary and tertiary sources|reliable, secondary sources]], rather than simply listing appearances. Unsourced material may be challenged and removed.
| date = {{{date|}}}
| cat = Articles with trivia sections
}} }}<noinclude>{{documentation}}</noinclude>
3vucubkw0bels0xt0b85vciz7296m03
Template:In translation
10
981
2194
2193
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2193
wikitext
text/x-wiki
<!--{{Intranslation}} begin-->{{Ambox
| name = In translation
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = notice
| image = [[File:Translation arrow.svg|60px|translation icon]]
| text = '''This article is actively undergoing [[Wikipedia:Edit lock|translation from another Wikipedia]] {{{for|for}}} {{{2|}}}{{{1|a while}}}.'''<br />
<small>As a courtesy, please do not edit this article while this message is displayed. The person who added this notice will be listed in the article's [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=history}} edit history] should you wish to contact them. This page was last edited at {{#time:H:i, j F Y|{{REVISIONTIMESTAMP}}}} (UTC) ({{time ago|{{REVISIONTIMESTAMP}}}})</small>
| all = Articles in translation
}}<!--{{Intranslation}} end--><noinclude>{{Documentation}}</noinclude>
eo00v1i6hrc2jrhrlqt37569fbv4hcv
Template:Inadequate lead
10
948
2128
2127
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2127
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Inadequate lead}} begin-->{{Ambox
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| name = Inadequate lead
| type = style
| issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] may not adequately [[Wikipedia:summary style|summarize]] its contents'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}}
| fix = To comply with Wikipedia's [[Wikipedia:Manual of Style/Lead section#Introductory text|lead section guidelines]], please consider modifying the lead to [[Wikipedia:Manual of Style/Lead section#Provide an accessible overview|provide an accessible overview]] of the article's key points in such a way that it can stand on its own as a concise version of the article.
| cat = Wikipedia introduction cleanup
| all = All pages needing cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| talk = {{{talk|}}}
}}<!--{{Inadequate lead}} begin-->
}}<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}
</noinclude>
a1fj60is4uue558hkv6qi7enz17d28d
Template:Inappropriate person
10
983
2198
2197
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2197
wikitext
text/x-wiki
<noinclude>{{Distinguish|Template:Infobox person}}
</noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Inappropriate person
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-inappropriate-person
| sect = {{{1|}}}
| issue = '''uses [[grammatical person|{{#switch: {{lc: {{{2|}}}}}
| i
| first-person ("i") = first-person ("I")
| we
| first-person ("we") = first-person ("we")
| first-person = first-person ("I" or "we")
| you
| second-person
| second-person ("you") = second-person ("you")
| = first-person ("I"; "we") or second-person ("you")
| {{{2}}}
}}]] {{{3|inappropriately}}}'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewrite it] to use a more [[WP:TONE|formal, encyclopedic tone]].
| removalnotice = yes
| cat = Wikipedia articles needing copy edit
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
lc3st1yzqibrm5iyygaulr7d4ym3ena
Template:Inappropriate title
10
984
2200
2199
2020-09-29T19:17:31Z
Chrisb
1
1 revision imported
2199
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Inappropriate title}} begin-->{{Ambox
| name = Inappropriate title
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| text = The title of this article '''seems not to accurately describe the article's subject matter'''. {{#if:{{{reason|}}}|{{{reason|}}}}}
| fix = Please help to decide an appropriate title on the {{#if:{{{section|}}}|[[{{TALKPAGENAME}}#{{{section}}}|talk page]]|[[{{TALKPAGENAME}}|talk page]]}}.
| date = {{{date|}}}
| removalnotice = yes
| all = Wikipedia title cleanup
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Inappropriate title}} end-->
}}<includeonly>{{main other | [[Category:Wikipedia title cleanup (sorted by template)|I{{PAGENAME}}]] | }}</includeonly><noinclude>
{{documentation}}
</noinclude>
o1k1vpos6eq463k0tr0wm63mhcdamko
Template:Included
10
1528
4704
4703
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4703
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DDFBFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="included table-included"|{{{1|Included}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
320keqw0plxusilaewuywchiyngldxy
Template:Incoming links
10
985
2202
2201
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2201
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Incoming links
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-incoming-links
| image = [[File:Disambig.svg|50x40px|link=]]
| sect = [[Help:Disambiguation|disambiguation page]]
| issue = '''is currently [[Wikipedia:Disambiguation pages with links|linked]] from [{{fullurl:Special:Whatlinkshere/{{FULLPAGENAME}}|namespace=0}} a large number] of articles'''.
| fix = Please [[Wikipedia:Piped link|help direct]] these ambiguous links to articles dealing with the specific meaning intended. The [//dplbot.toolforge.org/dab_fix_list.php?title={{FULLPAGENAMEE}} Dab Fix List & Dab Solver] can be used to fix these links.
| removalnotice = yes
| date = {{{date|}}}
| cat = Disambiguation pages with many incoming links
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dz5i794fndt5ionu9l0t6cw4ji7d8lw
Template:Incomplete disambiguation
10
946
2124
2123
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2123
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Incomplete disambiguation}} begin-->{{Ambox
| name = Incomplete disambiguation
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[File:Edit-clear.svg|40x40px|link=|alt=]]
| imageright = [[File:Merge-arrow.svg|alt=|link=]]
| issue = This page '''appears to be an [[Wikipedia:Disambiguation#Incomplete disambiguation|incomplete disambiguation]].'''
| fix = This page may need to be merged into the complete disambiguation page for this subject. Alternatively, this page may be kept as a separate page if it is converted into a list, index, or other non-ambiguous topic.
| date = {{{date|}}}
| cat = Incomplete disambiguation
}}<!--{{Incomplete disambiguation}} end-->
}}
<noinclude>
{{Documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
d9ccwdxs1r1yw1qqjh6aaaz1z9hf6l8
Template:Incomprehensible
10
1203
2638
2637
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2637
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B={{Ambox
| name = Incomprehensible
| small = {{{small|}}}
| type = content
| image = [[File:Ambox question.svg|link=]]
| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section|{{{1|}}}}}}}}}}}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}}}}
| issue = '''may be incomprehensible or very hard to understand'''. {{#ifeq:{{yesno|def=no|1={{{machine|no}}}}}|yes|Sometimes this can be due to [[WP:MACHINETRANSLATION|machine translation]].}} {{#if:{{{reason|}}}|In particular, {{{reason}}}.}}
| fix = Please help by rewording it if the intended meaning can be determined. The [[{{TALKPAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]] may have details.
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles that are incomprehensible
| all = All Wikipedia articles that are incomprehensible
}}
}}<noinclude>
{{Documentation}}
</noinclude>
409ooo0n5yhv2hw2o9ganwjc0cca4jp
Template:Incorrect
10
1529
4706
4705
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4705
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #F90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="incorrect"|{{{1|Incorrect}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
1dtocjms1sk850kgq52jufjfaq8p3fx
Template:Indic script needed
10
1171
2574
2573
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2573
wikitext
text/x-wiki
<noinclude><!--{{Indic script needed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other
| demospace={{{demospace|}}}
| <!-- Don't show on talk pages -->
| {{Ambox
| name = Indic script needed
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image= [[File:JanaSanskritSans ddhrya.svg|40px]]
| text = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] [[Brahmic family|Indic script]] to this article, where needed.
}}
}}{{main other
| demospace={{{demospace|}}}
| <!-- Don't show in main (article) space -->
| {{tmbox
| type = style
| image = [[File:JanaSanskritSans ddhrya.svg|40px]]
| text = This article is about a person, place, or concept whose name is originally rendered in one of the multiple '''[[Brahmic family|Indic script]]s'''; however the article does not have that version of its name in the article's lead paragraph. Anyone who is knowledgeable enough with the original language is invited to assist in adding the Indic script.<br />
<small>For more information, see [[Wikipedia:Naming conventions (Indic)|Wikipedia:Manual of Style (Indic)]].</small>
}}
}}<includeonly><!--[[Category:Articles needing Indic script or text|{{PAGENAME}}]]--></includeonly><!--{{Indic script needed}} end--><noinclude>
{{Documentation}}
</noinclude>
gosnwxzcg6bdg6mbfkzg2sad2mjwj78
Template:Indigenous
10
1272
2776
2775
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2775
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!-- {{Indigenous}} begin -->{{ambox
| name = Indigenous
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-indigenous
| image = [[File:ambox globe content.svg|50x40px|alt=Globe icon.|link=]]
| issue = The examples and perspective in this {{{1|article}}} or section '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|deal primarily with {{#if:{{{4|}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}}, {{{3name|{{Indigenous/name|{{Indigenous/name|{{{3}}}}}|displayname}}}}}, and {{{4name|{{Indigenous/name|{{Indigenous/name|{{{4}}}}}|displayname}}}}}|{{#if:{{{3|}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}} and {{{3name|{{Indigenous/name|{{Indigenous/name|{{{3}}}}}|displayname}}}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}}}}}} and do|may}} not represent an [[Wikipedia:WikiProject Countering systemic bias|indigenous view]] of the subject'''.
| fix = You may [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{{1|}}}|section|section|article}}], discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}}
|[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]], or [[Wikipedia:Article wizard|create a new article]], as appropriate
|[[{{TALKPAGENAME}}|talk page]], or [[Wikipedia:Article wizard|create a new article]], as appropriate
}}.
| removalnotice = yes
| date = {{{date|}}}
| small = {{{small|}}}
| cat = Articles with limited geographic scope
| all = {{#if:{{{2|}}}|{{#ifexist:Category:{{Indigenous/name|{{{2}}}}}-centric|{{Indigenous/name|{{{2}}}}}-centric|Pages in non-existent country centric categories}}}}
| all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{Indigenous/name|{{{3}}}}}-centric|{{Indigenous/name|{{{3}}}}}-centric|Pages in non-existent country centric categories}}}}
| all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{Indigenous/name|{{{4}}}}}-centric|{{Indigenous/name|{{{4}}}}}-centric|Pages in non-existent country centric categories}}}}
}}<!-- {{Indigenous}} end -->
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
3kpptxu3x78axp6ju6esxbi05lw3jkw
Template:Infobox
10
1297
2826
2825
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2825
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
f4hgwrnr11ahhwyo266vcd10dpi92pe
Template:Infobox information appliance
10
1632
4912
4911
2020-10-11T05:50:21Z
Chrisb
1
1 revision imported
4911
wikitext
text/x-wiki
{{Infobox
| title = {{{name|<includeonly>{{{Name|{{{title|{{PAGENAMEBASE}} }}} }}}</includeonly> }}}
| bodyclass = hproduct vevent
| titleclass = fn summary
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|}}}|upright={{{logo_upright|1}}}|alt={{{logo_alt|}}}}}
| caption = {{{logo caption|}}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{Image|{{{photo|{{{Photo|}}} }}} }}} }}}|size={{{image_size|{{{ImageWidth|}}}}}}|sizedefault=300px|upright={{{image_upright|1}}}|alt={{{alt|}}}}}
| caption2 = {{{caption|}}}
| label1 = {{nowrap|Also known as}}
| data1 = {{{aka|}}}
| label2 = Developer
| data2 = {{{developer|{{{Developer|}}}}}}
| label3 = Manufacturer
| data3 = {{{manufacturer|}}}
| label4 = Product family
| data4 = {{{family|}}}
| label5 = Type
| data5 = {{{type|{{{Type|}}} }}}
| label6 = Generation
| data6 = {{{generation|}}}
| label7 = Release date
| data7 = {{{release date|{{{releasedate|{{{first_release_date|{{{Released|{{{Introduced|}}} }}} }}} }}} }}}
| label8 = Retail availability
| data8 = {{{retail availability|}}}
| label9 = Lifespan
| data9 = {{{lifespan|}}}
| label10 = Introductory price
| data10 = {{{price|{{{baseprice|{{{Baseprice|{{{MSRP|}}} }}} }}} }}}
| label11 = Discontinued
| data11 = {{{discontinuation_date|{{{discontinued|{{{Discontinued|}}} }}} }}}
| label12 = Units sold
| data12 = {{{units sold|{{{unitssold|}}}}}}
| label13 = Units shipped
| data13 = {{{units shipped|{{{unitsshipped|}}}}}}
| label14 = Media
| data14 = {{{media|{{{Media|}}} }}}
| label15 = [[Operating system]]
| data15 = {{{operatingsystem|{{{os|{{{OS|}}} }}} }}}
| label16 = [[System on a chip|System-on-chip]] used
| data16 = {{{soc|{{{SOC|{{{system-on-chip|{{{System-on-chip|}}} }}} }}} }}}
| label17 = [[Central processing unit|CPU]]
| data17 = {{{cpu|{{{CPU|{{{processor|{{{Processor|}}} }}} }}} }}} {{#if:{{{CPUspeed|}}}|@ {{{CPUspeed}}} }}
| label18 = Memory
| data18 = {{{memory|{{{Memory|{{{RAM|}}} }}} }}} {{#if:{{{RAMtype|}}}|({{{RAMtype}}})}}
| label19 = Storage
| data19 = {{{storage|}}}
| label20 = [[Removable media|Removable storage]]
| data20 = {{{memory card|}}}
| label21 = Display
| data21 = {{{display|{{{Display|}}} }}}
| label22 = Graphics
| data22 = {{{graphics|{{{Graphics|{{{GPU|}}} }}} }}}
| label23 = Sound
| data23 = {{{sound|{{{Sound|}}} }}}
| label24 = Input
| data24 = {{{input|{{{Input|}}} }}}
| label25 = Controller input
| data25 = {{{controllers|}}}
| label26 = Camera
| data26 = {{{camera|}}}
| label27 = Touchpad
| data27 = {{{touchpad|}}}
| label28 = Connectivity
| data28 = {{{connectivity|{{{Connectivity|}}} }}}
| label29 = Power
| data29 = {{{power|{{{Power|}}}}}}
| label30 = [[Computing platform|Platform]]
| data30 = {{{platform|}}}
| label31 = Current firmware
| data31 = {{{currentfw|}}}
| label32 = Online services
| data32 = {{{online service|{{{onlineservice|{{{service|}}} }}} }}}
| label33 = Dimensions
| data33 = {{{dimensions|{{{Casing|}}} }}}
| label34 = Mass
| data34 = {{{weight|}}}
| label35 = [[List of best-selling video games|Best-selling game]]
| data35 = {{{top game|{{{topgame|}}}}}}
| label36 = [[Backward compatibility|Backward<br/>compatibility]]
| data36 = {{{compatibility|}}}
| label37 = Predecessor
| data37 = {{{predecessor|}}}
| label38 = Successor
| data38 = {{{successor|}}}
| label39 = Related articles
| data39 = {{{related|}}}
| label40 = Website
| data40 = {{{website|{{{Website|}}} }}}
}}{{#invoke:Check for unknown parameters|check|ignoreblank=y
|unknown={{main other|[[Category:Pages using Infobox information appliance with unknown parameters|_VALUE_{{PAGENAME}}]]}}
|preview=Page using [[Template:Infobox information appliance]] with unknown parameter "_VALUE_"
| aka | alt | Baseprice | baseprice | camera | caption | Casing | compatibility | Connectivity | connectivity | controllers | CPU | cpu | CPUspeed | currentfw | Developer | developer | dimensions | discontinuation_date | Discontinued | discontinued | Display | display | family | first_release_date | generation | GPU | Graphics | graphics | Image | image | image_size | image_upright | ImageWidth | Input | input | Introduced | retail availability | lifespan | logo | logo caption | logo_alt | logo_size | logo_upright | manufacturer | Media | media | Memory | memory | memory card | MSRP | Name | name | online service | onlineservice | operatingsystem | OS | os | Photo | photo | platform | Power | power | predecessor | price | Processor | processor | RAM | RAMtype | related | release date | Released | releasedate | service | soc | SOC | system-on-chip | System-on-chip | Sound | sound | storage | successor | title | top game | topgame | touchpad | Type | type | units shipped | units sold | unitsshipped | unitssold | Website | website | weight
}}<noinclude>
{{documentation}}
</noinclude>
ooj530hyh1d11r3i61c8y999pm66qht
Template:Infobox information appliance/doc
10
1662
4972
4971
2020-10-11T05:50:43Z
Chrisb
1
1 revision imported
4971
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
{{Parameter names example | name | title | aka | logo | image | caption | developer | manufacturer | family | type | generation | release date | retail availability | lifespan | price | discontinued | units sold | units shipped | media | os | power | soc | cpu | memory | storage | memory card | display | graphics | sound | input | controllers | camera | touchpad | connectivity | currentfw | platform | service | dimensions | weight | topgame | compatibility | predecessor | successor | related | website }}
<pre style="overflow: auto;">
{{Infobox information appliance
| name =
| title =
| aka =
| logo =
| image =
| caption =
| developer =
| manufacturer =
| family =
| type =
| generation =
| release date = {{Start date|YYYY|MM|DD}}
| retail availability =
| lifespan =
| price =
| discontinued =
| units sold =
| units shipped =
| media =
| os =
| power =
| soc =
| cpu =
| memory =
| storage =
| memory card =
| display =
| graphics =
| sound =
| input =
| controllers =
| camera =
| touchpad =
| connectivity =
| currentfw =
| platform =
| service =
| dimensions =
| weight =
| topgame =
| compatibility=
| predecessor =
| successor =
| related =
| website = {{URL|example.org}}
}}
</pre>
==Parameters==
{{TemplateData header}}
<templatedata>
{
"params": {
"name": {
"label": "Name",
"type": "string",
"required": false,
"description": "Name of the appliance. Default it the article name. However it is a required parameter as it does not accept null.",
"default": "PAGENAME",
"aliases": ["Name", "Title"]
},
"logo": {
"label": "Logo",
"type": "string",
"required": false,
"description": "File name of the logo to be appeared at the top of the infobox"
},
"logo_size": {
"label": "Logo size",
"type": "string",
"required": false,
"description": "Size of the logo. Default is 250px. Must not normally be changed.",
"default": "250px"
},
"logo_upright": {
"label": "Logo upright",
"type": "string",
"required": false,
"description": "Size of the logo, scaling per user preferences. Default is 1. Must not normally be changed.",
"default": "1"
},
"logo_alt": {
"label": "Logo alternative text",
"type": "string",
"required": false,
"description": "Alternative text for the logo, used when the web browser cannot display the image or when a visually-impaired person uses a screen reader."
},
"logo caption": {
"label": "Logo caption",
"type": "string",
"required": false,
"description": "Caption for the logo. Must only be used to provide anything far more important than 'This is the logo of X'. e.g. used for inserting {{ffdc}} or {{deletable image-caption}}."
},
"image": {
"label": "Image",
"type": "string",
"required": false,
"description": "File name of the image of the appliance to be appeared at the top of the infobox.",
"aliases": ["Image", "photo", "Photo"]
},
"image_size": {
"label": "Image size",
"type": "string",
"required": false,
"description": "Image size. Defaults to 300px. The best practice is to ensure the image is displayed at the default resolution. Hence, use of this parameter is discouraged.",
"default": "300px",
"aliases": ["ImageWidth"]
},
"image_upright": {
"label": "Image upright",
"type": "string",
"required": false,
"description": "Size of the logo, scaling per user preferences. Default is 1.",
"default": "1"
},
"alt": {
"label": "Image alternative text",
"type": "string",
"required": false,
"description": "Alternative text for the screenshot (used by the blind and when web browsers cannot or do not load the image)"
},
"caption": {
"label": "Image caption",
"type": "string",
"required": false,
"description": "Caption for the image of the appliance. "
},
"aka": {
"label": "Also known as? (\"AKA\")",
"type": "string",
"required": false,
"description": "Device nickname"
},
"developer": {
"label": "Developer",
"type": "string",
"required": false,
"description": "Name of the developer, if applicable",
"aliases": ["Developer"]
},
"manufacturer": {
"label": "Manufacturer",
"type": "string",
"required": false,
"description": "Name of the manufacturer, if applicable"
},
"family": {
"label": "Family",
"type": "string",
"required": false,
"description": "Product family"
},
"type": {
"label": "Type",
"type": "string",
"required": false,
"description": "Type of the device",
"aliases": ["Type"]
},
"generation": {
"label": "Generation",
"type": "string",
"required": false,
"description": "Name of the device generation, if it is part of a line of products developed iteratively"
},
"release date": {
"label": "Release date",
"type": "string",
"required": false,
"description": "Date introduced",
"aliases": ["releasedate", "first_release_date", "Released", "Introduced"]
},
"retail availability": {
"label": "Retail availability",
"type": "string",
"required": false,
"description": "Average expected retail availability (date first available in retail to date last available in retail (i.e. the date no more units are being sold, which may be years after production stops))"
},
"lifespan": {
"label": "Lifespan",
"type": "string",
"required": false,
"description": "Average expected lifespan (release date to discontinuation date (i.e. end of production))"
},
"baseprice": {
"label": "Base price",
"type": "string",
"required": false,
"description": "Base price or MSRP (manufacturer suggested retail price) of the appliance at its initial release. Per [[WP:NOTCATALOGUE]], \"An article should not include product pricing information unless there is an independent source and a justified reason for the mention. Encyclopedic significance may be indicated if mainstream media sources (not just product reviews) provide commentary on these details instead of just passing mention.",
"aliases": ["baseprice", "price", "MSRP"]
},
"discontinued": {
"label": "Discontinuation date",
"type": "string",
"required": false,
"description": "Date of when the appliance was discontinued / pulled from sale.",
"aliases": ["discontinued", "discontinuation_date"]
},
"units sold": {
"label": "Units sold",
"type": "string",
"required": false,
"description": "Number of units sold, including pre-orders",
"aliases": ["unitssold"]
},
"units shipped": {
"label": "Units shipped",
"type": "string",
"required": false,
"description": "Number of units shipped",
"aliases": ["unitsshipped"]
},
"media": {
"label": "Media",
"type": "string",
"required": false,
"description": "Supported media. Where applicable, consider using \"removable storage\" parameter instead.",
"aliases": ["Media"]
},
"os": {
"label": "Operating system",
"type": "string",
"required": false,
"description": "Operating system bundled with the product",
"aliases": ["OS", "operatingsystem"]
},
"power": {
"label": "Power",
"type": "string",
"required": false,
"description": "Power consumption specifications",
"aliases": ["Power"]
},
"soc": {
"label": "System-on-chip used",
"type": "string",
"required": false,
"description": "System-on-chip used by the appliance, if applicable.",
"aliases": ["SOC", "system-on-chip", "System-on-chip"]
},
"cpu": {
"label": "CPU make and model",
"type": "string",
"required": false,
"description": "Central processing unit's brand name and model",
"aliases": ["CPU", "Processor", "processor"]
},
"CPUspeed": {
"label": "CPU clock speed",
"type": "string",
"required": false,
"description": "Central processing unit's clock speed, expressed in hertz"
},
"memory": {
"label": "Amount of memory installed",
"type": "string",
"required": false,
"description": "Amount of volatile random-access memory installed on the appliance",
"aliases": ["Memory", "RAM"]
},
"RAMtype": {
"label": "Memory type",
"type": "string",
"required": false,
"description": "Make and model of the volatile random-access memory modules used"
},
"storage": {
"label": "Storage device",
"type": "string",
"required": false,
"description": "Type(s) and specifications of non-volatile internal storage device(s)"
},
"memory card": {
"label": "Removable storage",
"type": "string",
"required": false,
"description": "Type(s) and specifications of non-volatile removable storage device(s) supported."
},
"display": {
"label": "Display",
"type": "string",
"required": false,
"description": "Specifications of included or supported display devices; e.g. the resolutions that can be outputted.",
"aliases": ["Display"]
},
"graphics": {
"label": "Graphics",
"type": "string",
"required": false,
"description": "Specifications of the included graphics component, which is responsible for outputting content to display devices",
"aliases": ["Graphics", "GPU"]
},
"sound": {
"label": "Sound",
"type": "string",
"required": false,
"description": "Specifications of the audio subsystem.",
"aliases": ["Sound"]
},
"input": {
"label": "Input",
"type": "string",
"required": false,
"description": "Input devices included with / supported by the appliance. Specialized versions of this parameter include Controllers, Camera, and Touchpad.",
"aliases": ["Input"]
},
"controllers": {
"label": "Controllers",
"type": "string",
"required": false,
"description": "Controller(s) included with / supported by the appliance."
},
"camera": {
"label": "Camera",
"type": "string",
"required": false,
"description": "Specifications of the camera included with / supported by the appliance."
},
"touchpad": {
"label": "Touchpad",
"type": "string",
"required": false,
"description": "Specifications of the touchpad included with the appliance; e.g. make, model, the number of buttons, and whether or not it supports multitouch input."
},
"connectivity": {
"label": "Connectivity",
"type": "string",
"required": false,
"description": "Specifications of any components that support data transfer in and out of the device, including networking subsystems.",
"aliases": ["Connectivity"]
},
"currentfw": {
"label": "Current firmware",
"type": "string",
"required": false,
"description": "The current firmware version of the given appliance."
},
"platform": {
"label": "Underlying platform",
"type": "string",
"required": false,
"description": "Name of any underlying platforms."
},
"online service": {
"label": "Online service",
"type": "string",
"required": false,
"description": "Name of any associated online service(s).",
"aliases": ["onlineservice", "service"]
},
"dimensions": {
"label": "Dimensions",
"type": "string",
"required": false,
"description": "The dimensions (width, height, depth) of the appliance. If multiple / newer models of the base appliance are available, please include the dimensions for each.",
"aliases": ["Casing"]
},
"weight": {
"label": "Mass",
"type": "string",
"required": false,
"description": "Mass"
},
"top game": {
"label": "Best-selling video game",
"type": "string",
"required": false,
"description": "Name of the best selling video game that works on the appliance, if appliable. Please include source and sale stats.",
"aliases": ["topgame"]
},
"compatibility": {
"label": "Compatibility",
"type": "string",
"required": false,
"description": "Details of backward compatibility with the appliance's predecessor(s)."
},
"predecessor": {
"label": "Predecessor",
"type": "string",
"required": false,
"description": "Name of the appliance's predecessor, if applicable."
},
"successor": {
"label": "Successor",
"type": "string",
"required": false,
"description": "Name of the appliance's successor, if applicable."
},
"related": {
"label": "Related",
"type": "string",
"required": false,
"description": "Names of any sibling devices to the appliance."
},
"website": {
"label": "Website",
"type": "string",
"required": false,
"description": "URL of the official website, in a printer-friendly form. (consider using the {{URL}} template for cleaner URL output)",
"aliases": ["Website"]
}
},
"format": "block"
}
</templatedata>
== Important notes ==
Under [[WP:NOPRICES]], "product prices should not be quoted in an article unless they can be sourced ''and'' there is a justified reason for their mention". Use of the "price" field should therefore be the exception rather than the norm.
In addition to the tracking category below, using this template without including at least one of parameters besides "title", "image", and "caption" will add the page to [[:Category:Articles which use infobox templates with no data rows]].
== Microformats ==
{{UF-hcal}}
{{UF-hprod}}
== Tracking category ==
* {{clc|Pages using Infobox information appliance with unknown parameters}}
== See also ==
* {{tl|Infobox robot}}
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Technology and applied science infobox templates|Information appliance]]
[[Category:Computer hardware infobox templates| ]]
[[Category:Templates that add a tracking category]]
[[Category:Information appliances|τ]]
}}</includeonly>
lx3epzb8odd533u48wb8wucwrd7djvy
Template:InterTransWiki
10
986
2204
2203
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2203
wikitext
text/x-wiki
<!--{{InterTransWiki}} begin-->{{Ambox
|name=InterTransWiki
|subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|image=[[Image:Edit-copy purple.svg|40px]]
|type=move
|text='''This page is a candidate to be [[meta:Help:Transwiki|copied]] to the [[{{{1}}} Wikipedia]]'''. <br />
<small>Before you move this content to the {{{1}}} Wikipedia, verify that it conforms to the {{{1}}} Wikipedia's policies of acceptable content. </small>
}}<!--{{InterTransWiki}} end--><noinclude>
{{Documentation}}
</noinclude>
6h4zzdq62uwhriuviea8x4s38kgfwd9
Template:Interlanguage link info
10
1288
2808
2807
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2807
wikitext
text/x-wiki
{{Ambox|
| name = Interlanguage link info
| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}
| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}
| text = contains numerous links to pages on [[List of Wikipedias#Detailed list|foreign language Wikipedias]]. They are shown as {{color|red|red links}} with the language codes in [{{color|blue|<small>small blue letters</small>}}] in brackets. Click on the language code to see the page in that language.
}}<noinclude>
{{Documentation}}
</noinclude>
rh5fth4gehgdopbmbzcy20ps95mytnn
Template:Ivory messagebox
10
917
2066
2065
2020-09-29T19:17:22Z
Chrisb
1
1 revision imported
2065
wikitext
text/x-wiki
<table class="messagebox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="border: 1px solid {{{border|#AAA}}}; background: {{{bg|ivory}}}; padding: 0.5em; width: 100%;{{{extracss|}}}">
<tr>{{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}
|<td style="vertical-align:{{{valign|middle}}}; padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}};">{{{{{|safesubst:}}}#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|link={{{image link|}}}|alt={{{image alt|}}}}}</td>
}}<td>{{{text|{{{1}}}}}}</td></tr>
</table><noinclude>
{{Documentation}}
</noinclude>
50z4340vg32k2old3uik6qb88tifi5y
Template:Jagged 85 cleanup
10
966
2164
2163
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2163
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Jagged 85 cleanup
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-jagged-85-cleanup
| sect = {{{1|}}}
| issue = '''may misquote or misrepresent many of its sources.''' Please see the [[Wikipedia talk:Requests for comment/Jagged 85/Cleanup|cleanup page]] for more information.
| fix = <small>Editors: please remove this warning only after the diffs listed [[Wikipedia talk:Requests for comment/Jagged 85/{{{subpage}}}|here]] have been checked for accuracy.</small>
| date = {{{date|}}}
| cat = Accuracy disputes
| all = All accuracy disputes
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
4nkpzlmxa14muxz8k1lwqzt83lal13v
Template:Japanese script needed
10
992
2216
2215
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2215
wikitext
text/x-wiki
{{script needed
|language = Japanese
|image = 書.svg
|info = MOS:JAPAN
|nocat={{{nocat|}}}
}}
g8dfw0mpjsq1oeip4fgltoahzz21uss
Template:Karen script needed
10
1230
2692
2691
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2691
wikitext
text/x-wiki
{{Script needed
|language = Karen
|image = Karen text.svg
}}
mj78d5faim24ae2zwv6yv076dcxw40y
Template:Kayfabe
10
1245
2722
2721
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2721
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Game guide}} begin-->{{Ambox
| name = Kayfabe
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| imageright = [[File:Mascara Blue Demon.svg|40px]]
| issue = This {{#if:{{{section|}}}|section|{{#ifeq:{{{1|}}}|section|section|article}}}} '''may contain material discouraged by the [[Wikipedia:WikiProject Professional wrestling/Style guide|manual of style for professional wrestling]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by removing content such as information written in [[Kayfabe]], or an in-universe perspective, and rewrite in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. {{#if:{{{serious|}}}|To copy to a Pro Wrestling wiki, replace this template with <code>{{tl|Copy to Pro Wrestling wiki}}</code>.}}
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| all2 = Pro Wrestling articles written in Kayfabe
}}<!--{{Game guide}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE
</noinclude>
nv5gx9v7kd799093kk15u95zyvcq35a
Template:Khmer script needed
10
1001
2234
2233
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2233
wikitext
text/x-wiki
{{Script needed
|language = Khmer
|image = Khmer language.svg
}}
3hygsftojhw5hntthwwq1yaj98h1egw
Template:Kmposts
10
968
2168
2167
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2167
wikitext
text/x-wiki
{{Mileposts
|subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|name=Kmposts
|km=yes
}}
1eqv0hu0zgnnr5lowdqdd8ztd9gid70
Template:Korean script needed
10
993
2218
2217
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2217
wikitext
text/x-wiki
{{Script needed
|language = Korean
|image = Hangeul.svg
}}<noinclude>
[[Category:Korea templates]]
</noinclude>
4esvo1541wtlb654gn3yh16jj7c24rz
Template:Lacking overview
10
1036
2304
2303
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2303
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Lacking overview}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Lacking overview
| type = style
| text = This {{{1|article}}} '''contains an enumeration of examples, but lacks a general overview of its topic.''' You can help by adding an appropriate [[Wikipedia:Manual of Style (lists)#Lead paragraphs in embedded lists|introductory section]]. [[Help:Editing|Editing help]] is available. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}}
}}{{DMCA|Articles needing cleanup|from|{{{date|}}}|All pages needing cleanup}}{{DMCA|Articles with sections that need to be turned into prose|from|{{{date|}}}}}<!--{{Prose}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
sxm0l50j229yb240b68mgy2gbpqwj0x
Template:Lao script needed
10
1003
2238
2237
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2237
wikitext
text/x-wiki
{{Script needed
|language = Lao
|image = Laos in Lao.svg
}}
rsefchxpo4v8ffdct7mkpstioinr7t1
Template:Lead missing
10
1037
2306
2305
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2305
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Lead missing}} begin-->{{Ambox
| name = Lead missing
| type = content
| image = [[File:Wiki letter w.svg|40px]]
| class = ambox-lead_missing
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| issue = This article '''has no [[Wikipedia:Manual of Style/Lead section|lead section]]'''.
| fix = Please help by adding an introductory section to this article. For more information, see the [[Wikipedia:Manual of Style/Layout|layout guide]], and Wikipedia's [[Wikipedia:Manual of Style/Lead section|lead section guidelines]] to ensure the section will be inclusive of all the essential details. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia introduction cleanup
| all = All pages needing cleanup
| all2 = Pages missing lead section
| cat3 = Articles covered by WikiProject Wikify
| all3 = All articles covered by WikiProject Wikify
}}<!--{{Lead missing}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
5mfxa2vhoydb424n25szcshxfu1ptxp
Template:Lead rewrite
10
1224
2680
2679
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2679
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Lead rewrite}} begin-->{{Ambox
| name = Lead rewrite
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-lead_rewrite
| issue = The '''[[Wikipedia:Manual of Style/Lead section|lead section of this article]] may need to be rewritten'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}}
| fix = Use the [[Wikipedia:Manual of Style/Lead section|lead layout guide]] to ensure the section follows Wikipedia's norms and is inclusive of all essential details.
| removalnotice = yes
| cat = Wikipedia introduction cleanup
| all = All pages needing cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| talk = {{{talk|}}}
}}<!--{{Lead rewrite}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
gqcye3kk5p1i2lerjldnxd5w9k5gtn1
Template:Lead too long
10
1038
2308
2307
2020-09-29T19:17:38Z
Chrisb
1
1 revision imported
2307
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Lead too long}} begin-->{{Ambox
| name = Lead too long
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-lead_too_long
| issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] may be too long for the length of the article'''.
| fix = Please help by moving some material from it into the body of the article. Please read the [[Wikipedia:Manual of Style/Layout|layout guide]] and [[Wikipedia:Manual_of_Style/Lead_section#Length|lead section guidelines]] to ensure the section will still be inclusive of all essential details. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]].
| cat = Wikipedia introduction cleanup
| all = All pages needing cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
}}<!--{{Lead too long}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
0m01yp78kvoi3f2xd3f4rq392p43ona
Template:Lead too short
10
1039
2310
2309
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2309
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Lead too short}} begin-->{{Ambox
| name = Lead too short
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Wiki letter w.svg|40px]]
| class = ambox-lead_too_short
| issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] does not adequately [[Wikipedia:summary style|summarize]] key points of its contents'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}}
| fix = Please consider expanding the lead to [[Wikipedia:Manual of Style/Lead section#Provide an accessible overview|provide an accessible overview]] of all important aspects of the article. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]].
| cat = Wikipedia introduction cleanup
| all = All pages needing cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| talk = {{{talk|}}}
}}<!--{{Lead too short}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
7v6tr1khy8x3qtkp48lur7y3lbi1uit
Template:Like resume
10
1106
2444
2443
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2443
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Like resume}} begin-->{{Ambox
| name = Like resume
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue= This biographical {{{1|article}}} '''is written [[Wikipedia:Wikipedia is not the place to post your résumé|like a résumé]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by revising it to be [[WP:NPOV|neutral]] and [[WP:MOSBIO|encyclopedic]].
| date = {{{date|}}}
| cat = Articles with a promotional tone
| all = All articles with a promotional tone
}}<!--{{Like resume}} end-->
}}<noinclude>
{{documentation}}
</noinclude>
j3iized311jmzl3ms6h7meymbwqj4ap
Template:List dispute
10
1040
2312
2311
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2311
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B={{Ambox
| name = List dispute
| type = content
| issue = The '''inclusion or exclusion of items''' from this list or '''length of this list''' is disputed.
| fix = Please discuss this issue on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]].
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}</noinclude>
9v2mfgdwa9g1gg9t81e4bjcvsea2s62
Template:List missing criteria
10
1041
2314
2313
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2313
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{List missing criteria}} begin-->{{Ambox
| name = List missing criteria
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This list has no '''[[WP:LSC|precise inclusion criteria]]''' as described in the [[Wikipedia:Manual of Style/Stand-alone lists|Manual of Style for standalone lists]].
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding inclusion criteria. ([[{{{discussion|{{{discuss|:{{TALKPAGENAME}}}}}}}}|Discuss]])
| date = {{{date|}}}
| cat = Lists having no precise inclusion criteria
| all = All lists having no precise inclusion criteria
}}
<!--{{List missing criteriae}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
4fmxj4szi9p3t0txp3xius6rl3sz1cd
Template:List scope
10
1284
2800
2799
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2799
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = List scope
| subst= <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Noun Project list icon 1510508 cc.svg|50x50px]]
| issue = This [[Wikipedia:Stand-alone lists|list]] contains '''entries that may be out of scope and need to be evaluated for removal'''.
| fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} clean it up] by removing items that do not meet the inclusion criteria agreed upon {{#if:{{{criteria|}}}|at [[{{{criteria}}}]]|on the [[{{TALKPAGENAME}}|talk page]]}}. {{#if:{{{talk|}}}|Additional discussion related to this cleanup effort can be found at [[{{{talk|}}}]].|}}
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Wikipedia list cleanup
}}
}}<noinclude>
{{Documentation}}
</noinclude>
s3pmb0hsow35mbd3j80ueyjw9hm6um4
Template:List spam
10
1194
2620
2619
2020-09-29T19:18:01Z
Chrisb
1
1 revision imported
2619
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = List spam
| subst= <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class= ambox-Advert
| issue= This {{{1|list}}} contains entries that '''[[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|appear to advertise a subject]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by re-writing [[WP:Spam|promotional content]] from a [[WP:NPOV|neutral point of view]], and removing inappropriate entries that are not [[WP:Notability|notable]] or do not fit this list's inclusion criteria.
| cat = Articles with a promotional tone
| date = {{{date|}}}
| all = All articles with a promotional tone
| cat2 = Wikipedia list cleanup
}}
}}<noinclude>
{{documentation}}
</noinclude>
btsyz47ihjkr3f8yhkpcia8i5zol5n9
Template:List to table
10
1262
2756
2755
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2755
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{List to table}} begin-->{{Ambox
| name = List to table
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = This list (which may have dates, numbers, etc.) '''may be better in a [[Help:Sorting|sortable table]] format.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] or discuss it on the [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Wikipedia list cleanup
| cat3 = Articles requiring tables
}}<!--{{List to table}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
2g1qak9v4cndpsvmrpznr758thsb6wg
Template:List years
10
1042
2316
2315
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2315
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{List years}} begin-->{{Ambox
| name = List years
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = '''This [[Wikipedia:Manual of Style/Lists|list or list section]] may be better with [[Help:Sorting#Dates|year]]s.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] or discuss it on the [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| all2 = Articles with lists requiring dates
}}<!--{{List years}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
2fj1bb0fhrnfpyjna5py13suftyp3wa
Template:Long plot
10
1258
2748
2747
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2747
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| type = style
| class = ambox-Plot
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}}'s plot summar{{#if:{{{plural|}}}|ies|y}} '''may be [[Wikipedia:How to write a plot summary|too long or excessively detailed]].'''
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve {{#if:{{{plural|}}}|them|it}}] by removing unnecessary details and making {{#if:{{{plural|}}}|them|it}} more concise.
| removalnotice = yes
| cat = Wikipedia articles with plot summary needing attention
| date = {{{date|}}}
| all = All Wikipedia articles with plot summary needing attention
| name = Long plot
}}
}}<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{documentation}}
</noinclude>
1qmx0mlhz0qn1cjw6qa8gnf3e9nhi4x
Template:Longitem
10
1663
4974
4973
2020-10-11T05:50:43Z
Chrisb
1
1 revision imported
4973
wikitext
text/x-wiki
<div style="display:inline-block; padding:0.1em 0;line-height:1.2em;{{{style|}}}">{{{1}}}</div><includeonly>{{#if:{{{2|}}}|[[Category:Pages using Template:Longitem with unnamed style parameter]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
b8o6mrrekrzkkn4iwsvoloxg6ahtjhj
Template:Longlisted
10
1530
4708
4707
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4707
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DDF; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2"|{{{1|Longlisted}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
t94vzdcfr6egn0pof7wih684b3byh4w
Template:Lost
10
1531
4710
4709
2020-10-11T05:35:19Z
Chrisb
1
1 revision imported
4709
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#F99; color: {{{textcolor|black}}}; vertical-align: {{{valign|middle}}}; text-align: {{{halign|center}}}; {{{style|}}}" class="table-no" | {{{1|Lost}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
amvw8amaf7q7367p8xedd4u72w3m55z
Template:Lowercase title
10
1631
4910
4909
2020-10-11T05:50:20Z
Chrisb
1
1 revision imported
4909
wikitext
text/x-wiki
<span>{{DISPLAYTITLE:{{#if:{{NAMESPACE}}|{{NAMESPACE}}:|}}{{lcfirst:{{PAGENAME}}}}}}</span><noinclude>
{{documentation}}
</noinclude>
mqu8dewzbhxg4xvn22cnjl91d5uizc0
Template:Lowercase title/doc
10
1652
4952
4951
2020-10-11T05:50:41Z
Chrisb
1
1 revision imported
4951
wikitext
text/x-wiki
{{Documentation subpage}}
<!--
Kendeo
-->
:''See also: {{tl|Nocaps}}''
{{TOCright}}
== Usage ==
{{nosubst}}
Simply add the tag <code><nowiki>{{lowercase title}}</nowiki></code> at the beginning of a page (and optionally, at the beginning of its talk page). There are no parameters. The tag will only decapitalize the first letter of the page's name in the title at the beginning of the page. Examples:
{| class="wikitable"
|-
! Page name !! Will display
|-
| [[EBay]], [[IPod]], etc. || eBay, iPod, etc.
|-
| [[Talk:EBay]] || Talk:eBay
|}
== Issues ==
The template does '''not''' work together with other title modification templates: you need to use DISPLAYTITLE directly and make sure it's the last DISPLAYTITLE on the page. For example, to make "Example" italic and lowercase, use <code><nowiki>{{DISPLAYTITLE:''example''}}</nowiki></code>.
When using the template on redirect pages, the template must be moved ''after'' the redirect, since otherwise it will break the redirection. This, however, limits the template to have an effect only when viewing the redirect page directly. Nevertheless, it is still useful in this scenario in order to document the proper capitalization of a term.
When using on templates, please make sure to wrap it with a <noinclude> tag, so that transcluded pages don't get affected.
== Technical ==
This template wraps the [[Help:Magic words|magic word]] DISPLAYTITLE so that it works automatically in any namespace (main, talk, template, etc.) to decapitalise the first letter of the name of a page it is transcluded on.
<syntaxhighlight lang=sql>
/* Page using a lowercase title, with or without {{lowercase}} */
SELECT page_title, pp_value AS displaytitle
FROM page
JOIN page_props ON pp_page=page_id AND pp_propname="displaytitle"
WHERE page_namespace=0
AND CONVERT(pp_value USING utf8mb4) COLLATE utf8mb4_bin /* &#greek; */
REGEXP "^([_ :]+|<[^<>]+>)*([[:lower:]]|	[4-6][0-9];)"
</syntaxhighlight>
== See also ==
* [[Wikipedia:Naming conventions (technical restrictions)#Lowercase first letter]]
{{WrongTitleExamples}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {},
"description": "This template is used to make the first letter of the page title lowercase. It will not affect the page URL, just the displayed name."
}
</templatedata>
<includeonly>{{Sandbox other||
[[Category:Correct title templates]]
}}</includeonly>
k5yapb1w65u6wsf1oib5afa5wv16twx
Template:Lua
10
1298
2828
2827
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2827
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
pnmjp3f3fl321yf2jpg5syebi412n7b
Template:MONTHNAME
10
1615
4878
4877
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4877
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{#switch:{{MONTHNUMBER|{{{1}}}}}|1=January|2=February|3=March|4=April|5=May|6=June|7=July|8=August|9=September|10=October|11=November|12=December|Incorrect required parameter 1=''month''!}}|Missing required parameter 1=''month''!}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
4cf5sge5nt8b4gwjre9u8yifa3kstt2
Template:MONTHNUMBER
10
1616
4880
4879
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4879
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}
|{{#switch:{{lc:{{{1}}}}}
|january|jan=1
|february|feb=2
|march|mar=3
|apr|april=4
|may=5
|june|jun=6
|july|jul=7
|august|aug=8
|september|sep|sept=9
|october|oct=10
|november|nov=11
|december|dec=12
|{{#ifexpr:{{{1}}}<0
|{{#ifexpr:(({{{1}}})round 0)!=({{{1}}})
|{{#expr:12-(((0.5-({{{1}}}))round 0)mod 12)}}
|{{#expr:12-(((11.5-({{{1}}}))round 0)mod 12)}}
}}
|{{#expr:(((10.5+{{{1}}})round 0)mod 12)+1}}
}}
}}
|Missing required parameter 1=''month''!
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
mqnyq8bnd6mmrrl70a3uwqgeo8aevfc
Template:MOS
10
1048
2328
2327
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2327
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{MOS}} begin-->{{Ambox
| name = MOS
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-mos
| sect = {{#if:{{{section|}}}|section|{{{1|}}}}}
| issue = '''needs editing for compliance with Wikipedia's {{#if:{{{shortcut|}}}|Manual of Style at [[{{{shortcut}}}]]|[[WP:Manual of Style{{{3|{{{subpage|}}}}}}|Manual of Style{{{3|{{{subpage|}}}}}}]]}}.''' {{#if:{{{2|{{{reason|{{{for|}}}}}}}}}|In particular, it has problems with {{{2|{{{reason|{{{for}}}}}}}}}.}}
| talk = {{{talk|}}}
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] if you can.
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{MOS}} end-->
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
h74gvukuo0w4jv2lh38pndxo42qyeq2
Template:MOSLOW
10
1049
2330
2329
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2329
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = MOSLOW
| type = style
| issue = This {{{1|article}}} '''contains a list of works that does not follow the [[Wikipedia:Manual of Style/Lists of works|Manual of Style for lists of works]]''' (often, though not always, due to being in reverse-chronological order) and may need [[Wikipedia:Cleanup|cleanup]].
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] if you can.
| date = {{{date|}}}
}}
<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Wikipedia articles contravening the Manual of Style for lists of works]]}}}}}</includeonly>
}}<noinclude>{{documentation}}
</noinclude>
2njapnueoqb8e8qc4zndf4i0bavkpaa
Template:Main other
10
1315
2862
2861
2020-09-29T19:18:21Z
Chrisb
1
1 revision imported
2861
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
ngt28vb1n5t4bh1su57btnqyofkd1d5
Template:Malformed template
10
1285
2802
2801
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2801
wikitext
text/x-wiki
{{Ambox
| name = Malformed template
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| sect = {{{section|}}}
| issue = {{#if:{{{2|}}}|contains|may contain}} one or more {{#ifeq:{{{1|}}}|param|templates with [[Help:Template#Parameters|invalid parameters]]|[[Help:Templates|'''{{#switch:{{{1}}}|unclosed=unclosed{{sp}}|param=|malformed{{sp}}}} templates''']] {{#if:{{{2|}}}|(in particular, {{tl|{{{2}}}}} templates)}}}}.
| fix = {{#if:{{{2|}}}|The templates need|Templates contained within this {{{section|article}}} may need}} {{#switch:{{{1}}}|unclosed=to be closed|param=to have parameters corrected|fixing or updating}}.
| date = {{{date|}}}
| info = {{#if:{{{bot|}}}|<br /><small>Automatically tagged by {{user link|{{{bot}}}}}</small>}}
| cat = Articles with malformed templates
| cat2 = {{#if:{{{2|}}}|Articles with malformed {{{2}}} templates}}
| cat3 = {{#switch:{{{1}}}|unclosed=Articles with unclosed templates|param=Articles with templates with invalid parameters|}}
| removalnotice = yes
}}<noinclude>
{{Documentation}}
</noinclude>
pvpp0gst75rxlw6gt5kqngbknxux3d5
Template:Manual
10
1200
2632
2631
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2631
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Manual}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Manual
| type = style
| issue = This {{{1|article}}} '''is written like [[Wikipedia:What Wikipedia is not#GUIDE|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|a manual or guidebook}}]].'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewrite this {{{1|article}}}] from a descriptive, [[Wikipedia:Neutral point of view|neutral point of view]], and remove advice or instruction.
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Manual}} end-->
}}<noinclude>{{Documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude>
mdq2aufjqb4vt01hl2o6s5lu9dqzuff
Template:Math2english
10
1043
2318
2317
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2317
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Math2english
| type = style
|small = {{{small|}}}
|image = <div style="font:4em serif;">Σ</div>
|issue = This article '''may contain overly [[Meta:Help:Formula|technical formula]]s too complex for most readers to understand'''. These formulas need to be [[Wikipedia:Make technical articles accessible|translated]] into English and/or visual diagrams.
|fix = Please expand this article to make it accessible to non-experts without removing the technical details.
| date = {{{date|}}}
| cat = Wikipedia articles that are too technical
| all = All articles that are too technical
| cat2 = Articles needing expert attention
| all2 = All articles needing expert attention
}}
}}
28epgt42tf8umrd1neeer7527r572mw
Template:Maybe
10
1532
4712
4711
2020-10-11T05:35:20Z
Chrisb
1
1 revision imported
4711
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ffff90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-maybe"|{{{1|Maybe}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
apc8s7t3mfvr0070t3m75j22e7psxqv
Template:MaybeCheck
10
1533
4714
4713
2020-10-11T05:35:20Z
Chrisb
1
1 revision imported
4713
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: {{{color|#FFB}}}; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:yellow check.svg|13px|link={{{link|}}}|{{{1|Maybe}}}]] {{{2|}}}}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}</noinclude>
cpge9st8t1u5at3b4z7gw4j068zteqh
Template:Mbox
10
921
2074
2073
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2073
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
mpflpb6s8l8gaoxaeypyuqyu2w7vc7i
Template:Mbox templates (small)
10
923
2078
2077
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2077
wikitext
text/x-wiki
<includeonly>{{Infobox
| bodyclass = nowrap
| bodystyle = width:auto;padding-bottom:0.6em;line-height:1.25em;
| abovestyle = font-size:inherit;
| above = Message box<br/>meta-templates
| labelstyle = margin:0;padding:0 0.3em 0;text-align:center;font-weight:normal;
| datastyle = margin:0;padding:0 0.5em 0 0;
| label1 = ''template'' | data1 = ''context''
| label2 = {{tl|Ambox}} | data2 = article
| label3 = {{tl|Cmbox}} | data3 = category
| label4 = {{tl|Imbox}} | data4 = image
| label5 = {{tl|Tmbox}} | data5 = talk
| label6 = {{tl|Fmbox}} | data6 = footer / header
| label7 = {{tl|Ombox}} | data7 = other pages
| label8 = {{tl|Mbox}} | data8 = auto-detect
| label9 = {{tl|Asbox}} | data9 = article stub
| label10 = {{tl|Dmbox}} | data10 = disambiguation
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
1bae4fgs4de5xgz69zvbs10mlm90g0b
Template:Mbox templates see also
10
924
2080
2079
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2079
wikitext
text/x-wiki
<div>{{view|Template:Mbox templates see also|edit|brackets=yes}} There are seven metatemplates in the [[Module:Message box]] family:</div>
* {{tl|Ambox}}, for messageboxes on article pages.
* {{tl|Cmbox}}, for messageboxes on category pages.
* {{tl|Imbox}}, for messageboxes on file (image) pages.
* {{tl|Tmbox}}, for messageboxes on talk pages.
* {{tl|Fmbox}}, for header and footer messageboxes.
* {{tl|Ombox}}, for messageboxes on other types of page.
* {{tl|Mbox}}, for messageboxes that are used in different [[Wikipedia:Namespace|namespaces]] and change their presentation accordingly.
Closely related metatemplates:
* {{tl|Asbox}}, for messageboxes in article stubs.
* {{tl|Dmbox}}, for messageboxes on disambiguation or set-index pages.
* {{tla|Ivory messagebox|Ivmbox}}, a simple full-width box with default ivory background intended to frame important messages or notices.
Templates intended to be used in conjunction with Mboxes:
* {{tl|Ombox/shortcut}}, an alternative to {{tl|Shortcut}} for use in Mbox templates<noinclude>
{{Documentation}}
</noinclude>
789tpa7l7pq9247rz1302oo4eo2biqu
Template:Merge FJC
10
1044
2320
2319
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2319
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Merge FJC}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Merge FJC
| type = move
| image = [[Image:Merge-arrow.svg|50px|Merge arrow|alt=|link=]]
| text = [[Wikipedia:WikiProject United States courts and judges|WikiProject USCJ]] has suggested that this Bot-created FJC subpage be [[Wikipedia:Merging|merged]] into the article at ''[[{{{1}}}]]''.
:<small>Once this is done you may replace this template with {{tlx|Delete FJC|{{{1}}}}}, and the page will be deleted. {{#if:{{{date|}}}|''({{{date}}})''}}</small>
}}<includeonly>{{DMC|Bot-created FJC subpages needing merge action}}</includeonly><!--{{Merge FJC}} end-->
}}<noinclude>
;''<u>Merge FJC usage</u>'': {{tlx|Merge FJC|article name|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}.
This adds the subpage to [[:Category:Bot-created FJC subpages needing merge action]]. See that category for further information.
[[Category:Merge templates for WikiProjects|FJC]]
[[Category:WikiProject United States courts and judges maintenance]]
</noinclude>
a29fu24ic7uh28qfexeaqocz5moovyx
Template:Merging from
10
950
2132
2131
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2131
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Merging from
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| image = [[File:Mergefrom.svg|50px|alt=|link=]]
| text = '''{{#if:{{{1|}}}|{{#if:{{{2|}}}|{{#if:{{{3|}}}|{{#if:{{{4|}}}|{{#if:{{{5|}}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'', ''[[{{NAMESPACE}}:{{{4}}}|{{{4}}}]]'', and ''[[{{NAMESPACE}}:{{{5}}}|{{{5}}}]]'' are|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'', and ''[[{{NAMESPACE}}:{{{4}}}|{{{4}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', and ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'' and ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'' is}}|A number of articles are}} in the process of being [[Wikipedia:Merging|merged]] into this {{#if:{{{section|}}}|[[{{FULLPAGENAME}}#{{{section}}}|section]]|{{#if:{{NAMESPACE}}|page|article}}}}'''. <br/> If possible, please edit only this {{#if:{{NAMESPACE}}|page|article}}, as the {{#if:{{NAMESPACE}}|page|article}} mentioned above may be turned into a [[Wikipedia:Redirect|redirect]]. Relevant discussion may be found {{#if:{{{discussion|}}}|[[{{{discussion}}}|here]]|on [[:{{TALKPAGENAME}}|this {{#if:{{NAMESPACE}}|page|article}}'s talk page]]{{#if:{{{1|}}}|  and/or [[:{{#if:{{NAMESPACE}}|Talk|{{NAMESPACE}}_talk}}:{{{1}}}|the source {{#if:{{NAMESPACE}}|page|article}}'s talk page]]}}}}.
| date = {{{date|}}}
| cat = Articles to be merged
}}
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
pho36pczq7v04h6kf1y4cdc17clwibr
Template:Metricate
10
1045
2322
2321
2020-09-29T19:17:39Z
Chrisb
1
1 revision imported
2321
wikitext
text/x-wiki
<noinclude>{{Template for discussion/dated|action=|page=Metricate|link=Wikipedia:Templates for discussion/Log/2020 September 17#Template:Metricate|help=off|bigbox={{#invoke:Noinclude|noinclude|text=yes}}}}</noinclude>
<!--{{Metricate}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Metricate
| type = style
| class = ambox-metricate
| image = [[file:Measuring tape icon.svg|50x40px]]
| issue = This {{{1|article or section}}} '''exclusively uses non-[[International System of Units|SI units]] of measurement'''.
| fix = Please help <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]</span> by [[template:convert|adding international units]], preferably from the references cited in the article.
| date = {{{2|}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Articles requiring unit attention}}}}}}}</includeonly><!--{{Metricate}} end--><noinclude>{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
l7ulmhl27peabqy4k1nk5qch17njwpr
Template:Microformat message
10
1664
4976
4975
2020-10-11T05:50:43Z
Chrisb
1
1 revision imported
4975
wikitext
text/x-wiki
The [[Help:HTML in wikitext|HTML mark-up]] produced by this template includes {{#if:{{{type|}}} |{{{type}}} |an [[{{{format}}} microformat]]}} that makes {{{data}}} readily [[Parsing|parsable]] by computer programs. This aids tasks such as the cataloguing of articles and maintenance of databases. For more information about the use of microformats on Wikipedia, please visit [[Wikipedia:WikiProject Microformats|the Microformat WikiProject]].<!--
-->{{#if:{{{subtemplates<includeonly>|</includeonly>}}}
| <div style="margin-top:0.5em;margin-bottom:0.65em;">
; {{big|Subtemplates}}
{{{subtemplates}}}
'''''Please do not remove instances of these subtemplates.'''''
</div>}}<!--
-->{{#if:{{{subsection1|}}}
| <div style="margin-top:0.5em;margin-bottom:0.65em;"><!--(newline in case subsection begins with heading:)-->
{{{subsection1}}}
</div>}}<!--
-->{{#if:{{{1<includeonly>|</includeonly>}}} <!--(i.e. if at least one unnamed parameter supplied:)-->
| <div style="margin-top:0.5em;margin-bottom:0.65em;">
; {{big|Classes used}}
The [[HTML attribute|HTML class]]es of this microformat include:
: {{hlist
|item_style=font-size:110%;{{{itemstyle|}}}
|{{{1}}} |{{{2<includeonly>|</includeonly>}}} |{{{3|<noinclude>{{nobold|……}}</noinclude>}}}
|{{{4|}}} |{{{5|}}} |{{{6|}}} |{{{7|}}} |{{{8|}}} |{{{9|}}} |{{{10|}}} |{{{11|}}} |{{{12|}}} |{{{13|}}} |{{{14|}}} |{{{15|}}} |{{{16|}}} |{{{17|}}} |{{{18|}}} |{{{19|}}} |{{{20|}}}
}} </div>
{{longitem|style=line-height:1.3em|'''''Please do not rename or remove these classes{{#if:{{{nocollapse<includeonly>|</includeonly>}}} |<br/>nor collapse nested elements which use them}}.'''''}}<!--
-->}}<!--(end #if:[1])--><noinclude>
{{Documentation}}
</noinclude>
me7zxp3w2uux5z3kjtbhzkkibu4tots
Template:Mileposts
10
967
2166
2165
2020-09-29T19:17:29Z
Chrisb
1
1 revision imported
2165
wikitext
text/x-wiki
<!--{{Mileposts}} begin-->{{Ambox
| name = {{{name|Mileposts}}}
| subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| type = content
| image = [[Image:{{#if:{{{km|}}}|Kilometer|Mile}} marker.svg|x40px|link=|alt=]]
| issue = '''This section contains a table that is missing {{#if:{{{km|}}}|kilometre posts|mileposts}} for one or more junctions.'''
| fix = Please help by <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} adding the missing {{#if:{{{km|}}}|kilometre posts|mileposts}}]</span>.
| cat = {{#ifeq:{{{cat|<noinclude>no</noinclude>}}}|no||Routes needing mileposts}}
}}<!--{{Mileposts}} end--><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
miagnq12313nm6akdehspfmcc857f4i
Template:Misleading
10
1046
2324
2323
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2323
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Misleading}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Misleading
| type = content
| issue = This {{{1|article or section}}} '''may contain misleading parts'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} clarify this article] according to any suggestions provided on the [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Misleading articles]]}}}}}</includeonly><!--{{Misleading}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
kv661hdwaslt75zzxj9almm4zhjj95u
Template:Missing-taxobox
10
1047
2326
2325
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2325
wikitext
text/x-wiki
<!--{{Missing-taxobox}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Missing-taxobox
| type = style
| issue = '''This article needs an appropriate [[Wikipedia:Automated taxobox system|taxobox]].'''
| fix = You can help Wikipedia by adding one.
}}<includeonly>[[Category:Missing taxobox|{{PAGENAME}}]]</includeonly><!--{{Missing-taxobox}} end--><noinclude>
{{Documentation}}
[[Category:Request templates|{{PAGENAME}}]]
[[Category:Wikipedia infoboxes]]
</noinclude>
s93ygitchuissqceitybeiwyah04b5j
Template:Missing information
10
1178
2588
2587
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2587
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Missing information}} begin-->{{Ambox
| name = Missing information
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[File:Wiki letter w.svg|44px]]
| issue = This {{#if:{{{2|}}}|{{{1}}}|article}} '''is missing information about {{{2|{{{1<includeonly>|{{error|Error: you must specify what information is missing.}}</includeonly>}}}}}}'''.
| fix = Please expand the {{#if:{{{2|}}}|{{{1}}}|article}} to include this information. Further details may exist on the [[{{TALKPAGENAME}}#{{#if:{{{talksection|}}}|{{anchorencode:{{{talksection}}}}}}}|talk page]].
| date = {{{date|}}}
| small = {{{small|}}}
| cat = Articles to be expanded
}}<!--{{Missing information}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
4o5g93d5r2uv852xv9xxnb8p97vlt0f
Template:Missinginfo-search
10
1160
2552
2551
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2551
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{missing information|1={{{1}}}. Additional resources for improving this article can be found [{{{2}}} here]|date={{{date|}}}}}
}}<noinclude>
[[Category:Article message templates]]
[[Category:Cleanup templates]]
[[Category:Request templates]]
</noinclude>
3wyxloj1qmqmy5kk02bkip8j4g1suse
Template:Module other
10
874
1980
1979
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1979
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Module}}
| module
| other
}}
}}
| module = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
9db98vx09purrfch7wguurzjgqz7u93
Template:Module rating
10
875
1982
1981
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1981
wikitext
text/x-wiki
<includeonly>{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
qa237seqwluvlwhfrda4c8m3cscvst5
Template:More citations needed
10
1259
2750
2749
2020-09-29T19:18:10Z
Chrisb
1
1 revision imported
2749
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|More citations needed}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Question book-new.svg|50x40px|alt=]]
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Help:Referencing for beginners|adding citations to reliable sources]]. Unsourced material may be challenged and removed.{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}}
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}
}}<noinclude>
<!-- Please add categories to the /doc subpage, thanks -->
{{Documentation}}
</noinclude>
bdjh5iyhm72utms1yrls88dn7j21tdh
Template:More citations needed section
10
1269
2770
2769
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2769
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{More citations needed|section
| name = More citations needed section
| find = {{#if:{{{find|}}}|{{{find|}}}|none}}
| date = {{{date|}}}
| talk = {{{talk|}}}
| small = {{{small|}}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
juhehkhdvrubo1uxfq63rqrblg5aqht
Template:More plot
10
1268
2768
2767
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2767
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{More plot}} begin-->{{Ambox
| name = More plot
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = notice
| small = {{{small|left}}}
| image = [[Image:Wiki letter w.svg|20px]]
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} needs {{#if:{{yesno|{{{noimproved|}}}}}||{{#if:{{yesno|{{{plural|}}}}}||an}} improved{{sp}}}}[[Wikipedia:How to write a plot summary|{{#if:{{{2|}}}|{{{2}}}|{{#if:{{yesno|{{{plural|}}}}}|plot summaries|plot summary}}}}]].
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this article] to provide one. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}}
| date = {{{date|}}}
| cat = Wikipedia articles with plot summary needing attention
| all = All Wikipedia articles with plot summary needing attention
}}<!--{{More plot}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
su9cr0sc4d7khj3rqd5f4pgo3179ern
Template:Multiple issues
10
945
2122
2121
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2121
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=
{{Ambox
|name = Multiple issues
|doc = no
|subst = <includeonly>{{subst:substcheck}}</includeonly>
|class = ambox-multiple_issues compact-ambox
|type = content
|removalnotice = yes <!-- as of 2016-06, param does not work on this template -->
|cat=Articles with multiple maintenance issues
|text =
<div {{#if:{{{1|}}}|class="mw-collapsible {{#ifeq:{{{collapsed}}}|yes|mw-collapsed}}"}} style="width:95%; margin: 0.2em 0;"><!--
-->'''This {{#if:{{{section|}}}|section|article}} has multiple issues.''' Please help '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it]''' or discuss these issues on the '''[[{{TALKPAGENAME}}|talk page]]'''. <small>''([[Help:Maintenance template removal|Learn how and when to remove these template messages]])''</small>
{{#if:{{{1|}}}
| <div class="mw-collapsible-content" style="margin-top: 0.3em;">
{{#invoke:String|replace|source={{{1|}}}|pattern=style="display: none"|replace=|count=}}<!--remove style="display: none", to support display of {{orphan}} messages in {{multiple issues}}-->
</div>
| <includeonly>{{error|No issues specified. Please specify issues, or remove this template.}}</includeonly>
}}
</div>
{{#if:{{{2|}}}|[[Category:Pages using multiple issues with unknown parameters|§{{PAGENAME}}]]}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using multiple issues with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Multiple issues]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | collapsed | section }}
}}<noinclude>
{{Documentation}}
</noinclude>
g2jkcq9k8cnlw2ecqak43vc0veq6phy
Template:N/a
10
1534
4716
4715
2020-10-11T05:35:20Z
Chrisb
1
1 revision imported
4715
wikitext
text/x-wiki
{| class="wikitable"
|-
| <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!--
-->| {{{1|N/A}}}</onlyinclude>
|}
{{documentation}}
onzkutomdha4snn4aa8myn95j76aace
Template:NFimageoveruse
10
1118
2468
2467
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2467
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = NFimageoveruse
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-NFimageoveruse
| image = [[File:Copyright-problem.svg|50px|alt=|link=]]
| sect = {{{1|}}}
| issue = '''may contain an excessive number of [[Wikipedia:Copyrights|copyrighted]] images.'''<br><small>Please review the use of non-free images according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]], especially taking note of [[WP:NFCC#3a]], [[WP:NFCC#8]] and [[WP:NFC#Images]]. Correct any violations, then remove this tag once compliant.</small>
| date = {{{date|}}}
| cat = Articles with excessive non-free image content
| all = Articles with excessive non-free image content
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dvfjgbw026olmms4k6261mvjwge2hih
Template:NPOV language
10
1060
2352
2351
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2351
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = NPOV language
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-npov-language
| image = [[File:Ambox scales.svg|50px|link=]]
| issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of the style of writing in this {{{1|article}}} is [[Wikipedia:NPOV dispute|questioned]]'''.
| talk = {{{talk|}}}
| fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with minor POV problems
| all = All articles with minor POV problems
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
647peqqapy2cw5j1f87c8vb5in3f1sz
Template:NRIS-only
10
1172
2576
2575
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2575
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = NRIS-only
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-nris-only
| sect = {{{1|}}}
| issue = '''lacks [[Wikipedia:Citing sources#Inline citations|inline citations]]''' besides [[National Register Information System|NRIS]], a database which provides minimal and sometimes ambiguous information.
| talk = {{{talk|}}}
| fix = Please help [[WP:V|ensure the accuracy]] of the information in this {{{1|article}}} by providing [[WP:inline citation|inline citations]] to additional [[WP:RS|reliable sources]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles sourced only to NRIS
| all = All articles sourced only to NRIS
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
1wauonuc59txmu2j8bdujwdgvr1fxuf
Template:Na
10
1535
4718
4717
2020-10-11T05:35:21Z
Chrisb
1
1 revision imported
4717
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>data-sort-value="{{{sort|No}}}" style="background: {{{color|#FFD2D2}}}; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} | {{{text|[[File:Dark Red x.svg|13px|link={{{link|}}}|{{{1|No}}}]]}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}</noinclude>
kydq4q3kwa02stgqxzehmpo81fh1umd
Template:Navbox
10
1453
3210
3209
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3209
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
tqodcaa2vvhehqaod229udlla0wimek
Template:Needhanja
10
1050
2332
2331
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2331
wikitext
text/x-wiki
<!--{{Needhanja}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other
| demospace={{{demospace|}}}
| <!-- Don't show on talk pages -->
| {{Ambox
| name = Needhanja
|type = style
|image = [[Image:Hanzi (traditional).svg|40px|Kanji]]
|text = '''Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] ''[[hanja]]'' ([[Sino-Korean vocabulary|Sino-Korean characters]]) to this article, where needed.''' If this word has no ''hanja'', include the word "none" in the Korean language box.
}}
}}{{main other
| demospace={{{demospace|}}}
| <!-- Don't show in main (article) space -->
| {{Tmbox
|type = style
|image = [[Image:Hanzi (traditional).svg|40px|Kanji]]
|text = '''Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] ''[[hanja]]'' ([[Sino-Korean vocabulary|Sino-Korean characters]]) to this article, where needed.''' If this word has no ''hanja'', include the word "none" in the Korean language box.
}}
}}<includeonly>[[Category:Articles needing Korean script or text|{{PAGENAME}}]]</includeonly><!--{{Needhanja}} end--><noinclude>
[[Category:Language maintenance templates|{{PAGENAME}}]]
[[Category:Korea templates|{{PAGENAME}}]]
[[Category:Wikipedia articles needing hanja| ]]
[[Category:Request templates|{{PAGENAME}}]]
</noinclude>
hs2qag8alhbdtrhlnpxfu3h5oxo7cdm
Template:Needhiragana
10
1188
2608
2607
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2607
wikitext
text/x-wiki
<!--{{Needhiragana}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other
| demospace={{{demospace|}}}
| <!-- Don't show on talk pages -->
| {{Ambox
| name = Needhiragana
|type = style
|image = [[Image:ひ 教科書体.svg|40px|]]
|text = Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[hiragana]]'' to this article, where needed.
}}
}}{{main other
| demospace={{{demospace|}}}
| <!-- Don't show in main (article) space -->
| {{tmbox
|type = style
|image = [[Image:ひ 教科書体.svg|40px|]]
|text = Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[hiragana]]'' to this article, where needed.
}}
}}<includeonly>[[Category:Articles needing Japanese script or text|{{PAGENAME}}]]</includeonly><!--{{Needhiragana}} end--><noinclude>
[[Category:Language maintenance templates]]
[[Category:Request templates]]
[[Category:Japanese language templates]]
</noinclude>
t4vsxphq2197wqng8ll34pjny6ly5jx
Template:Needkanji
10
1187
2606
2605
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2605
wikitext
text/x-wiki
<!--{{Needkanji}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other
| demospace={{{demospace|}}}
| <!-- Don't show on talk pages -->
| {{Ambox
| name = Needkanji
| type = style
| image = [[Image:書.svg|48px|Kanji]]
| text = '''Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[kanji]]'' to this article, where needed.'''
}}
}}{{main other
| demospace={{{demospace|}}}
| <!-- Don't show in main (article) space -->
| {{Tmbox
| type = style
| image = [[Image:書.svg|48px|Kanji]]
| text = '''Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[kanji]]'' to this article, where needed.'''
}}
}}<includeonly>[[Category:Articles needing Japanese script or text|{{PAGENAME}}]]</includeonly><!--{{Needkanji}} end--><noinclude>
'''{{tl|{{PAGENAME}}}}''' will categorise an article in the list of [[:Category:Articles needing Japanese script or text|Articles needing Japanese script or text]].
[[Category:Language maintenance templates]]
[[Category:Request templates]]
[[Category:Japanese language templates]]
</noinclude>
bxgf0fk59vfzk08b80wj9pnutgsagza
Template:Needs
10
1536
4720
4719
2020-10-11T05:35:21Z
Chrisb
1
1 revision imported
4719
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="need table-needs"|{{{1|Needs}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[es:Plantilla:Necesidades]]
</noinclude>
jnre9q1y4ie0v72nk6a0afn69tupyqq
Template:Needs table
10
1051
2334
2333
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2333
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Needs table}} begin-->{{Ambox
| name = Needs table
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| issue = '''This {{{1|article or section}}} should be written as a table.'''<br />
| fix = <small>To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and conform with our [[Wikipedia:NPOV|NPOV]] policy, this {{{1|article or section}}} may require a [[MOS:TABLE|table]]. Specific examples may be noted on the [[Talk:{{PAGENAME}}|talk page]]. [[Help:Editing|Editing help]] is available.</small>
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Needs table}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
pijfrox6q7exfymge8gkycv4mbe2kaa
Template:Neologism
10
1052
2336
2335
2020-09-29T19:17:40Z
Chrisb
1
1 revision imported
2335
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Neologism}} begin-->{{Ambox
| name = Neologism
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This {{{1|article}}} '''may document a [[WP:NEO|neologism]] or [[protologism]] in such a manner as to promote it'''.
| fix = Please add [[WP:RS|more reliable sources]] to establish its current use and the impact the term has had on its field. Otherwise consider [[Wikipedia:Moving_a_page|renaming]] or deleting the article.
| date = {{{date|}}}
| cat = Articles about possible neologisms
| removalnotice = yes
}}<!--{{Neologism}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
71xvipjfenu8duf8p9yty6th22pn1fl
Template:New user article
10
1180
2592
2591
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2591
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = New user article
|type = notice
|image = <!--[[File:N write green black.svg|none|45px|link=]]-->[[File:smiley.svg|none|45px|link=]]
|issue = This is an '''article recently created by a new user'''. More editing may be needed to meet standards, but [[Wikipedia:Please do not bite the newcomers|please be courteous]] and [[Wikipedia:Assume good faith|assume good faith]], and consider leaving a constructive message on {{#if:{{{1|}}}|[[User talk:{{{1}}}|the creator's talk page]]|the creator's talk page}} if large changes need to be made.<br/>
| fix = <small>This template should be removed once the page has been reviewed by someone other than its creator. If you are the article's creator, you can seek feedback on your new article at the [[Wikipedia:Teahouse|Teahouse]] or request a [[Wikipedia:peer review|peer review]]. </small>{{#if:{{{date|}}}|''({{{date}}})''}}
}}<!-- {{DMCA|Unreviewed new articles {{#ifeq:{{{source}}}|ArticleWizard|created via the Article Wizard}}|from|{{{date|}}}}} -->
}}<noinclude>
{{Documentation}}
</noinclude>
ivey09rn4mqkb7cce34bohtr2snkogz
Template:New user article LSU
10
1053
2338
2337
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2337
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = New user article LSU
|type = notice
|image = <!--[[File:N write green black.svg|none|45px|link=]]-->[[File:LSU_Wikipedia_Course_Logo.png|none|45px|link=]]
|text = This is an '''article recently created by a new user at [[Louisiana State University]] for a class project'''. More editing may be needed to meet standards, but [[Wikipedia:Please do not bite the newcomers|please be courteous]] and [[Wikipedia:Assume good faith|assume good faith]], and consider leaving a constructive message on {{#if:{{{1|}}}|[[User talk:{{{1}}}|the creator's talk page]]|the creator's talk page}} if large changes need to be made.<br/>
<small>This template should be removed once the page has been reviewed by someone other than its creator. If you are the article's creator, you can [[Wikipedia:Requests for feedback|seek feedback on your new article]]. {{#if:{{{date|}}}|''({{{date}}})''}}</small>
}}{{DMCA|Unreviewed new articles {{#ifeq:{{{source}}}|ArticleWizard|created via the Article Wizard}}|from|{{{date|}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
cptmp5ftsqnmktm0e1bxhlzzdeoyxdl
Template:Nightly
10
1537
4722
4721
2020-10-11T05:35:21Z
Chrisb
1
1 revision imported
4721
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #fdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="nightly table-nightly"|{{{1|[[Neutral build|Nightly build]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
7kszprm42lo37ap0dl135x94hl3hp6s
Template:No
10
1538
4724
4723
2020-10-11T05:35:21Z
Chrisb
1
1 revision imported
4723
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|{{{1|No}}}<noinclude>
|}
{{documentation}}
</noinclude>
9sy5yzld48zzicuuz6htc8iqyyy9es3
Template:No2
10
1539
4726
4725
2020-10-11T05:35:21Z
Chrisb
1
1 revision imported
4725
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ffdddd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" |{{{1|}}}<noinclude>
|}
{{documentation}}
</noinclude>
jjhp3x889jt9llk3hf1ra656wgzx29j
Template:No Copy to Wikibooks
10
1054
2340
2339
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2339
wikitext
text/x-wiki
<!--{{No Copy to Wikibooks}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = No Copy to Wikibooks
| type = move
| image = [[Image:Edit-copy purple.svg|40px]]
| text = '''This page will ''not'' be [[meta:Transwiki|copied]] to [[Wikibooks]] using the [[b:Special:Import|Import]] tool, because there is already a [[b:{{{1}}}|page or book which addresses this subject]].'''
If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message.
}}<includeonly>{{{category|[[Category:Copy to Wikibooks]]}}}</includeonly><!--{{No Copy to Wikibooks}} end--><noinclude>{{documentation|content=
{{deletiontools}}
Use <nowiki>{{No Copy to Wikibooks|Wikibooks page name}}</nowiki> to add a link to the wikibooks module.
This template will categorise tagged articles into [[:Category:Copy to Wikibooks]].
This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]].
This template is not useful for [[Wikipedia:Subst]].
== See also ==
* [[Template:Copied to Wikibooks]]
* [[Template:Copied to Wikibooks Cookbook]]
[[Category:Transwiki templates]]
[[Category:Wikibooks link templates]]
[[fr:Modèle:Pour Wikilivres]]
[[zh:Template:移动到维基教科书]]
}}</noinclude>
bvfjvoyk12ov4rw9g1ks3two16be6ru
Template:No O
10
1540
4728
4727
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4727
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|[[Image:Pictogram voting delete.svg|18px|link=|]] {{{1|No}}}<noinclude>
|}{{Documentation|Template:Table cell templates/doc}}
</noinclude>
2kctejhsyl0jdf2v0jw438f6hd63bxj
Template:No X
10
1541
4730
4729
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4729
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|[[File:Dark Red x.svg|13px|link=|]] {{{1|No}}}<noinclude>
|}{{Documentation|Template:Table cell templates/doc}}
</noinclude>
n9rljg94fh6pr0xs0tpe8el5cv4atp4
Template:No attempt
10
1542
4732
4731
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4731
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #ececec; color: black; vertical-align: middle; white-space: nowrap; text-align: {{{align|center}}}; {{{style|}}}" class="table-noAttempt" | {{{1|No attempt}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
h08gamnkxexguv3kpsr2oy1bdsz7ey8
Template:No epoch
10
1162
2556
2555
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2555
wikitext
text/x-wiki
<!--{{No epoch}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = No epoch
| type = style
| image = [[File:Local-time.svg|50px|alt=|link=]]
| text = This {{{1|article}}} contains [[orbital elements]] but '''does not include an [[epoch (astronomy)|epoch]]''', or date when those elements, which typically vary over time, were correct.
| fix = Please help by adding the epoch for the current data, or changing the orbital elements to ones with a known epoch. Unsourced materials may be challenged and removed.
}}<noinclude>
{{documentation}}
</noinclude><includeonly>
[[Category:Articles missing orbit epochs]]
</includeonly>
pxtwla3jya5h0hppk1oefnzeqn98nh6
Template:No footnotes
10
1119
2470
2469
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2469
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = No footnotes
| type = style
| class = ambox-No_footnotes
| style = {{{style|}}}
| image = [[File:text document with red question mark.svg|50x40px|alt=|link=]]
| issue = This {{#ifeq:{{yesno-no|{{{BLP|{{{blp|}}}}}}}}|yes|{{#if:{{{1|}}}|'''{{{1}}} [[Wikipedia:Biographies of living persons|about a living person]]'''|'''[[Wikipedia:Biographies of living persons|biography of a living person]]'''}}|{{{1|article}}}}} includes a [[Wikipedia:Citing sources|list of references]], related reading or [[Wikipedia:External links|external links]], '''but its sources remain unclear because it lacks [[Wikipedia:Citing sources#Inline citations|inline citations]]'''.
| fix = {{#ifeq:{{yesno-no|{{{BLP|{{{blp|}}}}}}}}|yes|Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.}} Please help to [[{{SITENAME}}:WikiProject Fact and Reference Check|improve]] this {{{1|article}}} by [[Wikipedia:When to cite|introducing]] more precise citations.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles lacking in-text citations
| all = All articles lacking in-text citations
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using no footnotes with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:No footnotes]] with unknown parameter "_VALUE_"|ignoreblank=y| | 1 | blp | BLP | date | style}}}}<noinclude>
{{Documentation}}
<!-- Please add categories and interwikis to the /doc subpage, thanks -->
</noinclude>
1tr1kmg96bj4z75me5c7wycc3umfto7
Template:No orbit for payload
10
1201
2634
2633
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2633
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|No orbit for payload}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| image = [[File:Web-browser.svg|50x40px|alt=]]
| issue = This [[rocket]] {{#if:{{{1|}}}|{{{1}}}|article}} contains [[payload]] capacity, but '''does not include [[orbital altitude]] or [[orbital inclination|inclination]]''', which greatly affects the capacity.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding the orbital altitude and inclination for the given payload.
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles missing payload orbit parameters
| all = All articles missing payload orbit parameters
}}
}}<noinclude>
<!-- Please add categories to the /doc subpage, thanks -->
{{Documentation}}
</noinclude>
hshygfisv6at60z8mey3c0yt17vu0j9
Template:No plot
10
1055
2342
2341
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2341
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{No plot}} begin-->{{Ambox
| name = No plot
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| small =
| image = [[File:Wiki letter w.svg|40px]]
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} needs {{#if:{{{plural|}}}||a}} [[Wikipedia:How to write a plot summary|plot summar{{#if:{{{plural|}}}|ies|y}}]].
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add {{#if:{{{plural|}}}|some|one}}] in your own words.
| date = {{{date|}}}
| cat = Wikipedia articles without plot summaries
}}<!--{{No plot}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ocfh4k4cp2iv6b94c8rldzfhherspv3
Template:No political diagram
10
1215
2662
2661
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2661
wikitext
text/x-wiki
{{namespace detect
|talk = {{Ambox
| name = No political diagram
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| style = {{{style|}}}
| image = [[File:Åland lagting diag.svg|50x40px|link=]]
| issue = This article about a political body does not contain an [[commons:Category:Election apportionment diagrams|election apportionment diagram]].
| fix = Please use this [https://tools.wmflabs.org/parliamentdiagram/parliamentinputform.html tool] to generate one.
| removalnotice = no
| cat = Articles needing electoral apportionment diagrams
}}
|other = <!--
Show a rather more prominent notice when this template is used on the wrong kind of pages:
-->{{tmbox
| type = content
| image = [[Image:Emblem-important.svg|60px]]
| text =
'''It appears that this template ({{Tlx|No political diagram}}) is being used on a non-talk page. Please remove this instance of the template.'''
This template is meant for use on [[Wikipedia:Talk page|talk pages]]. If you added this template, please remove this template and re-add it on [[Talk:{{PAGENAME}}|the article's talk page]]. If you did not add this template, please remove it from this page.
}}
| demospace = {{{demospace| <noinclude>talk</noinclude> }}} <!--For testing. And fall-back to "talk" when on this template page.-->
}}
<noinclude>
{{Documentation}}
[[Category:Article message templates]]
[[Category:Politics and government templates]]
</noinclude>
l8q50zlnha9sxvhzy3mjeyj1blza6ov
Template:No redirect
10
1326
2884
2883
2020-09-29T19:18:25Z
Chrisb
1
1 revision imported
2883
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if: {{{{{|safesubst:}}}#invoke:Redirect|isRedirect|{{{1}}}}}
| <span class="plainlinks">[{{{{{|safesubst:}}}fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span>
| {{{{{|safesubst:}}}#if:{{{2|}}}|[[:{{{{{|safesubst:}}}FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{{{{|safesubst:}}}FULLPAGENAME:{{{1}}}}}]]}}
}}<noinclude>
{{documentation}}
</noinclude>
88pp68yq9b5ureiktx42orgunm1ai9m
Template:No result
10
1543
4734
4733
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4733
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="noresult"|{{{1|No result}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
7gzw933hwk3cvs32qknczp5e396s0au
Template:No substitution
10
1653
4954
4953
2020-10-11T05:50:41Z
Chrisb
1
1 revision imported
4953
wikitext
text/x-wiki
<noinclude>{{User:RMCD bot/subject notice|1=?|2=Template talk:No substitution#Requested move 24 July 2020 }}
</noinclude>{{Ombox
|type=notice
|text='''This template should {{em|not}} be [[Wikipedia:Substitution|substituted]].''' {{{1|}}}
}}<noinclude>
{{Documentation}}
</noinclude>
5g37i8bpxc4l6kjqugxayf9mc1ehjff
Template:Nobr
10
1617
4882
4881
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4881
wikitext
text/x-wiki
#REDIRECT [[Template:Nowrap]] {{R from template shortcut}}
h1jzp0ur4wqedz23vagbx5pgpbrkaw7
Template:Nocontest
10
1544
4736
4735
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4735
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background-color: #C5D2EA; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
no7fwlf9mmn7a5l0s0juq350o39a40q
Template:Noleak
10
1056
2344
2343
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2343
wikitext
text/x-wiki
<!--{{Noleak}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Noleak
| type = delete
| text = It has been identified that this article has had information about a [[music download]] of the album leak added to it. In accordance with the [[WP:ALBUM|WikiProject Albums]] guidelines, such a date is non-notable information and has been removed. See [[WP:ALBUMLEAK]] for further information.}}<!--{{Noleak}} end--><noinclude>
{{documentation}}
</noinclude>
dxkot4tmj59neqpvsv0txcfhr33l3mp
Template:Nom
10
1545
4738
4737
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4737
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FDD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no2"|{{{1|Nominated}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
a7ppwmp1z0ocysf2mbfdhhqiv0zr7go
Template:Non-album single
10
1546
4740
4739
2020-10-11T05:35:22Z
Chrisb
1
1 revision imported
4739
wikitext
text/x-wiki
<includeonly>{{n/a|non-album single}}</includeonly>
<noinclude>{{Documentation}}</noinclude>
5sga149hcddgyw3au5jkw2orab98lw9
Template:Non-free
10
1253
2738
2737
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2737
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Non-free
| small = {{{small|}}}
| type = content
| image = [[File:Copyright-problem.svg|50x40px|link=|alt=]]
| class = ambox-non-free
| sect = {{{1|}}}
| issue = '''may contain excessive or improper use of [[Wikipedia:Copyrights|non-free]] material.'''
| fix = Please review the use of non-free content according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations. {{#if:{{{talk|}}}||The [[{{TALKPAGENAME}}|talk page]] may have details.}}
| talk = {{{talk|}}}
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with improper non-free content
| all = All articles with improper non-free content
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
qadagj8pcqwhcmfj6xt7x79j09qqvv2
Template:Non-free-overuse
10
1057
2346
2345
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2345
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<noinclude>{{Confuse|Template:Nonfree}}</noinclude><!--{{Non-free}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Non-free-overuse
| type = content
| class = ambox-non-free
| image = [[Image:Copyright-problem.svg|50x40px|alt=|link=]]
| issue = This {{{1|article}}} '''contains excessive or improper use of [[Wikipedia:Copyrights|copyrighted]] material.'''
| fix = Please review the use of non-free media according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations. The [[{{TALKPAGENAME}}|talk page]] may have details. {{#if:{{{date|}}}|{{small|1=''({{{date}}})''}}}}
}}{{DMCA|Articles with improper non-free content|from|{{{date|}}}|All articles with improper non-free content}}<!--{{Non-free}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
f3fnsfvzdhabta3vxpss0wn1ijuq272
Template:Non-free-vio
10
1058
2348
2347
2020-09-29T19:17:41Z
Chrisb
1
1 revision imported
2347
wikitext
text/x-wiki
<noinclude>{{confuse|Template:Non-free}}</noinclude><!--{{Non-free|{{{1}}}|date={{{date}}}}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Non-free-vio
| type = content
| image = [[Image:Copyright-problem.svg|80x60px|alt=|link=]]
| issue = This {{{1|article}}} '''contains excessive or improper use of [[Wikipedia:Copyrights|copyrighted]] material.''' Please review the use of non-free media according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations.
|fix =Violating material may be removed at any time. The [[{{TALKPAGENAME}}|talk page]] may have details. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}}
}}<includeonly>{{#if:{{{date|}}}|[[Category:Articles with improper non-free content from {{{date}}}]]}}[[Category:Articles with improper non-free content]]</includeonly><!-- end non-free --><noinclude>
{{Documentation}}
</noinclude>
3jzv29ehi2lzm0iyr90pyafg4sa08r4
Template:Nonfree
10
1547
4742
4741
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4741
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #F9D; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="nonfree table-nonfree"|{{{1|Non-free}}}<noinclude>
|}
{{confuse|Template:Non-free}}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
bceyrd7bqt7vi7gec5m0lmu9iypp33p
Template:Nonpartisan
10
1548
4744
4743
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4743
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFFFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Nonpartisan}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- categories -->
</noinclude>
39vuuyv8o236h0sqlodej0g1ensrqh2
Template:Normalwraplink
10
1454
3212
3211
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3211
wikitext
text/x-wiki
<span class="wraplinks">[[{{{1}}}|{{{2|{{{1}}}}}}]]</span><noinclude>
{{Documentation}}
</noinclude>
eflclni0qb32qjzm0vixibjw5j8yqv8
Template:Nosubst
10
1654
4956
4955
2020-10-11T05:50:41Z
Chrisb
1
1 revision imported
4955
wikitext
text/x-wiki
#REDIRECT [[Template:No substitution]]
{{Redirect category shell|
{{R from move}}
}}
0au2yoidgltyhwaxf9ibudfi90znszl
Template:Not English
10
1247
2726
2725
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2725
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||listed=no|$B={{#ifeq:{{{ucfirst:{{{1}}}}}|English|<big>'''{{Error|Error: cannot translate from English to English.}}'''</big>
|{{Ambox
| name = Not English
| type = content
| class = ambox-not_English
| image = [[File:Translation to english arrow.svg|50px|Translation to english arrow icon]]
| text = '''This {{{2|{{#if:{{NAMESPACE}}|page|article}}}}} needs [[Wikipedia:translation|translation]] {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | from {{ucfirst:{{{1}}}}} to | into }} English.''' <br />
This {{{2|{{#if:{{NAMESPACE}}|page|article}}}}} is written in {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | {{ucfirst:{{{1}}}}} | a language other than English }}. If it is intended for readers from the {{#if:{{{1|}}}|{{ucfirst:{{{1}}}}} language community|community of that language}}, it should be contributed to the {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | [[:{{lang2iso|{{{1}}}}}:{{!}}{{ucfirst:{{{1}}}}} Wikipedia]] | Wikipedia in that language }}. See the [[meta:List of Wikipedias|list of Wikipedias]].{{#if:{{NAMESPACE}}||
Please see '''[[Wikipedia:Pages needing translation into English#{{FULLPAGENAME}}|this {{#if:{{NAMESPACE}}|page|article}}'s entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion. If the {{{2|article}}} is not [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewritten in English] {{#ifeq:{{{2|}}}|section|it may be deleted|within the next two weeks it will be [[Wikipedia:{{#if:{{NAMESPACE}}|Miscellany for deletion|Articles for deletion}}|listed for deletion]] and/or moved to the {{#if: {{{1|}}} | {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | [[:{{lang2iso|{{{1}}}}}:{{!}}{{ucfirst:{{{1}}}}} Wikipedia]] | {{ucfirst:{{{1}}}}} Wikipedia }} | Wikipedia in its current language }}}}.}}
{{#if: {{Mw lang|fn=is_name|{{{1}}}}} | ----If you want to assess this article, you may want to check its [http://translate.google.com/translate?u={{fullurl:{{FULLPAGENAME}}}}&sl={{lang2iso|{{{1|English}}}}}&tl=en&hl=en Google translation]. However, '''please do not add an automated translation to the article''', since these are generally of very poor quality.}}
{{#ifeq: {{yesno|{{{listed|no}}}}}|yes||{{#if:{{NAMESPACE}}||{{pnt notice|{{{1|unknown}}}}}}}}}
| cat = {{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|Wikipedia articles needing translation}}}}}
}}}}<includeonly>{{main other|{{NOINDEX}}}}</includeonly>}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
o5gbrtkealoanmw2ahvxrywekv9rkn7
Template:Not yet
10
1549
4746
4745
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4745
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#ffd;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" | {{{1|Not Yet}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
ho2thbjxyyxm7jo7opts01bewbf5mt4
Template:Notability
10
1120
2472
2471
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2471
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Notability}} begin-->{{Ambox
| name = Notability
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Notability
| removalnotice = yes
| issue = The topic of this article '''may not meet Wikipedia's {{#switch: {{lc:{{#invoke:String|replace|{{{1}}}|s$|||false}}}}<!--strip trailing "s"-->
| notability = [[Wikipedia:GNG|general notability guideline]]
| astro
| astronomical object = [[Wikipedia:Notability (astronomical objects)|notability guideline for astronomical objects]]
| notability (people)
| bio
| biography
| biographie<noinclude><!--trailing "s" on input is stripped, this line matches "biographies"--></noinclude> = [[Wikipedia:Notability (people)|notability guideline for biographies]]
| prof
| notability (academics)
| academic = [[Wikipedia:Notability (academics)|notability guideline for academics]]
| notability (books)
| book = [[Wikipedia:Notability (books)|notability guideline for books]]
| notability (events)
| event = [[Wikipedia:Notability (events)|notability guideline for events]]
| notability (films)
| movie
| film = [[Wikipedia:Notability (films)|notability guideline for films]]
| notability (television)
| television
| TV
| tv = [[Wikipedia:TVSERIES|notability guideline for television]]
| notability (companies and corporations)
| institution
| company
| companie<noinclude><!--trailing "s" on input is stripped, this line matches "companies"--></noinclude>
| org
| organisation
| corp
| organization = [[Wikipedia:Notability (organizations and companies)|notability guidelines for companies and organizations]]
| product = [[Wikipedia:Notability (organizations and companies)#Products and services|notability guidelines for products and services]]
| notability (fiction)
| fict
| fiction = [[Wikipedia:Notability|general notability guideline]]
| list = [[Wikipedia:Notability#Stand-alone lists|notability guideline for stand-alone lists]]
| geo
| geographic
| geography
| place = [[Wikipedia:Notability (geographic features)|notability guideline for geographic features]]
| notability (music)
| music = [[Wikipedia:Notability (music)|notability guideline for music]]
| avoid neologism
| neologism = [[Wikipedia:Avoid neologisms|notability guideline for neologisms]]
| sport = [[Wikipedia:Notability (sports)|notability guideline for sports and athletics]]
| notability (numbers)
| number = [[Wikipedia:Notability (numbers)|notability guideline for numbers]]
| notability (web)
| web = [[Wikipedia:Notability (web)|notability guideline for web content]]
| #default = [[Wikipedia:Notability|general notability guideline]]
}}'''.
| fix = Please help to establish notability by citing [[Wikipedia:Reliable sources|reliable secondary sources]] that are [[Wikipedia:Identifying and using independent sources|independent]] of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be established, the article is likely to be [[Wikipedia:Merging|merged]], [[Wikipedia:Redirect|redirected]], or [[Wikipedia:Deletion policy|deleted]].<br /><small>{{find sources mainspace}}</small>
| date = {{{date|}}}
| cat = Articles with topics of unclear notability
| all = All articles with topics of unclear notability
| all2 = {{#switch: {{lc:{{{1}}}}}
| astro = Astronomical object articles with topics of unclear notability
| notability (people)
| bio
| biography
| biographies = Biography articles with topics of unclear notability
| prof
| notability (academics)
| academics = Academics articles with topics of unclear notability
| notability (books)
| book
| books = Book articles with topics of unclear notability
| notability (events)
| event
| events = Event articles with topics of unclear notability
| notability (films)
| film
| movie
| movies
| films = Film articles with topics of unclear notability
| notability (television)
| television
| TV
| tv = Television articles with topics of unclear notability
| notability (companies and corporations)
| corp
| companies = Company articles with topics of unclear notability
| institutions
| org
| organisations
| organizations = Organization articles with topics of unclear notability
| product
| products = Products articles with topics of unclear notability
| notability (fiction)
| fict
| fiction = Fiction articles with topics of unclear notability
| list
| lists = Lists with topics of unclear notability
| geo
| geographic
| geography
| place
| places = Geography articles with topics of unclear notability
| notability (music)
| music = Music articles with topics of unclear notability
| avoid neologisms
| neologisms = Neologisms articles with topics of unclear notability
| sport
| sports = Sport articles with topics of unclear notability
| notability (numbers)
| numbers = Number articles with topics of unclear notability
| notability (web)
| web = Web articles with topics of unclear notability
}}
}}<!--{{Notability}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
2r25kmg81en71tb99856frtbfjdqkn3
Template:Nothaweng
10
1059
2350
2349
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2349
wikitext
text/x-wiki
<!--{{Nothaweng}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Nothaweng
| image = [[Image:Hawaii_islands.jpg|50x40px]]
| text = This article '''may contain [[Hawaiian language]] words and proper names that omit or make improper use of [[ʻokina]] and [[kahakō]]'''. Please edit the article to reflect standard [[Hawaiian language#Orthography (writing system)|Hawaiian orthography]].
}}<!--{{Nothaweng}} end--><noinclude>
</noinclude>
ega2fc2m87vqwdvlsuasja6tdzifd8p
Template:Notice
10
1264
2760
2759
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2759
wikitext
text/x-wiki
{{Mbox
| name = Notice
| demospace = {{{demospace|}}}
| style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||width:80%;}} {{{style}}} }}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = notice
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
etnai90pwmwvjm60vm69f5gjdnc8xy4
Template:Nowrap
10
1550
4748
4747
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4747
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
Template:Ns has subpages
10
1618
4884
4883
2020-10-11T05:39:03Z
Chrisb
1
1 revision imported
4883
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
0pg457y46td6p53rdt8tyc76jeg9pa8
Template:Obituary
10
1061
2354
2353
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2353
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Obituary}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Obituary
| type = content
| issue = This {{{1|article}}} '''reads like {{#ifeq:{{#invoke:string|replace|{{{tone|obituary}}}|^[AaEeIiOoUu].*|1|plain=false}}|1|an|a}} [[{{{tone|obituary}}}]]'''. [[Wikipedia:What Wikipedia is not#MEMORIAL|Wikipedia is not a memorial site]] and articles should have a [[Wikipedia:Neutral point of view|neutral point of view]].
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit it] to [[Wikipedia:NPOV tutorial|help achieve neutrality]], or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
| removalnotice = yes
}}{{DMCA|Articles needing POV-check|from|{{{date|}}}}}<!--{{Obituary}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
cvb2ka4k0okxb0aqzwwig87v67spnaw
Template:Off topic
10
1205
2642
2641
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2641
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Off topic}} begin-->{{Ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = This section '''may [[Wikipedia:Guide to writing better articles#Stay on topic|stray from the topic]] of the article'''{{#if:{{{1|}}}| into the topic of another article, ''[[{{{1}}}]]''}}.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this section] or discuss this issue on the [[{{TALKPAGENAME}}#{{{2|}}}|talk page]].
| date = {{{date|}}}
| cat = Wikipedia articles that may have off-topic sections
| all = All articles that may have off-topic sections
| name = Off topic
}}<!--{{Off topic}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
e0d3w70fp4x3dey5ceroqesmmuagnyf
Template:Okay
10
1551
4750
4749
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4749
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"| {{{1|Neutral}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
nwqfatr5k4pv84ct4d4zfubuukcyj8w
Template:Ombox
10
876
1984
1983
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1983
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
1o93yrjvq6v2ylug2k0uaaltljurje2
Template:Ombox/doc
10
1327
2886
2885
2020-09-29T19:18:26Z
Chrisb
1
1 revision imported
2885
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use| 711490 }}
{{used in system}}
{{Lua|Module:Message box}}
<!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE -->
{{Mbox templates (small)}}
This is the {{tl|Ombox}} (['''O''']ther pages ['''m''']essage ['''box''']) metatemplate.
It is used to build message box templates for pages of the types User, Wikipedia, MediaWiki, Template, Help, Portal and any new future namespaces; i.e. for page types not covered by {{tl|Ambox}}, {{tl|Tmbox}}, {{tl|Imbox}} or {{tl|Cmbox}}. Thus, it should ''not'' be used for boxes for articles, talk pages, image pages or category pages.
This template works almost exactly like {{tl|Ambox}} and uses the same parameters.
=== Introduction ===
{{anchor|We are deploying!|Intro}}
As noted above, this template should be used for message boxes that are not articles, talk pages, image pages or category pages. Some message boxes for other pages may incorrectly use one of those four mentioned. Feel free to convert any message boxes used on "other pages" to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help.
When this template is used to build other pages message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here.
=== Usage ===
Simple usage example:
<pre>
{{ombox
| text = Some text.
}}
</pre>
{{ombox | text = Some text.}}
{{clear}}
Complex example:
<pre>
{{ombox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
</pre>
{{ombox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
{{clear}}
=== Other pages message box types ===
The following examples use different '''type''' parameters but use no image parameters; thus, they use the default images for each type.
{{ombox
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion templates.
}}
{{ombox
| type = delete
| text = type=<u>delete</u> – Deletion templates.
}}
{{ombox
| type = content
| text = type=<u>content</u> – Major warnings and problems, such as {{tl|high-use}}.
}}
{{ombox
| type = style
| text = type=<u>style</u> – Minor warnings and problems. {{tl|Intricate template}} should perhaps use this type.
}}
{{ombox
| type = notice
| text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary. Such as {{tl|guideline}} and {{tl|Wikipedia how-to}}.
}}
{{ombox
| type = move
| text = type=<u>move</u> – Merge, split, rename and transwiki messages and proposals.
}}
{{ombox
| type = protection
| text = type=<u>protection</u> – Protection templates such as {{tl|pp}} when shown on "other pages".
}}
=== Examples ===
Some examples using the "notice" style:
{{ombox
| text = No type and no image given ('''default''')
}}
{{ombox
| image = none
| text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area.
}}
{{ombox
| image = [[File:Gnome globe current event.svg|42px]]
| imageright = [[File:Nuvola apps bookcase.svg|40px]]
| text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki> <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki>
}}
{{ombox
| type = notice
| image = [[File:Blue check.svg|30px]]
| imageright = {{shortcut|WP:SHORT}}
| text =
'''This page documents an English Wikipedia [[Wikipedia:Policies and guidelines|guideline]].''' It is a generally accepted standard that editors should follow, though it should be treated with [[Wikipedia:Use common sense|common sense]] and the [[Wikipedia:Ignore all rules|occasional exception]]. When editing this page, please ensure that your revision reflects [[Wikipedia:Consensus|consensus]]. When in doubt, discuss on the [[{{TALKPAGENAME}}|talk page]].
}}
{{ombox
| type = notice
| image = [[File:Nutshell.png|30px]]
| text =
'''This page in a nutshell:''' This template is used to build message boxes for all pages that are ''not'' articles, talk pages, image pages or category pages.
}}
=== Parameters ===
List of all parameters:
<pre>
{{ombox
| name = name of the template
| type = speedy / delete / content / style / notice / move / protection
| image = none / [[File:Some image.svg|40px]]
| imageright = [[File:Some image.svg|40px]]
| style = CSS values
| textstyle = CSS values
| plainlinks = no
| text = The message body text.
| small = {{{small|}}} / yes
| smallimage = none / [[File:Some image.svg|30px]]
| smallimageright = none / [[File:Some image.svg|30px]]
| smalltext = A shorter message body text.
}}
</pre>
'''name'''
:(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts.
'''type'''
:If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a gray border.
'''image'''
:'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>image = [[File:Crystal package settings.png|40px]]</nowiki></code>
:'''none''' = Means that no image is used.
'''imageright'''
:'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
'''style'''
:Optional [[Cascading Style Sheets|CSS]] values used by the entire message box table. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example:
::<code>style = margin-bottom: 0.5em;</code>
'''textstyle'''
:Optional [[Cascading Style Sheets|CSS]] values used by the text cell. For example:
::<code>textstyle = text-align: center;</code>
'''plainlinks'''
:Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
'''text'''
:The message body text.
==== The small parameters ====
{{ombox
| small = yes
| text = small = yes
}}
{{ombox
| type = style
| small = yes
| text = type = style <br> small = yes
}}
'''small'''
:'''yes''' = Makes it a smaller right floating message box. This also makes the default images smaller. Note that any data fed to the '''smallimage''', '''smallimageright''' and '''smalltext''' parameters is only used if "small=yes". To make it so your template also understands the small parameter you can use this code:
::<code><nowiki>small = {{{small|}}}</nowiki></code>
{{ombox
| small = yes
| image = [[File:Replacement filing cabinet.svg|50px]]
| smallimage = [[File:Replacement filing cabinet.svg|32px]]
| text =
small = yes <br> image = <nowiki>[[File:Replacement filing cabinet.svg|50px]]</nowiki> <br> smallimage = <nowiki>[[File:Replacement filing cabinet.svg|32px]]</nowiki>
}}
'''smallimage'''
:'''No parameter''' = If no '''smallimage''' parameter is given then this template falls back to use the '''image''' parameter. If the '''image''' parameter also is empty then a small default image is used.
:'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example:
::<code><nowiki>smallimage = [[File:Replacement filing cabinet.svg|30px]]</nowiki></code>
:'''none''' = Means that no image is used. This overrides any image fed to '''image''', when "small=yes".
{{ombox
| small = yes
| imageright = [[File:Nuvola apps bookcase.png|50px]]
| smallimageright = none
| text =
small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.png|50px]]</nowiki> <br> smallimageright = none
}}
'''smallimageright'''
:'''No parameter''' = If no '''smallimageright''' parameter is given then this template falls back to use the '''imageright''' parameter. If the '''imageright''' parameter also is empty then no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example:
::<code><nowiki>smallimageright = [[File:Nuvola apps bookcase.png|30px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
:'''none''' = Means that no right side image is used. This overrides any image fed to '''imageright''', when "small=yes".
'''smalltext'''
:A shorter version of the message body text. If no '''smalltext''' parameter is given then this template falls back to use the '''text''' parameter.
=== Technical details ===
If you need to use special characters in the text parameter then you need to escape them like this:
<pre>
{{ombox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</pre>
{{ombox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
This template uses the ombox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable.
The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
For more technical details see the [[Template talk:Ombox|talk page]]. Since this template works almost exactly like {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}} and {{tl|cmbox}} their talk pages and related pages might also contain more details.
===See also===
{{Mbox templates see also}}
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Mbox and messagebox templates]]
[[Category:Exclude in print]]
}}</includeonly>
qubl8w8x0mp5jhtz576u5saz38hti3b
Template:One source
10
942
2116
2115
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2115
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = One source
| type = content
| class = ambox-one_source
| image = [[File:Question book-new.svg|50x40px]]
| issue = {{{text|This {{{1|article}}} '''relies largely or entirely on a single [[Wikipedia:Reliable sources|source]]'''.}}}
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by introducing [[Wikipedia:Citing sources|citations]] to additional sources.<br /><small>{{find sources mainspace}}</small>
| talk = {{{talk|#}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}
}}<noinclude>
{{Documentation}}
</noinclude>
pz004apjc82681sjlk7petx2844ivpn
Template:Only primary sources
10
1241
2714
2713
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2713
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Only primary sources
| type = content
| image = [[File:Question book-new.svg|45px|link=]]
| issue = This {{#ifeq: {{{1|}}} | section | section | {{#ifeq: {{NAMESPACE}} | | article | page}} }} '''only references primary sources'''.
| fix = Please help improve this by adding [[WP:No original research#Primary, secondary, and tertiary sources|secondary or tertiary sources]].<br/><small>{{find sources mainspace}}</small>
| date = {{{date|}}}
| removalnotice = yes
| cat = Articles lacking reliable references
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
odhxlnjiljs2956qr3jww2679lq5vlr
Template:Operational
10
1552
4752
4751
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4751
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #aaccff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-success" | {{{1|Operational}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
gox70asf3sev7e3k83jvio753skewic
Template:Optional
10
1553
4754
4753
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4753
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ddffdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}"|{{{1|Optional}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
1dkkptn2jwnssn9zzn3iwa1266aoxgr
Template:Original research
10
926
2084
2083
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2083
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Original research
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Original_research
| small = {{{small|}}}
| issue = This {{{part|{{{1|article}}}}}} '''possibly contains [[Wikipedia:No original research|original research]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by [[WP:Verifiability|verifying]] the claims made and adding [[Wikipedia:Citing sources#Inline citations|inline citations]]. Statements consisting only of original research should be removed.
| removalnotice = yes
| talk = {{{discuss|}}}
| cat = Articles that may contain original research
| all = All articles that may contain original research
| date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
h4rb2enm9mr8ab9ar5ujrlfx4q761yv
Template:Orphan
10
944
2120
2119
2020-09-29T19:17:26Z
Chrisb
1
1 revision imported
2119
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B={{draft other||{{Ambox
| name = Orphan
| type = style<!--Style issues, such as {{cleanup}} and {{underlinked}}-->
| class = ambox-Orphan
| style = {{#switch: {{{date|}}} | {{Monthyear}} = | {{Monthyear-1}} = | display: none}}<!--Optional CSS value, specifies the style used by the entire message box table-->
| image = [[File:Wiki letter w.svg|50x40px]]
| all = All orphaned articles
| sect = article
| text = '''is an [[Wikipedia:Orphan|orphan]], as no other articles [{{fullurl:Special:Whatlinkshere|target={{PAGENAMEE}}&namespace=0}} link to it]'''. Please [[Help:Link|introduce links]] to this page from <span class="plainlinks">[//en.wikipedia.org/w/index.php?title=Special%3ASearch&redirs=1&search={{PAGENAMEU}}&fulltext=Search&ns0=1&title=Special%3ASearch&advanced=1&fulltext={{PAGENAMEU}} related articles]</span>; try the [//edwardbetts.com/find_link?q={{PAGENAMEE}} Find link tool] for suggestions.
| cat = {{#if:{{{att|}}}|Attempted de-orphan|Orphaned articles}}
| date = {{#if:{{{att|}}}| {{{att}}} | {{{date|}}} }}
}}
}}
}}<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{documentation}}
</noinclude>
3bekp6vwv2jw1zisvuvy75hb2qwzur1
Template:Over-coverage
10
1254
2740
2739
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2739
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Over-coverage}} begin-->{{Ambox
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| name = Over-coverage
| type = content
| class = ambox-over_coverage
| image = [[File:ambox_globe_content.svg|50x40px|Globe icon|link=]]
| issue = The examples and perspective in this {{{part|{{{1|article or section}}}}}} '''might have an extensive [[Wikipedia:WikiProject Countering systemic bias|bias]] or disproportional coverage''' towards {{{region|one or more specific regions}}}.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with disproportional geographic scope
}}<!--{{Over-coverage}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
8uxrm2i9rv5qsbw000yyvux593tvg48
Template:Over-quotation
10
1069
2370
2369
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2369
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Over-quotation}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Over-quotation
| type = style
| issue = This {{#if:{{{section|}}}|section|{{{1|article}}}}} '''contains [[Wikipedia:Manual_of_Style#Quotations|{{#if:{{{many|}}}|too many|{{#if:{{{lengthy|}}}|overly lengthy|{{#if:{{{both|}}}|too many and overly lengthy|too many or overly lengthy}}}}}} quotations]] for an encyclopedic entry'''.
| fix = Please [[Wikipedia:Writing better articles|help improve the article]] by presenting facts as a [[Wikipedia:Neutral point of view|neutrally worded]] summary with [[Wikipedia: Citing sources|appropriate citations]]. Consider transferring direct quotations to [[Wikiquote]].
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Over-quotation}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLACE LANGUAGES AND CATS ON /doc PAGE, NOT HERE --></noinclude>
6yzkck8m41o1x6e8n7q17fzz1utu1uu
Template:Overcoloured
10
1070
6772
2372
2023-02-27T02:15:33Z
LastCelebration
905
Remove references to Wikipedia and its pages in imported templates across the web's wikis
6772
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Overcoloured}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Overcoloured
| type = style
| image = [[File:Accessibility template icon 2.svg|40px|Accessibility icon]]
| issue = This {{{1|article}}} '''may overuse or misuse colo{{#if:{{{US|}}}||u}}r, making it hard to understand for colo{{#if:{{{US|}}}||u}}r-blind users'''{{ #if:{{{reason|}}} |. {{{reason}}} }}.
| fix = Please remove or fix instances of distracting or hard-to-read colo{{#if:{{{US|}}}||u}}rs or remove colo{{#if:{{{US|}}}||u}}red links that may impede user ability to distinguish links from regular text, or colo{{#if:{{{US|}}}||u}}r links for purely aesthetic reasons.
| date = {{{date|}}}
}}{{DMCA|{{SITENAME}} articles with colour accessibility problems}}<!--{{Overcoloured}} end-->
}}<noinclude>{{Documentation}}</noinclude>
d5thwfqr0i3evqfsixnu7dju26xhnwx
Template:Overlinked
10
1071
2374
2373
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2373
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Overlinked}} begin-->{{Ambox
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| name = Overlinked
| type = style
| issue = This {{{1|article}}} '''may have too many [[Wikipedia:Manual of Style/Linking|links to other articles]], and could require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]]'''.
| fix = Per the [[Wikipedia:OVERLINK|Wikipedia style guidelines]], please remove duplicate links, and any links that are not relevant to the context.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with too many wikilinks
| all = All articles with too many wikilinks
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
}}<!--{{Overlinked}} end-->
}}<noinclude>
{{Documentation|content=
{{Twinkle standard installation}}
== Usage ==
Please put at the top of the page, adding the date in this manner:
{{Tlx|Overlinked||date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
:To identify an individual ''section'' of an article: {{Tlx|Overlinked|'''section'''|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
This template sorts articles into [[:Category:Articles with too many wikilinks]] and [[:Category:Articles covered by WikiProject Wikify]].
To avoid template clutter, please use this only in cases of extremely excessive numbers of links. (Less severe cases should be noted on the talk page or simply addressed when noticed.)
==See also==
* {{Tl|External links}}
* {{Tl|No more links}}
[[Category:Internal link maintenance templates]]
[[Category:Cleanup templates]]
}}</noinclude>
4athbxcykpv3k0u7mvqkc7hyq7jmsit
Template:Overly detailed
10
1072
2376
2375
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2375
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Overly detailed}} begin-->{{Ambox
| name = Overly detailed
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-overly_detailed
| sect = {{{1|}}}
| issue = '''may contain an excessive amount of intricate detail that may interest only a particular audience'''. {{#if:{{{details|}}}|'''Specifically, {{{details}}}'''.}}
| fix = Please help by [[Wikipedia:Content forking#Article_spinoffs: .22Summary style.22 meta-articles and summary sections|spinning off]] or [[Wikipedia:Handling trivia#Recommendations for handling trivia|relocating]] any relevant information, and removing excessive detail that may be against [[Wikipedia:What Wikipedia is not|Wikipedia's inclusion policy]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles that are excessively detailed
| all = All articles that are excessively detailed
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Overly detailed}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
cryn7ofu1pce9kv3x6b3tqbejgm5yf9
Template:POV
10
1121
2474
2473
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2473
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{POV}} begin-->{{Ambox
| name = POV
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-POV
| style = {{{style|}}}
| image = [[File:Unbalanced scales.svg|50x40px|link=]]
| issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|disputed]]'''.
| talk = {{{talk|#}}}
| fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]].
| removalnotice = yes
| date = {{{date|}}}
| cat = NPOV disputes
| all = All NPOV disputes
}}<!--{{POV}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
578b0ib6c7vi6ypr1qiepvk1kun99u5
Template:POV title
10
1286
2804
2803
2020-09-29T19:18:14Z
Chrisb
1
1 revision imported
2803
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = POV title
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Ambox scales.svg|50px|link=]]
| issue = '''The [[Wikipedia:Neutral point of view|neutrality]] of this article's ''title'', ''subject matter'', and/or the title's ''implications'', is [[Wikipedia:NPOV dispute|disputed]].''' {{#if:{{{alternate title|}}}|An alternative proposed title is ''{{{alternate title}}}.''}} {{#if:{{{alternate titles|}}}|Alternative proposed titles are: ''{{{alternate titles}}}''.}}
| fix = This is a dispute over the neutrality of viewpoints or other implications of the title, or the subject matter within its scope, rather than the actual facts stated. Wikipedia articles may have only one unique title; the use of the current title does not imply an endorsement of that title. Please see the relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{1|}}}|talk page]].
| cat = NPOV disputes
| all = Wikipedia title cleanup
| date = {{{date|}}}
| removalnotice = yes
}}
}}<includeonly>{{main other | [[Category:Wikipedia title cleanup (sorted by template)|P{{PAGENAME}}]] | }}</includeonly><noinclude>
{{Documentation}}
</noinclude>
paksbm4be6a54ruiyn5ywrh257qzbq6
Template:Page numbers improve
10
1073
2378
2377
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2377
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Page numbers improve}} begin-->{{Ambox
| name = Page numbers improve
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image = [[File:Text document with page number icon.svg|50x40px]]
| issue = This {{{1|article}}} cites its [[Wikipedia:Citing sources|sources]] but '''its [[Wikipedia:Citing sources#What information to include|page references]] ranges are too broad'''.
| fix = Page ranges should be limited to one or two pages when possible. You can [[Wikipedia:WikiProject Fact and Reference Check|help improve this article]] by introducing citations that are more precise.
| date = {{{date|}}}
| cat = Articles lacking page references
| removalnotice = yes
}}<!--{{Page numbers improve}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
s5bpsvym2ggvwvql6542m082b7kbz7b
Template:Page numbers needed
10
1074
2380
2379
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2379
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Page numbers needed}} begin-->{{Ambox
| name = Page numbers needed
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image = [[File:Text document with page number icon.svg|50x40px|alt=|link=]]
| issue = This {{{1|article}}} cites its [[Wikipedia:Citing sources|sources]] but '''does not provide [[WP:CITEHOW|page references]]'''.
| fix = You can [[Wikipedia:WikiProject Fact and Reference Check|help to improve it]] by introducing citations that are more precise.
| date = {{{date|}}}
| cat = Articles lacking page references
| removalnotice = yes
}}<!--{{Page numbers needed}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
p2ezshwoo2ka4j72whmifaotxaaadpu
Template:Paid contributions
10
1249
2730
2729
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2729
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Paid contributions}} begin-->{{Ambox
| name = Paid contributions
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| class = ambox-Paid-contributions
| image = [[File:Unbalanced scales.svg|50x40px|link=]]
| issue = ''' This {{{1|article}}} contains paid contributions. '''
| fix = It may require [[Wikipedia:cleanup|cleanup]] to comply with Wikipedia's content policies, particularly [[Wikipedia:Neutral point of view|neutral point of view]]. Please discuss further on the [[{{TALKPAGENAME}}|talk page]].
}}<!-- Do categories separately so they show in draft space, apparently that's wanted here -->{{Ambox/category
| date = <!-- See [[Wikipedia:Creating a dated maintenance category]] to set up -->
| cat = Wikipedia articles with paid content
}}<!--{{Paid contributions}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ca7oi7yoonmu0zn313cg2qzlx0gn1yw
Template:Para
10
1299
2830
2829
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2829
wikitext
text/x-wiki
<code class="nowrap" style="{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
hmpn0o2dcw0l4w04g6qz1zzyrrqvv3i
Template:Parameter names example
10
1665
4978
4977
2020-10-11T05:50:44Z
Chrisb
1
1 revision imported
4977
wikitext
text/x-wiki
<includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude>
{{hatnote|[[Template:Generic template demo]] and [[Template:Pnex]] redirect here.}}<!--(hatnote more noticeable here than within Documentation)-->
{{Documentation}}
</noinclude>
cjle1o3weadzp7u1v4l5clox5ri8mpi
Template:Partial
10
1554
4756
4755
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4755
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#FFB;vertical-align:middle;text-align:{{{align|center}}}; {{{style|}}}" class="table-partial"|{{{1|Partial}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
k0tc2n8ju0l8aekqawi6oy1tc6jyh0z
Template:Partial failure
10
1555
4758
4757
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4757
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: wheat; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-partial" | {{{1|Partial failure}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
4qu4k3wiofz9viga0fipa03f3wqltea
Template:Partial success
10
1556
4760
4759
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4759
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #FFB; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-partial" | {{{1|Partial success}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
j9bzbndzcte9k69kaqa9vfjpcwrensu
Template:Partisan sources
10
1075
2382
2381
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2381
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Partisan}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Partisan sources
| type = content
| image = [[File:Question book-new.svg|50x40px|alt=|link=]]
| issue = This {{{1|article}}} '''relies excessively on partisan sources.'''
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]].
| removalnotice = yes
| date = {{{date|}}}
}}<includeonly>{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}</includeonly><!--{{Partisan}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ffbkt1cenxzog386597sfodbd7g4jm1
Template:Peacock
10
1150
2532
2531
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2531
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Peacock}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Peacock
| type = content
| class = ambox-peacock
| issue = This {{{1|article}}} contains wording that '''[[Wikipedia:Manual of Style/Words to watch#Puffery|promotes the subject in a subjective manner]] without imparting real information'''.
| fix = Please remove or replace such wording and instead of making proclamations about a subject's importance, use facts and attribution to demonstrate that importance.
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Articles with peacock terms|from|{{{date|}}}|All articles with peacock terms}}<!--{{Peacock}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, please, not here! --></noinclude>
ld2nfksata4xvh8tqxfrhl1k4xfq9a1
Template:Pending
10
1557
4762
4761
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4761
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Pending}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
gausp9hdzytetnnocepdvkcil5aw5zs
Template:Perhaps
10
1558
4764
4763
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4763
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ffffdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="automatic table-automatic"| {{{1|Perhaps}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
1d4cyn17nhttt7zemwp1m0ux22de2c4
Template:Persian script needed
10
996
2224
2223
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2223
wikitext
text/x-wiki
{{Script needed
|language = Persian
|image = Farsi.svg
}}
f7kiamaw5ij4e4qa6uxe1fu7thw99g7
Template:Planned
10
1559
4766
4765
2020-10-11T05:35:23Z
Chrisb
1
1 revision imported
4765
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #dfdfff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-planned" | {{{1|Planned}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
8cfls4d2les76kmzhwfv4jvei8wswfk
Template:Plot notice
10
1076
2384
2383
2020-09-29T19:17:43Z
Chrisb
1
1 revision imported
2383
wikitext
text/x-wiki
<!--{{Current}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Plot notice
| type = notice
| image = [[File:{{Ambox globe current blue}}|42px]]
| text = This plot summary is '''currently experiencing a high level of editing activity'''. Details are being changed frequently at this time. Editors may wish to consider contributing to other aspects of the article such as production or reception.
}} <noinclude>
{{Documentation}}
</noinclude>
slvnfjvscs6mdm504dot416ujm1yfzi
Template:Pp-move-indef
10
1630
4908
4907
2020-10-11T05:50:20Z
Chrisb
1
1 revision imported
4907
wikitext
text/x-wiki
<includeonly>{{#invoke:Pp-move-indef|main}}</includeonly><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ige1ruktwt70sig3zmubaou2g290avd
Template:Pp-move-indef/doc
10
1646
4940
4939
2020-10-11T05:50:39Z
Chrisb
1
1 revision imported
4939
wikitext
text/x-wiki
{{Documentation subpage}}
{{Twinkle standard installation}}
{{lua|Module:Pp-move-indef}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE
-->
=== Usage ===
* Use {{tlx|{{lc:{{BASEPAGENAME}}}}}}
The template will '''add a category only''' and has '''no visible effect'''.
It should be used on high-visibility pages indefinitely move-protected. For articles move-protected due to disputes, including high-visibility articles, use {{tl|pp-move-dispute}}. For other articles move-protected due to vandalism, use {{tl|pp-move-vandalism}}. For other cases, use the generic {{tl|pp-move}}.
Please note that only [[Wikipedia:Administrators|administrators]] can protect pages.
:''This template will categorize articles, portals and templates into {{cl|Wikipedia indefinitely move-protected pages}}.''
:''Other pages will be categorized depending on their namespace into {{cl|Wikipedia move-protected project pages}}, {{cl|Wikipedia move-protected user and user talk pages}} and {{cl|Wikipedia move-protected talk pages}}.''
=== See also ===
[[Wikipedia:Protection policy]]
{{protection templates}}
<templatedata>
{
"params": {},
"description": "Indefinitely protects a high-visibility, important page from being moved."
}</templatedata>
<includeonly>{{Sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
[[Category:Top icon protection templates|{{PAGENAME}}]]
}}</includeonly>
2rdatng4raazxxjw2hnpuzl1a9rgz6b
Template:Primary sources
10
939
2110
2109
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2109
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|Primary sources}}}
| subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly>
| type = content
| class = ambox-Primary_sources
| image = [[file:Question book-new.svg|50x40px]]
| sect = {{#ifeq:{{{BLP}}}|yes|biographical article|{{{1|}}}}}
| talk = {{{talk|}}}
| issue = '''relies too much on [[Wikipedia:Verifiability|references]] to {{#ifeq:{{{BLP}}}|yes
|[[Wikipedia:Biographies of living persons#Misuse of primary sources|primary sources]]
|[[Wikipedia:No original research#Primary, secondary and tertiary sources|primary sources]]
}}'''.
| fix = Please improve this {{#ifeq:{{{BLP}}}|yes|biographical article|{{{1|}}}}} by adding [[Wikipedia:No original research#Primary, secondary and tertiary sources|secondary or tertiary sources]]. {{#ifeq:{{{BLP}}}|yes
|Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.
}}
| removalnotice = yes
| cat = Articles lacking reliable references
| date = {{{date|}}}
| all = All articles lacking reliable references
| cat2 = {{#ifeq:{{{BLP}}}|yes|BLP articles lacking sources}}
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
1dtky2wcgwetpwm3e3bem8s9mihy49q
Template:Pro and con list
10
1077
2386
2385
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2385
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Proandconlist}} begin-->{{ ambox
| name = Pro and con list
| type = style
| text = This {{{1|article}}} '''contains a [[Wikipedia:Pro and con lists|pro and con list]]''', which is sometimes inappropriate.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by integrating both sides into a more [[Wikipedia:Neutral point of view|neutral]] presentation, or remove this template if you feel that such a list is appropriate for this article.
| date = {{{date|}}}
| all = Articles containing pro and con lists
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Proandconlist}} end-->
}}<noinclude>{{Documentation}}</noinclude>
5ilbnpiu5vu3cjfag3ok6hurv3h77wc
Template:Proofreader needed
10
1078
2388
2387
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2387
wikitext
text/x-wiki
<!--{{Proofreader needed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Proofreader needed
| type = style
| image = [[Image:Translation to english arrow.svg|50px| ]]
| issue = This {{{what|article}}} has been '''[[Wikipedia:Translation|translated]]''' from {{#if:{{{2|}}}|{{#if:{{{1|}}}|the article '''[[:{{{2}}}:{{{1}}}|{{{1}}}]]'''|an article}} in {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | the {{#language:{{{2|}}}|en}} | another }} Wikipedia|a Wikipedia article in another language}}, and '''requires proofreading'''.
| fix = If you are confident enough in your fluency of English and {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | {{#language:{{{2|}}}|en}} | the original language }}, please feel free to {{#ifexist: Wikipedia:Translation/{{PAGENAME}} | [[Wikipedia:Translation/{{PAGENAME}}|join this translation]]. | join this translation.}}
| all = Wikipedia articles needing cleanup after translation {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | from {{#language:{{{2|}}}|en}} }}
}}<!--{{Proofreader needed}} end--><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude>
16kjjpsfxiyz393qg1sx342d0ypd214
Template:Proposed deletion/dated
10
1291
2814
2813
2020-09-29T19:18:15Z
Chrisb
1
1 revision imported
2813
wikitext
text/x-wiki
<templatestyles src="Proposed_deletion/styles.css" />
{{ambox
|type=delete
|image=none
|name=Proposed_deletion/dated
|class=mbox-prod
|text={{main other|demospace={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|main}}
|1={{#ifexist:Wikipedia:Articles for deletion/{{PAGENAME}}
|{{#if:{{{priorafd|{{{pafd|}}}}}}||{{error
|message=This article may have been previously nominated for deletion: [[Wikipedia:Articles for deletion/{{PAGENAME}}]] exists.
}}[[Category:Proposed deletions needing attention|D{{PAGENAME}}]]<br/>
}}}}
|2={{error
|message=Please use PROD only on articles.
}}[[Category:Proposed deletions needing attention|N{{PAGENAME}}]]<br/>
}}It is '''[[Wikipedia:Proposed deletion|proposed that this article be deleted]]'''{{#if: {{{concern|{{{reason|{{{1|}}}}}}}}}
| because of the following concern:<blockquote>{{{concern|{{{reason|{{{1|}}}}}}}}}{{#if:{{{nom|}}}| (<small>proposed by [[User:{{{nom}}}|{{{nom}}}]]</small>)}}</blockquote>
|{{#if:{{{nom|}}}| (<small>proposed by [[User:{{{nom}}}|{{{nom}}}]]</small>).|.}}
}}
<p class="verbose">If you can address this concern by [[Wikipedia:Editing policy|improving]], [[Wikipedia:Manual of Style|copyediting]], [[Help:Introduction to referencing with Wiki Markup/1|sourcing]], [[Wikipedia:Moving a page|renaming]], or [[Wikipedia:Merging|merging]] the page, '''please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]''' and do so. ''You may remove this message if you improve the article or otherwise object to deletion for any reason''. Although not required, you are encouraged to explain why you object to the deletion, either in your edit summary or on the talk page. If this template is removed, '''[[Wikipedia:Proposed deletion#Nominating|do not replace it]]'''.</p>
{{#ifexpr:{{#time:U}}>{{#time:U|{{{timestamp|30200000000000}}} +7 days}}
|{{color|red|This message has remained in place for seven days, so the article may be deleted without further notice.}}{{category handler
|all=[[Category:Expired proposed deletions]]
|nocat={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|true}}
}}
|The article may be deleted if this message remains in place for seven days{{#if:{{{timestamp|}}}
|, i.e., after {{#time:H:i, j F Y|{{{timestamp}}} +7 days}} (UTC)
|. Please check the {{history|{{FULLPAGENAME}}|history}} to see when this template was added
}}.
}}<br/>
<small class="verbose">If you created the article, please don't be offended. Instead, consider improving the article so that it is acceptable according to the [[Wikipedia:Deletion policy|deletion policy]].<br />{{find sources mainspace}}</small><span style="display:none; speak:none;"><!--
--><span id="delete-criterion">PROD</span><!--
--><span id="delete-reason">{{urlencode:Expired [[WP:PROD|PROD]], concern was: {{{concern|{{{reason|{{{1|}}}}}}}}} }}</span><!--
--><span id="raw-delete-reason">Expired <nowiki>[[WP:PROD|prod]]</nowiki>, concern was: {{{concern|{{{reason|{{{1|}}}}}}}}}</span><!--
--></span>
{{#ifeq:{{{help}}}|off||----
<small><span class="verbose prod-notify-code">'''Nominator:''' Please consider notifying the author/project: <code>{{tlsp|link subst=no|proposed deletion notify|2={{FULLPAGENAME}}|3=concern={{#tag:nowiki|{{{concern|{{{reason|{{{1|}}}}}}}}}}}}} <nowiki>~~~~</nowiki></code></span></small>}}{{#ifexpr:{{#time:U}}>{{#time:U|{{{timestamp|30200000000000}}} +7 days}}
|{{#ifeq:{{{help}}}|off|----|<br/>}}{{#if:{{{timestamp|}}}
|<small>'''Timestamp:''' {{{timestamp}}} {{#time:H:i, j F Y|{{{timestamp}}}}} (UTC)</small>
}}<br/><small><span class="sysop-show">'''Administrators:''' [{{fullurl:{{FULLPAGENAME}}|wpReason={{urlencode:Expired [[WP:PROD|PROD]], concern was: {{{reason|{{{1|{{{concern|}}}}}}}}}}}&action=delete}} delete]</span></small>
}}
}}{{category handler
|all={{#if:{{{timestamp|}}}
|[[Category:Proposed deletion as of {{#time:j F Y|{{{timestamp}}}}}]]
|[[Category:Proposed deletions needing attention|U{{PAGENAME}}]]
}}{{#ifexist:{{TALKPAGENAME}}||[[Category:Proposed deletions without a talk page]]}}[[Category:All articles proposed for deletion]]
|nocat={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|true}}
}}<includeonly>{{NOINDEX}}</includeonly><noinclude>
{{documentation}}
</noinclude>
dbklzpxh9rusgkzyxuaqh3491j4h0wx
Template:Proprietary
10
1560
4768
4767
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4767
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ddf; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-proprietary"|{{{1|[[Proprietary software|Proprietary]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Software table cell templates|Proprietary]]
</noinclude>
cvxcm7uux4xl9avnw934xgh9r8xrw95
Template:Prose
10
1116
2464
2463
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2463
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Prose}} begin-->{{Ambox
| name = Prose
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class= ambox-Prose
| issue= This {{{1|article}}} '''is in [[MOS:LIST|list]] format, but may read better as [[MOS:PROSE|prose]]'''.
| fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} converting this {{{1|article}}}], if appropriate. [[Help:Editing|Editing help]] is available.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Articles with sections that need to be turned into prose
}}<!--{{Prose}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
cr2p6xi2zm6t04ywk01nxqig4ociaje
Template:Protection templates
10
1647
4942
4941
2020-10-11T05:50:39Z
Chrisb
1
1 revision imported
4941
wikitext
text/x-wiki
{{Navbox
| state = {{{state|{{{1|<includeonly>collapsed</includeonly>}}}}}}
| class = <!--ombox ombox-protection-->
| title = {{c|Protection templates}}
| image<!--left--> = <!--[[File:Padlock.svg|40px|link=|alt=]]-->
| tracking = no <!-- keep all the documented templates out of the hlist tracking category -->
| list1 = {{Aligned table
|cols=5 |style=border:1px solid #aaa;font-size:110%;margin:0 auto<!-- 0.2em-->;
|colstyle=vertical-align:middle;padding-left:1.0em;<!--font-family:monospace;-->padding-right:1.0em;
|col1class=navbox-group |col1style=background:#ddf;font-family:sans-serif;
<!--row#-->
|row1header=on |row1style=background:none;padding-bottom:0.25em;border-bottom:1px solid #bbf;
|style1.1=background:none;border-bottom:1px solid #bbf;
<!-- 1 --> | | {{sans-serif|Edit}} | {{sans-serif|Move}} | {{sans-serif|[[Wikipedia:Pending changes|Pending changes]]}} | {{sans-serif|Upload}}
<!-- 2 --> | Generic
| {{tl|pp}} {{tl|pp-protected}}
| {{tlf|pp}} {{tl|pp-move}}
| {{tlf|pp}} {{tl|pp-pc}}
| {{tlf|pp}} {{tl|pp-upload}}
|row2style=background:whitesmoke;
<!-- 3 --> | [[Wikipedia:Biographies of living persons|BLP]] | {{tl|pp-blp}} | – | – | –
<!-- 4 --> | Dispute | {{tl|pp-dispute}} | {{tl|pp-move-dispute}} | – | –
|row4style=background:whitesmoke;
<!-- 5 --> | [[Wikipedia:Protection_policy#Extended_confirmed_protection|Extended confirmed protection]] | {{tl|pp-30-500}} | {{tl|pp-30-500}} | – | –
<!-- 6 --> | [[Main Page]] Image | {{tl|pp-main-page}} | – | – | –
|row6style=background:whitesmoke;
<!-- 7 --> | [[Wikipedia:Office actions|Office]]
| {{tl|pp-office}} {{tl|pp-reset}} {{tl|pp-office-dmca}}
| {{tlf|pp-office}} {{tlf|pp-reset}} {{tlf|pp-office-dmca}}
| {{tlf|pp-office}} {{tlf|pp-reset}} {{tlf|pp-office-dmca}}
| –
<!-- 8 --> | Sockpuppetry | {{tl|pp-sock}} | – | – | –
|row8style=background:whitesmoke;
<!-- 9 --> | High-visibility | {{tl|pp-template}} | – | – | –
<!-- 10 --> | Blocked user's talk | {{tl|pp-usertalk}} | – | – | –
|row10style=background:whitesmoke;
<!-- 11 --> | Vandalism | {{tl|pp-vandalism}} | {{tl|pp-move-vandalism}} | – | –
<!-- 12 --> | Talk page | {{tl|permanently protected}} {{tl|temporarily protected}} | – | – | –
|row12style=background:whitesmoke;
<!-- 13 --> | Long-term | {{tl|pp-semi-indef}} | {{tl|pp-move-indef}} | – | –
}}
| below = [[Module:Protection banner]]
}}<noinclude>
{{Documentation
| content =
{{Collapsible option |statename=optional |default=collapsed}}
[[Category:Wikipedia administration templates]]
[[Category:Documentation see also templates]]
}}<!--(end Documentation)-->
</noinclude>
pnp5urqhzbe1pscez7zisy3lnwjhswr
Template:Pseudo
10
1079
2390
2389
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2389
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Pseudo}} begin-->{{Ambox
| name = Pseudo
| class = ambox-pseudo
| type = content
| image = [[Image:Ambox scales.svg|50px|link=]]
| issue = This [[WP:BLP|biography of a living person]] devotes '''[[WP:PSEUDO|undue weight to one aspect of the subject's life]]'''.
| fix = It may require [[Wikipedia:cleanup|cleanup]] to present a [[Wikipedia:Neutral point of view|balanced look at the subject]], or may need to be renamed to clarify that it refers to one event. Please discuss further on the [[Talk:{{PAGENAME}}|talk page]].
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Pseudo}} end-->}}<noinclude>
{{Documentation}}
</noinclude>
mc1kz42p5tjgd9fq5xdwf0hj4lkobgx
Template:Puffery
10
1080
2392
2391
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2391
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Puffery
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-puffery
| sect = {{{1|}}}
| issue = '''may contain wording that [[Wikipedia:Wikipuffery|promotes the subject through exaggeration of unnoteworthy facts]]'''.
| talk = {{{talk|}}}
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by removing or replacing such wording.
| removalnotice = yes
| date = {{{date|}}}
| all = Articles with wikipuffery
}}
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
gy3dzkksgg32bgkuhi6j44qf87ofclv
Template:Quit
10
1561
4770
4769
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4769
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FCF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|Quit}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
[[Category:Big Brother (franchise) templates]]
</noinclude>
opfd1ua6cah1b5o38xvecrcmy862v2e
Template:R
10
1604
4856
4855
2020-10-11T05:38:58Z
Chrisb
1
1 revision imported
4855
wikitext
text/x-wiki
<includeonly>{{r/ref|{{{1}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p|{{{p1|{{{page|{{{page1|{{{pp|{{{pp1|{{{pages|{{{pages1|}}}}}}}}}}}}}}}}}}}}}}}}|{{{q|{{{q1|{{{quote|{{{quote1|}}}}}}}}}}}}}}<!--
-->{{#if:{{{2|}}}|{{r/ref|{{{2}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p2|{{{page2|{{{pp2|{{{pages2|}}}}}}}}}}}}|{{{q2|{{{quote2|}}}}}}}}<!--
-->{{#if:{{{3|}}}|{{r/ref|{{{3}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p3|{{{page3|{{{pp3|{{{pages3|}}}}}}}}}}}}|{{{q3|{{{quote3|}}}}}}}}<!--
-->{{#if:{{{4|}}}|{{r/ref|{{{4}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p4|{{{page4|{{{pp4|{{{pages4|}}}}}}}}}}}}|{{{q4|{{{quote4|}}}}}}}}<!--
-->{{#if:{{{5|}}}|{{r/ref|{{{5}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p5|{{{page5|{{{pp5|{{{pages5|}}}}}}}}}}}}|{{{q5|{{{quote5|}}}}}}}}<!--
-->{{#if:{{{6|}}}|{{r/ref|{{{6}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p6|{{{page6|{{{pp6|{{{pages6|}}}}}}}}}}}}|{{{q6|{{{quote6|}}}}}}}}<!--
-->{{#if:{{{7|}}}|{{r/ref|{{{7}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p7|{{{page7|{{{pp7|{{{pages7|}}}}}}}}}}}}|{{{q7|{{{quote7|}}}}}}}}<!--
-->{{#if:{{{8|}}}|{{r/ref|{{{8}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p8|{{{page8|{{{pp8|{{{pages8|}}}}}}}}}}}}|{{{q8|{{{quote8|}}}}}}}}<!--
-->{{#if:{{{9|}}}|{{r/ref|{{{9}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p9|{{{page9|{{{pp9|{{{pages9|}}}}}}}}}}}}|{{{q9|{{{quote9|}}}}}}}}<!--
-->{{#if:{{{10|}}}|<sup class="error" style="font-size:0.9em; line-height:0;">The template only supports up to 9 references ([[Template:R|edit it]]!).</sup> <!--
-->}}}}}}}}}}}}}}}}}}</includeonly><noinclude>{{documentation}}</noinclude>
ow3nzadiiajc7r5h53otz5a7c9m2zby
Template:R/doc
10
1619
4886
4885
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4885
wikitext
text/x-wiki
{{Documentation subpage}}
{{for2|[[WP:RCAT|redirect templates]]|[[Wikipedia:Template messages/Redirect pages]]|the [[WP:NAVBOX|navigation box]] regarding the letter [[R]]|[[Template:LetterR]]}}
{{Notice|This template may soon be obsolete and deprecated: [[m:WMDE Technical Wishes/Book referencing]] would make it unnecessary. This expansion of MediaWiki's built-in {{xtag|ref|s}} syntax is already working at some wikis, but has not yet been implemented at English Wikipedia, {{as of|2020|08|lc=y|post=.}}}}
==Intent==
Provides a compact shorthand for [[mw:Extension:Cite/Cite.php|<code><ref name="RefName" /></code> citation tags]], simplifying syntax so cutting code clutter.<ref group=note>Here we also add alliteration.</ref>
For example:
{| class="wikitable"
|-
! Using <code><ref></code>
| <code><nowiki>For example, fact<ref name=Bal/><ref name=Bam/><ref name=Bar/> and fact.<ref name=Bas/><ref name=Bay/><ref name=Baz/></nowiki></code>
''Displays as'': For example, fact<ref name=Bal/><ref name=Bam/><ref name=Bar/> and fact.<ref name=Bas/><ref name=Bay/><ref name=Baz/>
|-
! Instead using {{tnull|r}}
| <code><nowiki>For example, fact{{r|Bal|Bam|Bar}} and fact.{{r|Bas|Bay|Baz}}</nowiki></code>
''Displays as'': For example, fact{{r|RefName|Bam|Bar}} and fact.{{r|Bas|Bay|Baz}}
|}
{{tnull|r}} and <code><nowiki><ref></nowiki></code> can coexist on the same page, and like <code><nowiki><ref></nowiki></code>, {{tnull|r}} can be used with or without [[WP:list-defined references|list-defined references]]. In addition, a <code>|page=</code> or <code>|p=</code> parameter adds the functionality of {{t|rp}}:
{| class="wikitable"
|-
! Using {{tnull|r}} with<br/><code><nowiki>|p=</nowiki></code> parameter
| <code><nowiki>For example, fact.{{r|RefName|p=22}}</nowiki></code>
''Displays as'': For example, fact.{{r|RefName|p=22}}
|}
==Usage==
{| class="wikitable"
|-
! Usage
! Display
! Notes
|-
| <code><nowiki>{{r|RefName}}</nowiki></code>
| Text.{{r|RefName}}
| Equivalent to <code><nowiki><ref name="RefName" /></nowiki></code>.
|-
| <code><nowiki>{{r|RefName|p=100}}</nowiki></code>
<code><nowiki>{{r|RefName|pp=100}}</nowiki></code>
<code><nowiki>{{r|RefName|page=100}}</nowiki></code>
<code><nowiki>{{r|RefName|pages=100}}</nowiki></code>
| Text.{{r|RefName|p=100}}
| rowspan="2"| Adds a page number (or other location identifier) within the source.
The {{para|p}}, {{para|pp}}, {{para|page}}, and {{para|pages}} parameters are equivalent.
If the article cites only one location in a given source, reduce clutter by coding simply <code><nowiki>{{r|RefName}}</nowiki></code> and integrating the location into the main ''RefName'' citation.
|-
| <code><nowiki>{{r|RefName|p=10–14}}</nowiki></code>
<code><nowiki>{{r|RefName|pp=3, 6}}</nowiki></code>
<code><nowiki>{{r|RefName|page=§C}}</nowiki></code>
<code><nowiki>{{r|RefName|pages=Dust jacket}}</nowiki></code>
<code><nowiki>{{r|RefName|pages=para. 7}}</nowiki></code>
| Text.{{r|RefName|p=10–14}}
Text.{{r|RefName|pp=3, 6}}
Text.{{r|RefName|page=§C}}
Text.{{r|RefName|pages=Dust jacket}}
Text.{{r|RefName|pages=para. 7}}
|-
| <code><nowiki>{{r|RefName|Bam|Bar}}</nowiki></code>
| Text.{{r|RefName|Bam|Bar}}
| Equivalent to <code><nowiki>{{r|RefName}}{{r|Bam}}{{r|Bar}}</nowiki></code> or {{nobr|<code><nowiki><ref name=RefName/><ref name=Bam/><ref name=Bar/></nowiki></code>.}}
Up to nine references may be "bundled" this way. <!--NOBREAK ON WIDEST EXAMPLES ESTABLISHES COLUMN WIDTHS-->
|-
| {{nobr| <code><nowiki>{{r|1=RefName|2=Bam|3=Bar</nowiki><nowiki>|4=Bas|p1=100|p2=10–14|p4=§C}}</nowiki></code>}}
<code><nowiki>{{r|1=RefName|p1=100|2=Bam</nowiki><nowiki>|p2=10–14|3=Bar|4=Bas|p4=§C}}</nowiki></code>
| {{nobr| Text.{{r|RefName|Bam|Bar|Bas|p1=100|p2=10–14|p4=§C}}}}
| Equivalent to <code><nowiki>{{r|RefName|p=100}}{{r|Bam|p=10–14}}{{r|Bar}}{{r|Bas|p=§C}}</nowiki></code>.
In the example, not all references have pages; make sure that e.g. {{para|1}} matches {{para|p1}}
|-
| <code><nowiki>{{r|group=Notes|NtName}}</nowiki></code>
<code><nowiki>{{r|grp=Notes|NtName|NtCam}}</nowiki></code>
<code><nowiki>{{r|g=Notes|NtName|p=13}}</nowiki></code>
| Text.{{r|group=Notes|NtName}}
Text.{{r|grp=Notes|NtName|NtCam}}
Text.{{r|g=Notes|NtName|p=13}}
| The {{para|group}}, {{para|grp}}, and {{para|g}} parameters are equivalent and echo {{nobr|<code><nowiki><ref group=Notes name=NtName/></nowiki></code>.}}
If present, the parameter applies to all references in the template.
|-
| <code><nowiki>{{r|RefName|p=100|q=quote from the text}}</nowiki></code>
<code><nowiki>{{r|RefName|p=100|quote=quote from the text}}</nowiki></code>
|Text.{{r|RefName|p=100|q=quote from the text}}
|Makes sense only if {{para|p}} (or one of its synonyms) is present. {{para|quote}} (or {{para|q}}) underlines the superscript page number/{{wbr}}location identifier, signaling availability of a quote from the source, which pops up when the mouse is hovered over the underlined bit. Not compatible with raw apostrophe ('); use &apos; instead. Raw double quote (") works. Curved quotes are disfavored by [[MOS:STRAIGHT]].
|-
|<code><nowiki>{{r|1=RefName|2=Bam|3=Bar|4=Bas|p1=100|p2=10–14|p4=§C|q1=Quote from 100|q4=Quote from §C}}</nowiki></code>
||Text.{{r|1=RefName|2=Bam|3=Bar|4=Bas|p1=100|p2=10–14|p4=§C|q1=Quote from 100|q4=Quote from §C}}
|In the example, not all references have quotes; make sure that e.g. {{para|1}} and {{para|p1}} and {{para|q1}} all match.
|}
The ref names may be defined within a {{t|reflist}} (as illustrated below) or (in the more usual way) scattered throughout the article text using e.g. {{nobr|<code><nowiki><ref name=RefName>Reference text</ref></nowiki></code>}} or {{nobr|<code><nowiki>{{refn|name=RefName|Reference text}}</nowiki></code>}}.
<pre>
===References===
{{reflist|refs=
<ref name=RefName>Reference text.</ref>
<ref name=Bam>Bam reference text.</ref>
<ref name=Bar>Bar reference text.</ref>
<ref name=Bas>Bas reference text.</ref>
<ref name=Bay>Bay reference text.</ref>
<ref name=Baz>Baz reference text.</ref>
}}
===Notes===
{{reflist|group=Notes|refs=
<ref name=NtName>Note text.</ref>
<ref name=NtCam>Cam note text.</ref>
}}
</pre>
Resulting in:
<div style="padding-left:1em;border-left:1px solid #9ad">
{{fake heading|sub=3|References}}
{{reflist|refs=
<ref name=RefName>Reference text.</ref>
<ref name=Bam>Bam reference text.</ref>
<ref name=Bar>Bar reference text.</ref>
<ref name=Bas>Bas reference text.</ref>
<ref name=Bay>Bay reference text.</ref>
<ref name=Baz>Baz reference text.</ref>
}}
{{fake heading|sub=3|Notes}}
{{reflist|group=Notes|refs=
<ref name=NtName>Note text.</ref>
<ref name=NtCam>Cam note text.</ref>
}}
</div>
==TemplateData==
{{TemplateDataHeader}}
<templatedata>
{
"params": {
"1": {
"label": "Reference name 1",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string",
"required": true
},
"2": {
"label": "Reference name 2",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string",
"suggested": true
},
"3": {
"label": "Reference name 3",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string",
"suggested": true
},
"4": {
"label": "Reference name 4",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"5": {
"label": "Reference name 5",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"6": {
"label": "Reference name 6",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"7": {
"label": "Reference name 7",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"8": {
"label": "Reference name 8",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"9": {
"label": "Reference name 9",
"description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.",
"type": "string"
},
"group": {
"aliases": [
"g",
"grp"
],
"label": "Reference group",
"description": "The reference group of all the references displayed; see WP:REFGROUP for help.",
"type": "string",
"default": "Defaults to not being in a group.",
"suggested": true
},
"page1": {
"aliases": [
"p",
"page",
"pages",
"pp",
"p1",
"pages1",
"pp1"
],
"label": "Pages number(s): reference 1",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content",
"suggested": true
},
"q1": {
"aliases": [
"quote",
"q",
"quote1"
],
"label": "Quote: reference 1",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string",
"suggested": true
},
"page2": {
"aliases": [
"p2",
"pages2",
"pp2"
],
"label": "Pages number(s): reference 2",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q2": {
"aliases": [
"quote2"
],
"label": "Quote: reference 2",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page3": {
"aliases": [
"p3",
"pages3",
"pp3"
],
"label": "Pages number(s): reference 3",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q3": {
"aliases": [
"quote3"
],
"label": "Quote: reference 3",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page4": {
"aliases": [
"p4",
"pages4",
"pp4"
],
"label": "Pages number(s): reference 4",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q4": {
"aliases": [
"quote4"
],
"label": "Quote: reference 4",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page5": {
"aliases": [
"p5",
"pages5",
"pp5"
],
"label": "Pages number(s): reference 5",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q5": {
"aliases": [
"quote5"
],
"label": "Quote: reference 5",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page6": {
"aliases": [
"p6",
"pages6",
"pp6"
],
"label": "Pages number(s): reference 6",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q6": {
"aliases": [
"quote6"
],
"label": "Quote: reference 6",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page7": {
"aliases": [
"p7",
"pages7",
"pp7"
],
"label": "Pages number(s): reference 7",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q7": {
"aliases": [
"quote7"
],
"label": "Quote: reference 7",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page8": {
"aliases": [
"p8",
"pages8",
"pp8"
],
"label": "Pages number(s): reference 8",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q8": {
"aliases": [
"quote8"
],
"label": "Quote: reference 8",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
},
"page9": {
"aliases": [
"p9",
"pages9",
"pp9"
],
"label": "Pages number(s): reference 9",
"description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.",
"example": "\"2\", \"34–38\", \"inside cover\"",
"type": "content"
},
"q9": {
"aliases": [
"quote9"
],
"label": "Quote: reference 9",
"description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.",
"type": "string"
}
},
"description": "Provides a simple wrapper for up to nine consecutive <ref name=RefName/> citation tags that minimizes visual impact on the text which, along with the simpler syntax, increases code readability and ease of editing.",
"paramOrder": [
"group",
"1",
"page1",
"q1",
"2",
"page2",
"q2",
"3",
"page3",
"q3",
"4",
"page4",
"q4",
"5",
"page5",
"q5",
"6",
"page6",
"q6",
"7",
"page7",
"q7",
"8",
"page8",
"q8",
"9",
"page9",
"q9"
]
}
</templatedata>
==See also==
* [[Help:List-defined references]], which provides all the specifications for using List-defined references, especially with regard to naming references and groups.
* [[WP:CITESHORT|Shortened footnotes]] in [[Wikipedia:Citing sources]], which describes the most common way of citing multiple pages of the same source.
* {{tl|sfn}}, a template that implements the most common way of citing multiple pages of the same source.
* [[WP:CITEBUNDLE|Citation bundling]] in [[Wikipedia:Citing sources]], a recommended way of combining a list of several consecutive footnotes into a single footnote.
* [[Wikipedia:Footnotes]]
* [[Wikipedia:Citing sources]]
==Notes==
{{reflist|group=note}}
<includeonly>{{Sandbox other||
<!-- Categories go below this line, please; interwikis go to Wikidata, thank you! -->
[[Category:Footnote templates]]
[[Category:Inline templates]]
}}</includeonly>
625apzz1ck02epzug5nxxrmkn3dc5li
Template:R/ref
10
1620
4888
4887
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4887
wikitext
text/x-wiki
<includeonly>{{#tag:ref||name={{{1}}}|group={{{2}}}}}{{#if:{{{3}}}|<sup class="reference nowrap"><nowiki>:</nowiki><span {{#if:{{{4|}}}|style="border-bottom: 1px dashed;" title='"{{#tag:nowiki|{{#invoke:String|replace|{{trim quotes|s={{{4}}}}}|"|"}}}}"'}}>{{{3}}}</span></sup>}}</includeonly><noinclude>
{{documentation}}
</noinclude>
scr0fgblbhninwhssxfzty1wgn8iyyx
Template:RJL
10
1145
2522
2521
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2521
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| name = RJL
| type = style
| small = {{{small|}}}
| image = [[Image:Jct plate.svg|50x40px|link=|alt=]]
| issue = This {{{1|{{SUBJECTSPACE formatted}}}}} contains a bulleted list or table of intersections which '''should be presented in a properly formatted junction table.'''
| fix = Please consult [[WP:RJL|this guideline]] for information on how to create one. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can.
| date = {{{date|}}}
| cat = Wikipedia articles needing a junction list
| all = All pages needing cleanup
}}
}}<noinclude>
{{documentation}}
</noinclude>
95xszrnrsuvjm0vmgjkotfxzj0w5ebz
Template:Rank order
10
1122
2476
2475
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2475
wikitext
text/x-wiki
{{ ambox
| name = Rank order
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| text = This {{{1|table}}} may be more easily updated if the rank-order column (1,2,3) is [[Help:Sorting#Removing a rank column (1,2,3) from a table|removed]] and a '''[[Help:Sorting#Auto-ranking or adding a row numbering column (1,2,3) next to a table|row number column]]''' is added instead. [[Help:Sorting#Initial alphabetical sort versus initial sort by rank order|Alphabetical order]] may also help. See '''[[:Category:Articles with tables with fixed row numbers|examples here]].'''
| all = Tables that may need a separate rank column
}}<noinclude>{{doc|content=
The '''[[Template:Rank order]]''' displays a tag-box to offer advice about sorting of tables, such as either removing a rank column from a table, or adding a separate, static row number column (1,2,3) next to a table. See [[Help:Sorting]] for more info.
The template puts the article in this category: [[:Category:Tables that may need a separate rank column]].
==See also==
[[Category:List cleanup maintenance templates]]
}}</noinclude>
j4jpw2q67lw9azi1bhm74w9wp6d6pr7
Template:Rarely
10
1562
4772
4771
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4771
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FC8; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Rarely}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
enwka5vt5gj6621vwoozb8tgwuvcqvr
Template:Recategorize
10
1081
2394
2393
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2393
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Recategorize}} begin-->{{Ambox
| name = Recategorize
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = This article appears to [[WP:DIFFUSE|be both in categories to be diffused and in their subcategories]], or is in '''too many [[WP:CATS|categories]]''', and may need [[Wikipedia:Cleanup|cleanup]].
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this page] to make sure its categories are appropriate and meet Wikipedia's [[WP:STYLE|quality standards]].
| date = {{{date|}}}
| all = Too many categories
}}<!--{{Recategorize}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
lmv0dj990fs80uv03tvk7hvu84j67x9
Template:Recent death
10
1082
2396
2395
2020-09-29T19:17:44Z
Chrisb
1
1 revision imported
2395
wikitext
text/x-wiki
<!--{{Recent death}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Recent death
| type = notice
| image = [[File:{{Ambox globe current red}}|50x40px]]
| text = This article is being '''heavily edited''' because its subject{{#ifeq:{{{multiple}}}|yes|s|}} {{#ifeq:{{{multiple}}}|yes|have|has}} recently died. Knowledge about the circumstances of the death{{#ifeq:{{{multiple}}}|yes|s|}} and surrounding events may change rapidly as more facts come to light. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]], and the [{{fullurl:{{FULLPAGENAME}}|action=history}} most recent updates] to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
}}<includeonly>{{#if:{{NAMESPACE}}|<!-- don't categorize -->|[[Category:Recent deaths{{#if:{{{1|}}}|{{!}}{{{1}}}}}]]}}</includeonly><!--{{Recent death}} end--><noinclude>{{Documentation}}</noinclude>
rn7sdyr98q3rtzkt35u06zgk59mhice
Template:Recent death presumed
10
1083
2398
2397
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2397
wikitext
text/x-wiki
<!--{{Recent death presumed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Recent death presumed
| type = notice
| image = [[File:{{Ambox globe current red}}|50x40px]]
| text = '''This article is about [[Deaths in {{CURRENTYEAR}}|a person who has been presumed dead]].''' Some information, such as that pertaining to the circumstances of the person's presumed death and surrounding events, may change rapidly as more facts become known. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.
| removalnotice = yes
| fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].
}}<includeonly>{{#if:{{NAMESPACE}}|<!-- don't categorize -->|[[Category:Recent deaths|{{{1|{{PAGENAME}}}}}]]
}}</includeonly><!--{{Recent death presumed}} end--><noinclude>{{Documentation}}</noinclude>
j3qwdih3j74t45xlijf27xnx21httmv
Template:Recentism
10
1123
2478
2477
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2477
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Recentism}} begin-->{{Ambox
| name = Recentism
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| class = ambox-Recentism
| issue = This {{{1|article or section}}} '''appears to be [[Wikipedia:Recentism|slanted towards recent events]].'''
| fix = Please try to keep recent events in historical perspective and add more content related to non-recent events.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles slanted towards recent events
}}<!--{{Recentism}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
2dwj59gi9uayd15ooi6tx7kjyif7zy5
Template:Recently revised
10
1223
2678
2677
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2677
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ambox
| name = Recently revised
| type = style
| image = [[Image:Ambox clock yellow.svg|50x40px]]
| text = This {{{1|article}}} '''recently underwent a major revision or rewrite''' and may need further review. You can help Wikipedia by [[Wikipedia:Contributing FAQ|assisting in the revision]].
}}{{DMCA|Recently revised|from|{{{date|}}}}}<!--{{Recently revised}} end-->
}}<noinclude>{{Documentation}}</noinclude>
6skawyneub4zsx4tmds65tsdy6yo38s
Template:Refexample
10
1213
2658
2657
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2657
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| name = {{{name|Refexample}}}
| subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Ambox important.svg|50x40px|alt=]]
| smallimage = none
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''gives [[Template:Refexample#Self-sourcing_examples|self-sourcing popular culture examples]] without describing their significance in the context of the article.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] by [[Help:Introduction to referencing with Wiki Markup/1|adding citations to reliable sources]] that describe the examples' significance, and by removing less pertinent examples. [[Wikipedia:Verifiability|Unsourced]] or poorly sourced material may be challenged or removed.
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}<!--{{Refexample}} end-->
}}<noinclude>
{{documentation}}<!-- Please add categories and interwikis to the /doc subpage, thanks -->
</noinclude>
oyo28evrcg9j2rjo12d7jtx2bcr2n9h
Template:Refexample section
10
1214
2660
2659
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2659
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{refexample|section
| name = Refexample section
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| date = {{{date|}}}
| talk = {{{talk|}}}
| small = {{{small|}}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
mganyuir3kdjiuxsb9lpetfy7rx4j4v
Template:Refimprove-spam
10
1219
2670
2669
2020-09-29T19:18:04Z
Chrisb
1
1 revision imported
2669
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|Refimprove-spam}}}
| subst = {{{subst|<includeonly>{{subst:substcheck}}</includeonly>}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Question book-new.svg|50x40px|alt=]]
| issue = This {{{1|article}}} contains references that '''[[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|appear to be spam]]'''. Wikipedia is not a collection of links and should not be used for advertising.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Help:Introduction to referencing with Wiki Markup/1|adding citations to reliable sources]]. See [[Wikipedia:External links]] and [[Wikipedia:Spam]] for details.
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}<!--{{refimprove-spam}} end-->
}}
<noinclude>{{documentation}}</noinclude>
h9uo64jg4vyu445whxuq4hui8t691kx
Template:Reflist
10
1563
4774
4773
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4773
wikitext
text/x-wiki
<div class="reflist <!--
-->{{#if: {{{1|}}} {{{colwidth|}}}
| columns references-column-width
}}" style="<!--
-->{{#if: {{{1|}}}
| {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }}
| {{column-width|1={{{1}}}}}
| {{#switch:{{{1|}}}|1=|2={{column-width|1=30em}}|#default={{column-width|1=25em}}}} }}
| {{#if: {{{colwidth|}}}
| {{column-width|1={{{colwidth}}}}} }} }} list-style-type: <!--
-->{{{liststyle|{{#switch: {{{group|}}}
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group}}}
| #default = decimal}}}}};">
{{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude>
{{Documentation}}
</noinclude>
2k096ppl7lxbcjqmfluu9x2sc91rmzl
Template:Regional
10
1564
4776
4775
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4775
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#FFB;vertical-align:middle;text-align:{{{align|center}}}; {{{style|}}}" class="table-partial"|{{{1|Regional}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
2tcvxdd9hj7p8v0q9o1m4laootskqbk
Template:Release-candidate
10
1565
4778
4777
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4777
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #BFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-release-candidate"|{{{1|[[Software release life cycle#Release candidate|Release candidate]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
lvqtcgp19zgoxq85rdowamt8pag67gg
Template:Religious text primary
10
1084
2400
2399
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2399
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Religious text primary}} begin-->{{Ambox
| name = Religious text primary
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| issue = This {{{1|article}}} uncritically uses [[religious text|texts from within a religion or faith system]] '''without referring to [[WP:PSTS|secondary sources]] that critically analyze them.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding references to [[Wikipedia:Reliable sources|reliable secondary sources]], with multiple points of view.
| date = {{{date|}}}
| cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking reliable references}}
| all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking reliable references}}
| cat2 = Articles needing more viewpoints
| removalnotice = yes
}}<!--{{Religious text primary}} end-->
}}<noinclude>
{{Documentation}}
[[Category:Citation and verifiability maintenance templates|Religious text primary]]
</noinclude>
bofur6455i5b2tzg6qz1xxwz1w5n6vb
Template:Remove first word
10
1666
4980
4979
2020-10-11T05:50:44Z
Chrisb
1
1 revision imported
4979
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|pattern=^[^{{{sep|%s}}}]*{{{sep|%s}}}*|replace=|plain=false}}<noinclude>{{Documentation}}</noinclude>
q3rvb3vj9phd54s3yecz8846q90qfgo
Template:Rename section
10
1225
2682
2681
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2681
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Rename section
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-RenameSection
| issue = This {{{1|section}}}'s '''title may not reflect its contents or [[MOS:HEADINGS|does not comply with standard formatting]] and is requested to be renamed'''.
| talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}}
| fix = {{#if:{{{reason|}}} |''{{{reason}}}.''}} You can help by thinking of a more appropriate title [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} and renaming the section]. This may require further changes like splitting the section's contents.
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles with sections named inappropriately
| all = All articles with sections named inappropriately
}}
}}<noinclude>
{{Documentation}}
</noinclude>
feqmx0c7vkvahd4uxbtft68bl3t2331
Template:Repetition
10
1085
2402
2401
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2401
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Repetition}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Repetition
| type = style
| issue = This {{{1|article}}} '''may contain too much repetition or redundant language'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by merging similar text or removing repeated statements.
| date = {{{date|}}}
| removalnotice = yes
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Repetition}} end-->
}}<noinclude>{{Documentation}}</noinclude>
4oz35m1ktdrom1f62h6ouoxw7n4x17o
Template:Repetition section
10
1086
2404
2403
2020-09-29T19:17:45Z
Chrisb
1
1 revision imported
2403
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Repetition}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Repetition section
| type = style
| text = This {{{1|section}}} '''may contain content that is repetitive or redundant of text elsewhere in the article'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by merging similar text or removing repeated statements. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Repetition}} end-->
}}<noinclude>{{Documentation}}</noinclude>
5ve46ke3slekl7p58qx3ngfbizs0mxh
Template:Research paper
10
1185
2602
2601
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2601
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Research paper}} begin-->{{Ambox
| name = Research paper
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-essay-like
| issue = This {{{1|article}}} '''is written like a [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, textbook, or scientific journal|research paper or scientific journal]] that may use [[Wikipedia:Make technical articles understandable|overly technical terms]] or may not be written [[WP:TONE|like an encyclopedic article]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]].
| date = {{{date|}}}
| removalnotice = yes
| small = {{{small|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Research paper}} end-->
}}
<noinclude>
{{Documentation}}
</noinclude>
20nhkh2scatbtazf8rnr5q4zjelq1ck
Template:Review
10
1095
2422
2421
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2421
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Review}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Review
| type = style
| issue = This {{{1|article}}} '''reads like a [[Wikipedia:What Wikipedia is not#SOAPBOX|{{{2|review}}}]] rather than an encyclopedic description of the subject'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] to make it [[Wikipedia:Neutral point of view|neutral]] in tone and meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]].
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Review}} end-->
}}<noinclude>{{Documentation}}</noinclude>
lss84nj592lkvdbvpsbvd89yu020vgn
Template:Rewrite section
10
1147
2526
2525
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2525
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Cleanup rewrite|name=Rewrite section|1={{{reason|}}}|2=section|date={{{date|}}}|reason={{{reason|}}}}}
}}<noinclude>
[[Category:Cleanup templates]]
</noinclude>
l5rj27es8arn6h8tn2xz3k9y67h0zf8
Template:Rh
10
1566
4780
4779
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4779
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ececec; color: black; font-weight: bold; vertical-align: middle; text-align: {{{align|left}}}; {{{style|}}}" class="table-rh"<noinclude>
|}
{{documentation}}
</noinclude>
mve7sywn6k9a1gku1b6mknzfx9ohtmh
Template:Rh2
10
1567
4782
4781
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4781
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: {{Rh2/bgcolor}}; color: black; vertical-align: middle; text-align: {{{align|left}}}; font-weight: bolder; {{{style|}}}" scope="row" class="rh heading table-rh"<noinclude>| Row Header
|}
{{documentation}}
</noinclude>
758jl1phck3wij62oqkyvx123wtvvsr
Template:Rh2/bgcolor
10
1568
4784
4783
2020-10-11T05:35:24Z
Chrisb
1
1 revision imported
4783
wikitext
text/x-wiki
<nowiki>#edf</nowiki>
ryhrtp7orri5g8yezb22zknu80e8y65
Template:Rough translation
10
1190
2612
2611
2020-09-29T19:18:00Z
Chrisb
1
1 revision imported
2611
wikitext
text/x-wiki
<!--{{Rough translation}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates]]</includeonly>|}}{{Ambox
| name = Rough translation
| type = style
| class = ambox-rough_translation
| image = [[File:Translation to english arrow.svg|50x40px|Translation arrow icon]]
| issue = This {{{3|article}}} '''is a rough [[Wikipedia:translation|translation]] from {{#if:{{#invoke:ISO 639 name|iso_639_code_exists|{{{1|xyzzy}}}}}|{{ISO 639 name|{{{1}}}}}|{{{1|another language}}}}}'''. It may have been generated by a computer or by a translator without dual proficiency.
| fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} enhance the translation]. {{#if: {{{2|{{{1|}}}}}} | The original article is {{#if: {{{2|}}} | under "{{{2}}}" | {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | under "{{#language:{{Mw lang|fn=code_from_name|{{{1}}}}}}}" | {{#if: {{Mw lang|fn=is_code|{{{1}}}}} | under "{{#language:{{{1}}}}}" | available }} }} }} in the ''"languages"'' sidebar. }}
{{#if:{{NAMESPACE}}||{{#ifeq: {{yesno|{{{listed|no}}}}}|yes|---- See '''[[Wikipedia:Pages needing translation into English#{{PAGENAME}}|this article's entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion.|{{pnt notice|{{{1|unknown}}}|cleanup}}}}}}
| cat = Wikipedia articles needing cleanup after translation
}}<includeonly>{{#if:{{{1|}}}
|{{#ifexist:Category:Wikipedia articles needing cleanup after translation from {{{1}}}|[[Category:Wikipedia articles needing cleanup after translation from {{{1}}}]] |{{#ifexist:Category:Wikipedia articles needing cleanup after translation from {{ISO 639 name|{{{1}}}}}|[[Category:Wikipedia articles needing cleanup after translation from {{ISO 639 name|{{{1}}}}}]]|[[Category:Wikipedia articles needing cleanup after translation from {{{1}}}]]}} }}
|[[Category:Wikipedia articles needing cleanup after translation from unknown language]]
}}</includeonly><!--{{Rough translation}} end--><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude>
kt6bxvc4ph43dxm50vki91y5nwowaa7
Template:Runner-up
10
1569
4786
4785
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4785
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #D1E8EF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|runner-up}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Television table cell templates]]
[[Category:Big Brother (franchise) templates]]
</noinclude>
nzhixxv7imztmpegfgctcan539zmbya
Template:SIA-Conversion-Expand
10
1198
2628
2627
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2627
wikitext
text/x-wiki
{{Ambox
| name = SIA-Conversion-Expand
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = [[File:Edit-clear.svg|40x40px|link=|alt=]]
| imageright = [[File:Merge-arrow.svg|alt=|link=]]
| style = CSS values
| textstyle = CSS values
| text = This '''{{PAGENAME}}''' topic, formerly a disambiguation page, should provide at least a [[Wikipedia:Set index article|brief description of the topic and index all the notable examples that have Wikipedia articles]].
| date = {{{date|}}}
| all = Former disambiguation pages converted to set index articles
}}<noinclude>
{{Documentation}}
</noinclude>
1bidj5kg56zn5yn9xtmj9mhyluv16ue
Template:Safe
10
1570
4788
4787
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4787
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#ffffff; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no" | {{{1|Safe}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
5ywosaakvft53svwoo88a3wsr3i0nzl
Template:Samoan script needed
10
1066
2364
2363
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2363
wikitext
text/x-wiki
{{Script needed
|language = Samoan
|image =
}}
c6l7imjnz6g0me6690zyle9tiqgyf3o
Template:Sandbox other
10
877
1986
1985
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1985
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
h1idujwaw20aducxsd1gc4ovgnjikqa
Template:Sans-serif
10
1648
4944
4943
2020-10-11T05:50:39Z
Chrisb
1
1 revision imported
4943
wikitext
text/x-wiki
<noinclude><pre></noinclude><span style="font-family:sans-serif;">{{{1}}}</span><noinclude></pre>
[[Category:Text-specific formatting and function templates]]
</noinclude>
ji4suc347jcnxc591ovm74u01o0ne04
Template:Schedule
10
1096
2424
2423
2020-09-29T19:17:46Z
Chrisb
1
1 revision imported
2423
wikitext
text/x-wiki
<!--{{Schedule}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Schedule
|type = style
| class = ambox
|text = This article or section contains a '''current television or radio schedule'''. Please note that '''[[WP:NOTTVGUIDE|Wikipedia articles should not list current broadcast schedules]]'''. Additionally, schedules which have been copied and pasted from an external source may ''possibly'' be in violation of [[Wikipedia:Copyrights|copyright]].
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite this information] as [[prose]].
| removalnotice = yes
| date = {{#if:{{{date|}}}|{{small|{{{date}}}}}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Articles which include current schedules]]}}}}}</includeonly><!--{{Schedule}} end--><noinclude>
{{Documentation}}
</noinclude>
7mofjgr3rvpzme1h1ypo40w10zeurjo
Template:Scheduled
10
1571
4790
4789
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4789
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #dfdfff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-planned" | {{{1|Scheduled}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
7yxc8idw2i7tb4ety3k2p4cuq9ywdkd
Template:Science review
10
1097
2426
2425
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2425
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Sciencereview}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Science review
| type = content
| image = [[Image:Ambox question.svg|40px]]
| issue = This {{{1|article}}} '''reads like a scientific review article and potentially contains [[Wikipedia:Neutral point of view|biased]] [[Wikipedia:No original research#Synthesis of published material|syntheses]] of [[Wikipedia:No original research#Primary, secondary and tertiary sources|primary sources]].'''
| fix = Please replace inadequate primary references with secondary sources. See the [[{{TALKPAGENAME}}#{{{talksection|Review}}}|talk page]] for details. {{#if:{{{date|}}}|''({{{date}}})''|}}
| removalnotice = yes
}}{{DMCA|Articles that may contain original research|from|{{{date|}}}}}<!--{{Sciencereview}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
hnb8u7ht1pqqye8hepdhggoh133uw4b
Template:Sdash
10
1572
4792
4791
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4791
wikitext
text/x-wiki
{| class="wikitable sortable"
|-
| <onlyinclude>data-sort-value="{{{sort|}}}" style="{{{style|vertical-align:middle; text-align:center}}}" class="{{{class|table-na}}}" | {{{1|—}}}</onlyinclude>
|}
{{documentation|content={{Table cell templates/doc}}}}
m7zd32cnoeb8ggg8nvln2jh283xqmqz
Template:Section link
10
1316
2864
2863
2020-09-29T19:18:21Z
Chrisb
1
1 revision imported
2863
wikitext
text/x-wiki
{{#invoke:Section link|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
gh09dld5dhux6n50izjp2r31i71ye17
Template:Sections
10
1098
2428
2427
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2427
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Sections}} begin-->{{Ambox
| name = Sections
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-sections
| issue = {{#ifeq:{{{1}}}|section
|This section '''is too long to read comfortably, and needs [[Help:Section#Subsections|subsections]]'''.
|This article '''should be divided into [[Help:Section|sections]] by topic, to make it more accessible'''.
}}
| fix = {{#ifeq:{{{1}}}|section
|Please format the article according to the guidelines laid out in the [[MOS:HEAD|Manual of Style]].
|Please help by adding section headings in accordance with Wikipedia's [[MOS:HEAD|Manual of Style]].
}}
| date = {{{date|}}}
| cat = Articles needing sections
| all = All articles needing sections
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
}}<!--{{Sections}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
clg1dhllrpc2w1vu5g0lbktx6wcyhop
Template:See also
10
1455
3214
3213
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3213
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dn9i3dv2bt8lqifr6vkbycoya78rnav
Template:See also/doc
10
1479
3262
3261
2020-10-11T01:41:30Z
Chrisb
1
1 revision imported
3261
wikitext
text/x-wiki
{{documentation subpage}}
{{used in system|in [[MediaWiki:wantedpages-summary]]}}
{{lua|Module:Labelled list hatnote}}
{{high-risk| 141184 }}
This template is used to create '''[[WP:Hatnotes|hatnotes]] to point to a small number of other related titles''' at the '''top of [[Help:Section|article sections]]''' (excluding the [[WP:LEAD|lead]]) according to [[Wikipedia:Layout]]. It looks like this:
{{See also|Article}}
Do not use this template on top of a page, where hatnotes are for disambiguation and [[WP:RELATED|not for related topics]]. Do not use this templete inside [[Wikipedia:Manual of Style/Layout#"See also" section|the ''"See also" section'']] at the end of an article, or for links to other articles or subsections of the same article within regular article text. Where subsections are linked to, [[Template:Section link]] may be suitable instead. For use on category pages, the corresponding template is [[Template:Category see also]].
Refer to the examples below to see how the template handles link targets containing section links and commas.
==Usage==
; Basic usage:
{{See also|''page1''|''page2''|''page3''|...}}
; All parameters:
{{See also|''page1''|''page2''|''page3''| ...
|label 1 = ''label 1''|label 2 = ''label2''|label 3 = ''label3''| ...
|l1 = ''label1''|l2 = ''label2''|l3 = ''label3''| ...
|selfref = ''yes''|category = ''no''}}
==Parameters==
This template accepts the following parameters:
* <code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. At least one page name is required. Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''.
* <code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ...; or <code>l1</code>, <code>l2</code>, <code>l3</code>, ...; optional labels for each of the pages to link to.
* <code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information.
* <code>category</code> – if set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This only has an effect if the first positional parameter (the page to link to) is omitted.
== Examples ==
* <code><nowiki>{{See also|Article}}</nowiki></code> → {{See also|Article}}
* <code><nowiki>{{See also|Article#Section}}</nowiki></code> → {{See also|Article#Section}}
* <code><nowiki>{{See also|Article#Section|label 1=Custom section label}}</nowiki></code> → {{See also|Article#Section|label 1=Custom section label}}
* <code><nowiki>{{See also|Article1|Article2|Article3}}</nowiki></code> → {{See also|Article1|Article2|Article3}}
* <code><nowiki>{{See also|Article1|Article,2|Article3}}</nowiki></code> → {{See also|Article1|Article,2|Article3}}
* <code><nowiki>{{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}</nowiki></code> → {{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}
* <code><nowiki>{{See also|Veni, vidi, vici|Julius Caesar}}</nowiki></code> → {{See also|Veni, vidi, vici|Julius Caesar}}
* <code><nowiki>{{See also|Veni, vidi, vici|Julius Caesar#Civil war}}</nowiki></code> → {{See also|Veni, vidi, vici|Julius Caesar#Civil war}}
* <code><nowiki>{{See also|Julius Caesar#Civil war|Veni, vidi, vici}}</nowiki></code> → {{See also|Julius Caesar#Civil war|Veni, vidi, vici}}
* <code><nowiki>{{See also|Julius Caesar#Civil war|Crossing the Rubicon}}</nowiki></code> → {{See also|Julius Caesar#Civil war|Crossing the Rubicon}}
==Errors==
If no page names are supplied, the template outputs the following message with the (help) wikilink pointing to the "Errors" section of this page:
*{{See also|category=no}}
If you see this error message, it is for one of three reasons:
# No parameters were specified (the template code was <code><nowiki>{{See also}}</nowiki></code> with no pipe character nor page to link to). Please use <code><nowiki>{{See also|</nowiki>''page''<nowiki>}}</nowiki></code> instead.
# Some parameters were specified, but no page names were included. For example, the template text <code><nowiki>{{See also|selfref=yes}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{See also|</nowiki>''page''<nowiki>|selfref=yes}}</nowiki></code> instead.
# A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{See also|1+1=2|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code>, <code>2</code>, etc., before the page name, like this: <code><nowiki>{{See also|1=1+1=2|2=2+2=4}}</nowiki></code>.
If you see this error message and are unsure of what to do, please post a message on [[WP:HD|the help desk (WP:HD)]], and someone should be able to help you.
To see a list of wikilinks to articles that contain this error message, see the [[Wikipedia:Maintenance|maintenance category]]: [[:Category:Hatnote templates with errors]].
==TemplateData==
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "This template creates a hatnote to point to a small number of related pages. It is placed at the top of a section, directly underneath the section heading.",
"params": {
"1": {
"label": "Page 1",
"description": "The name of the first page that you want to link to.",
"type": "wiki-page-name",
"required": true,
"example": "Article name"
},
"2": {
"label": "Page 2",
"description": "The name of the second page that you want to link to.",
"type": "wiki-page-name",
"required": false
},
"3": {
"label": "Page 3",
"description": "The name of the third page that you want to link to. More pages can be added using the parameters \"4\", \"5\", \"6\", etc.",
"type": "wiki-page-name",
"required": false
},
"label 1": {
"label": "Label 1",
"type": "string",
"description": "What the first linked article is to be displayed as. ",
"aliases": [
"l1"
]
},
"label 2": {
"label": "Label 2",
"type": "string",
"description": "What the second linked article is to be displayed as.",
"aliases": [
"l2"
]
},
"selfref": {
"type": "boolean",
"label": "Self reference",
"description": "Set to \"yes\" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.",
"example": "yes",
"default": "no"
},
"category": {
"label": "Category",
"description": "Set to \"no\", \"n\", \"false\", or \"0\" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.",
"type": "boolean",
"default": "yes",
"example": "no"
},
"label 3": {
"aliases": [
"l3"
],
"type": "string",
"label": "Label 3",
"description": "What the third linked article is to be displayed as. Other labels can be added by using increasing numbers (starting with \"label 4\" or \"l4\" for page 4) as parameter names."
}
},
"format": "inline"
}
</templatedata>
{{Collapse bottom}}
==See also==
*{{tl|For}}
*{{tl|See also if exists}}
*{{tl|Template see also}}
*{{tl|Category see also}}
*{{tl|Main}}
*{{tl|See}} (redirect to {{tl|Further}})
*{{tl|Hatnote}}
{{Hatnote templates}}
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Exclude in print]]
[[Category:Hatnote templates]]
[[Category:Related-topic templates]]
[[Category:Wikipedia page-section templates]]
[[Category:Wikipedia see also]]
}}</includeonly>
dd27psgl1mvqvsq9ikjzuald659og10
Template:Self-published
10
1099
2430
2429
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2429
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Self-published}} begin-->{{Ambox
| name = Self-published
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-self-published
| issue = This {{{1|article}}} '''may contain excessive or inappropriate references to [[Wikipedia:Verifiability#Self-published sources|self-published sources]]'''. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}}
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing references to unreliable [[Wikipedia:Reliable sources|sources]] where they are used inappropriately.
| date = {{{date|}}}
| cat = Articles with self-published sources
| all = All articles with self-published sources
|removalnotice= yes
}}<!--{{Self-published}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
c0ggtifj77w7ohgxg91bxql907jrgye
Template:Self-reference
10
1100
2432
2431
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2431
wikitext
text/x-wiki
<!--{{Self-reference}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Self-reference
| type = style
| issue = This {{{section|{{{1|article}}} }}} '''may contain [[Wikipedia:Self-references to avoid|inappropriate self-references]] to the Wikipedia project or to itself'''.
| fix = Please address the problem by removing references to Wikipedia or to the article as a document. {{#if:{{{talk|}}}|See the [[{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk}}}|talk page]] for details.}}
| date = {{{date|}}}
}}{{#switch:{{NAMESPACE}}||Talk=[[Category:Articles containing self-references]]|}}<!--{{Self-reference}} end--><noinclude>{{Documentation}}</noinclude>
4rqm75n96klugj2s5tbifo06rin50r0
Template:Shade
10
1573
4794
4793
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4793
wikitext
text/x-wiki
<noinclude>
{|class="wikitable"
|-
|</noinclude>style="background: {{shade/bgcolor|a={{#expr:{{#if:{{{invert|}}}|1-}}{{{1|0}}}/{{{total|100}}} round 2}}|r={{{red|{{{r|255}}}}}}|g={{{green|{{{g|0}}}}}}|b={{{blue|{{{b|0}}}}}}}}; color: #222; vertical-align: {{{valign|middle}}}; text-align: {{{align|right}}}; {{{style|}}}"|{{{front|}}}{{#if:{{{noformat|}}}|{{{1|0}}}|{{formatnum:{{{1|0}}}}}}}{{Ensure AA contrast ratio|{{shade/bgcolor|a={{#expr:{{#if:{{{invert|}}}|1-}}{{{1|0}}}/{{{total|100}}} round 2}}|r={{{red|{{{r|255}}}}}}|g={{{green|{{{g|0}}}}}}|b={{{blue|{{{b|0}}}}}}}}|#222|category=[[Category:Invalid color contrast from shade]]}}<noinclude>
|}
{{documentation}}
</noinclude>
ptygkeqe26rl63rgqokhf450hfq4w3f
Template:Shade/bgcolor
10
1574
4796
4795
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4795
wikitext
text/x-wiki
<noinclude>{{code|</noinclude>rgb(<includeonly>{{#expr:</includeonly>({{{r}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>,<includeonly>{{#expr:</includeonly>({{{g}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>,<includeonly>{{#expr:</includeonly>({{{b}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>)<noinclude>}}{{documentation|content=
Calculates an rgba naively blended over a white background, i.e.
:<math>C_o = C_a \alpha + 255 (1 - \alpha)</math>
}}</noinclude>
ni788ku39prwzorj8jjooc3pqq9vaet
Template:Sho
10
1575
4798
4797
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4797
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #f0e68c; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2"|{{{1|Shortlisted}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
s9hrhg6nas7yunvf2j4bi43qf0jttk1
Template:Shortcut
10
1328
2888
2887
2020-09-29T19:18:26Z
Chrisb
1
1 revision imported
2887
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
5idoxkkbt62sniipoe18t8iorl88qpo
Template:Sidebar
10
1456
3216
3215
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3215
wikitext
text/x-wiki
{{#invoke:Sidebar|sidebar}}<noinclude>
{{documentation}}</noinclude>
jzouzofoaugku1umcgwhk1sk23s7qrm
Template:Site active
10
1576
4800
4799
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4799
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #90FF90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-siteactive"|{{{1|Active}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
om01olkcv6x2l9fmkxbfaar4ouf50ij
Template:Site inactive
10
1577
4802
4801
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4801
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #F99; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="inactive table-siteinactive"|{{{1|Inactive}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
8uzldjk6jgpnh6qt3gojufgtk69z6s1
Template:Some
10
1578
4804
4803
2020-10-11T05:35:25Z
Chrisb
1
1 revision imported
4803
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Some}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
p9106p3u0jq1ynld7259ck5391bof45
Template:Sometimes
10
1579
4806
4805
2020-10-11T05:35:26Z
Chrisb
1
1 revision imported
4805
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #b0c4de; color: black; vertical-align: middle; text-align: center; " class="partial table-partial"|{{{1|Sometimes}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
ox9im9z8q3qxedhmt0t2ldgzr3e3w90
Template:Sources exist
10
1236
2704
2703
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2703
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Page numbers needed}} begin-->{{Ambox
| name = Sources exist
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image = [[File:Text document with page number icon.svg|50x40px|alt=|link=]]
| issue = There do not appear to be enough [[WP:Citing sources|references]] currently present in this article to demonstrate [[WP:Notability|notability]]. However, <u>an editor has performed a search</u> and claims that there are sufficient sources to indicate that this '''is a notable topic'''.
| fix = <br>You can help to improve the article by adding citations to [[Wikipedia:Reliable sources|reliable sources]]. Ideas for references may also be found on the [[:{{TALKPAGENAME}}|Talk page]].
| date = {{{date|}}}
| cat =
| removalnotice = yes
}}<!--{{Page numbers needed}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
he6w3maku2kyvj0kfyae60wmjnpod7z
Template:Spam-request
10
1101
2434
2433
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2433
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Spam-request}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Spam-request
| type = content
| image = [[Image:orange x.svg|45px]]
| issue = This page or section '''may contain [[Wikipedia:Spam|link spam]] masquerading as content.'''
| fix = Spam on Wikipedia consists of [[Wikipedia:External links|external links]] mainly intended to promote a website. If you are familiar with the content of the external links, please help by removing promotional links in accordance with [[Wikipedia:External links]].
}}
<includeonly>{{DMC|Articles prone to spam|from|{{{date|}}}}}</includeonly><!--{{Spam-request}} end-->
}}<noinclude>
{{doc|content=
This template will categorise tagged articles into [[:Category:Wikipedia spam cleanup]].
See [[Special:Recentchangeslinked/Category:Wikipedia spam cleanup]] to see recent edits to tagged articles.
See also [[Template:Advertisement]] for tagging advertisements masquerading as articles, and [[Template:Spam]] to warn spammers in their [[Talk page]]s.
* This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]].
* Please do not [[Wikipedia:Subst|subst:]] this template.
==See also==
* [[Wikipedia:WikiProject Spam]]
* [[Wikipedia:WikiProject External links]]
* [[Wikipedia:Template messages/Cleanup]]
[[Category:Cleanup templates|{{PAGENAME}}]]
[[Category:Dispute templates|{{PAGENAME}}]]
}}</noinclude>
gxzo7znf5nw8x6f71o10sh4oz8th1le
Template:Specific
10
1102
2436
2435
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2435
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Specific}} begin-->{{Ambox
| name = Specific
| type = style
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| issue = This {{{1|article}}} '''focuses too much on specific examples''' without [[Wikipedia:Writing better articles#Provide context for the reader|explaining their importance]] to its main subject.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] by citing [[Wikipedia:No original research#Primary, secondary and tertiary sources|reliable, secondary sources]] that '''evaluate and synthesize''' these or similar examples within a '''broader context'''.
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Wikipedia articles needing context
}}<!--{{Specific}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
e9d3zkol7a1583zgmw9qba90hwf5x0y
Template:Speculation
10
1226
2684
2683
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2683
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Speculation}} begin-->{{Ambox
| name = Speculation
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| image = [[File:Emoji_u1f52e.svg|50x40px|link=|alt=]]
| sect = {{{1|}}}
| issue = '''possibly contains unsourced [[WP:CRYSTAL|prediction]]s, speculative material, or accounts of events that might not occur'''. Information must be [[WP:V|verifiable]] and based on [[WP:RS|reliable published sources]].
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing unsourced speculative content.
| date = {{{date|}}}
| all = Articles containing predictions or speculation
| removalnotice = yes
}}<!--{{Speculation}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
2zaurs414j55iw64e5xmws45iiqqbp5
Template:Split
10
931
2094
2093
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2093
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Split
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| style = {{#if:{{{small|}}}|width: auto; margin-right: 0px;}}
| textstyle = {{#if:{{{small|}}}|width: auto;}}
| demospace = {{{demospace|}}}
| type = move
| image = [[File:Split-arrows.svg|50x40px|alt=|link=]]
| text = It has been suggested that {{#ifeq:{{{part|}}}|yes|some portions of|}} this {{#if:{{{section|}}}|{{#ifeq:{{yesno-no|{{{section}}}}}|yes|section|{{{section|section}}}}}|{{#if:{{NAMESPACE}}|page|article}}}} be '''[[Wikipedia:Splitting|split]]''' into {{#if:{{{1|}}}|{{#if:{{{2|}}}|{{#if:{{NAMESPACE}}|pages|articles}}|a new {{#if:{{NAMESPACE}}|page|article}}}} titled {{pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}|multiple {{#if:{{NAMESPACE}}|pages|articles}}}}. ([[{{{discuss|{{TALKPAGENAME}}}}}|Discuss]])
| cat = Articles to be split
| all = All articles to be split
| date = {{{date|}}}
}}
}}<noinclude>
{{documentation}}
<!-- place category and interwiki links on the /doc sub-page, not here -->
</noinclude>
sx8mlx7vryvbevbsyrlsasoilqw57z4
Template:Story
10
1103
2438
2437
2020-09-29T19:17:47Z
Chrisb
1
1 revision imported
2437
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Story}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Story
| type = style
| issue = This {{{1|article}}} '''reads more like a story than an encyclopedia entry'''.
| fix = To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and conform to the [[Wikipedia:NPOV|neutral point of view]] policy, please help to [[WP:Encyclopedic style|introduce a more formal style]] and remove any personally invested tone.
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Story}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
lzoqlegb617wyulpi81hemovis7tju0
Template:Str left
10
1300
2832
2831
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2831
wikitext
text/x-wiki
<includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
3rrdme1fpv80h1kdk9b7zwlkqd34dfk
Template:Stub
10
53
88
87
2019-11-10T15:39:06Z
Chrisb
1
88
wikitext
text/x-wiki
This article is a stub. You can help us by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it].
fu6b00gaoba8x4pukoa4ij0evxbplth
Template:Success
10
1580
4808
4807
2020-10-11T05:35:26Z
Chrisb
1
1 revision imported
4807
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|</noinclude>style="background: #bbffbb; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-success" | {{{1|Success}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}
</noinclude>
bljpz5hbrg1n6t1m4025ypmo183sif9
Template:Summarize
10
1117
2466
2465
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2465
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
|name = Summarize
|subst= <includeonly>{{subst:substcheck}}</includeonly>
|type = style
|issue = {{#switch:{{{1}}}
|from|of = '''This {{#if:{{{section|}}}|section|article}} should include {{#if:{{{brevity|}}}|{{#if:{{{section|}}}|{{#if:{{{nocat|}}}||<includeonly>[[Category:Articles containing overly long summaries]]</includeonly>}} only}} a {{strong|brief}}|a {{#if:{{{better|}}}|better}}}} summary of {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}}.'''
|to|at|in = This {{#if:{{{section|}}}|section|article}} should be {{#if:{{{brevity|}}}|{{strong|briefly}}|{{#if:{{{better|}}}|better}}}} summarized in {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}} and a link provided from there to here using the {{tlx|Main}} template.
|section = '''This {{{section|section}}} should include {{#if:{{{brevity|}}}|{{#if:{{{nocat|}}}||<includeonly>[[Category:Articles containing overly long summaries]]</includeonly>}} only a {{strong|brief}}|a {{#if:{{{better|}}}|better}}}} summary of {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}}.'''
|<!--default-->{{#switch:{{{section}}}
|y|Y|yes|YES|Yes|t|T|true|TRUE|True|1 = '''This section should include a {{#if:{{{brevity|}}}|brief|{{#if:{{{better|}}}|better}}}} summary of, or be {{#if:{{{brevity|}}}|briefly|{{#if:{{{better|}}}|better}}}} summarized in {{#ifexist:{{{1}}}|{{#if:{{{1|}}}|[[{{{1}}}]]|}}|another article}}.'''
|<!--default-->'''This section should include a {{#if:{{{brevity|}}}|brief|{{#if:{{{better|}}}|better}}}} summary of, or be {{#if:{{{brevity|}}}|briefly|{{#if:{{{better|}}}|better}}}} summarized in, {{#ifexist:{{{1}}}|{{#if:{{{1|}}}|[[{{{1}}}]]|}}|another article}}.'''
}} }}
|fix = {{#switch:{{{1}}}
|from|of = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|{{{better|}}}}}}|properly}} incorporate it into this article's main text.
|to|at|in = See guidance in [[Wikipedia:Summary style]].
|section = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|{{{better|}}}}}}|properly}} incorporate it into this article's main text.
|<!--default-->{{#switch:{{{section}}}
|y|Y|yes|YES|Yes|t|T|true|TRUE|True|1 = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|}}}|properly}} incorporate it into this article's main text, or the main text of another article.
|<!--default-->See [[Wikipedia:Summary style]] for information on how to incorporate it into this article's main text, or the main text of another article.
}} }}
|date = {{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
6iik49tc6vu73mclrs5vz206wn48hym
Template:Summarize section
10
1278
2788
2787
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2787
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Summarize section}} begin-->{{Ambox
| name = Summarize section
| type = style
| issue = This section '''may be [[Help:Section#Section size policies|too long]] and excessively detailed.'''
| fix = {{{fix|Please consider summarizing the material while [[WP:CITE|citing sources]] as needed.}}}
| date = {{{date|}}}
}}<!--{{Summarize section}} end-->
}}<noinclude>
{{Documentation|content=
==Usage==
Put at the top of a section that needs to be compressed to an encyclopedic approach and level of detail:
{{in5}}{{tlx|Summarize section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
==See also==
* A list of related [[Wikipedia:Cleanup|cleanup]] templates at [[Wikipedia:Template messages/Cleanup]]
* {{Tl|Very long}} used for whole articles that are too long
* {{Tl|Very long section}}
* {{Tl|Lead too short}}
* {{Tl|Summarize}}
* {{tl|Summary too long}}
{{collapse top|left=y|Trivia cleanup templates}}
{{Trivia templates see-also}}
{{collapse bottom}}
[[Category:Cleanup templates|{{PAGENAME}}]]
[[Category:Coherency templates|{{PAGENAME}}]]
[[Category:Wikipedia page-section templates]]
}}</noinclude>
lzml2g4o3iznieq7xidog58rtw4k29t
Template:Summary style
10
1104
2440
2439
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2439
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Summary style}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Summary style
|type=style
|text=<span>'''This {{#if:{{{section|}}}|section|article}} may benefit from being shortened by the use of [[Wikipedia:Summary style|summary style]].'''</span><br /><span style="font-size: 90%">
Summary style may involve the moving of large sections to sub-articles that are then summarized in the main article.</span>
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Summary style}} end-->
}}<noinclude>{{documentation}}</noinclude>
q6vxzjqhe03wh38d09vk9qivgd0rh2e
Template:Synthesis
10
1105
2442
2441
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2441
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Synthesis}} begin-->{{Ambox
| name = Synthesis
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[file:Ambox question.svg|50x40px]]
| issue = This {{{1|article or section}}} '''possibly contains [[Wikipedia:No original research#Synthesis of published material|synthesis of material]] which does not [[Wikipedia:Verifiability|verifiably mention]] or [[Wikipedia:Content removal#Irrelevant information|relate]] to the main topic.'''
| talk = {{{talksection|#}}}
| date = {{{date|}}}
| cat = Articles that may contain original research
| removalnotice = yes
}}<!--{{Synthesis}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>
onm22wvjupw9urnywsenusijm669l5v
Template:Syriac script needed
10
997
2226
2225
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2225
wikitext
text/x-wiki
{{Script needed
|language = Syriac
|image = Aramaic alap.svg
}}
svxji5tf3yh7kchqs2ahwfjy3avwkti
Template:Systemic bias
10
1107
2446
2445
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2445
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Systemic bias}} begin-->{{Ambox
| name = Systemic bias
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| image = [[File:Ambox scales.svg|50px|link=|alt=Unbalanced scales]]
| class = ambox-systemic-bias
| issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|questioned]] because it may show [[Wikipedia:Systemic bias|systemic bias]]'''.{{#if:{{{bias|}}}| In particular, there may be a strong bias in favor of ''{{{bias}}}''.|}}
| fix = Please see the discussion on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]]. Please do not remove this message until the issue is resolved.
| date = {{{date|}}}
| cat = NPOV disputes
| all = All NPOV disputes
}}<!--{{Systemic bias}} end-->
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
s1g7myy2gkqeso8o1foltead8ii3hlj
Template:T
10
1621
4890
4889
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4889
wikitext
text/x-wiki
#REDIRECT [[Template:tl]]
{{Rcat shell|
{{R from template shortcut}}
}}
<!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta ->
1tuxhjhgiad3kli8gnbjst6fx5ka4mq
Template:TBA
10
1581
4810
4809
2020-10-11T05:35:26Z
Chrisb
1
1 revision imported
4809
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DDF; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no2"|{{{1|TBA}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
9d5b30prhmcuw2cindmhnr0il1k8mca
Template:TOC right
10
1655
4958
4957
2020-10-11T05:50:41Z
Chrisb
1
1 revision imported
4957
wikitext
text/x-wiki
<templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!--
--><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" style="{{#if:{{{width|{{{1|}}}}}}|width: {{{width|{{{1}}}}}};}}">__TOC__</div><noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
mt15wq5aepioouqvgukw37ap6fawb01
Template:TOC right/styles.css
10
1656
4960
4959
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4959
sanitized-css
text/css
/* {{pp-template}} */
.tocright {
float: right;
clear: right;
width: auto;
background: none;
padding: .5em 0 .8em 1.4em;
margin-bottom: .5em;
}
.tocright-clear-left {
clear: left;
}
.tocright-clear-both {
clear: both;
}
.tocright-clear-none {
clear: none;
}
ahbm3qa6ych3s7m5nymbfe32voxs9fk
Template:TOCright
10
1657
4962
4961
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4961
wikitext
text/x-wiki
#REDIRECT [[Template:TOC right]]
{{Redirect category shell|
{{R from move}}
{{R from modification}}
{{R from template shortcut}}
}}
s9w5nheydfdvpkk9cvzacrj8i9o0bj8
Template:TWCleanup
10
1125
2482
2481
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2481
wikitext
text/x-wiki
<!--{{TWCleanup}} begin-->{{Ambox
| name = TWCleanup
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| image = [[Image:Edit-copy purple-wikit.svg|40px]]
| text = '''This page has been [[m:Help:Transwiki|copied]] to [[Wiktionary]]. Is it still needed in Wikipedia?'''<br />
Because this article has content useful to Wikipedia's sister project Wiktionary, it has been transwikied there{{#if:{{{1|}}}| on {{{1|}}}|}}, and its dictionary counterpart can be found at {{#if:{{{title|}}}|[[Wiktionary:{{{title}}}]]|either [[Wiktionary:Transwiki:{{PAGENAME}}]], [[Wiktionary:{{PAGENAME}}]], or [[Wiktionary:{{lcfirst:{{PAGENAME}}}}]]}}.<br />
[[WP:WINAD|Wikipedia is not a dictionary]], so please either:
* Edit it so that the article's topic is not a particular word or other morpheme and remove this notice. <small>Use {{tl|vocab-stub}}.</small>
* Convert it to a [[Wikipedia:Disambiguation|disambiguation page]] discussing the possible meanings of the term.
* Tag it for deletion. <small><nowiki>Use {{subst:</nowiki>[[Template:prod|prod]]<nowiki>}}</nowiki></small>
* Replace it by a [[WP:Soft redirect|soft redirect]]. <small>Use {{tl|wi}} <nowiki>{{subst:longcomment}}</nowiki></small>
| all = Transwiki cleanup
}}<!--{{TWCleanup}} end--><noinclude>
{{Documentation}}
<!--Categories and interwikis go on the /doc subpage.-->
</noinclude>
07tvdhvdth6jb41ejjmcyd1tkzc5uih
Template:TWCleanup2
10
1126
2484
2483
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2483
wikitext
text/x-wiki
<!--{{TWCleanup2}} begin-->{{Ambox
| name = TWCleanup2
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = move
| image= [[Image:Edit-copy purple-wikit.svg|40px]]
| text = '''This page duplicates a dictionary definition already listed on [[Wiktionary]]. Its dictionary counterpart can be found at''' {{#if:{{{page|}}}|'''[[Wiktionary:{{{page}}}]]'''|'''[[Wiktionary:Transwiki:{{PAGENAME}}]], [[Wiktionary:{{PAGENAME}}]], or [[Wiktionary:{{lcfirst:{{PAGENAME}}}}]]'''}}.<br />
'''Is this page still needed in Wikipedia?'''<br />[[WP:WINAD|Wikipedia is not a dictionary]]. Please either:
* Turn it into an encyclopedia article and remove this notice.
* Convert it to a [[Wikipedia:Disambiguation|disambiguation page]] discussing the possible meanings of the term.
* Tag it for deletion. <small><nowiki>Use {{subst:</nowiki>[[Template:prod|prod]]<nowiki>}}</nowiki></small>
* Replace it by a [[WP:Soft redirect|soft redirect]]. <small>Use {{tl|wi}} <nowiki>{{subst:longcomment}}</nowiki></small>
* Flag it to merge it with another article. <small><nowiki> Use {{mergeto|article named here}} </nowiki></small>
| all = Transwiki cleanup
}}<!--{{TWCleanup2}} end--><noinclude>
{{doc}}
</noinclude>
nnvh0077nrjbj60erm37sgcatfvymdh
Template:Table-experimental
10
1582
4812
4811
2020-10-11T05:35:26Z
Chrisb
1
1 revision imported
4811
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="experimental table-experimental"|{{{1|Experimental}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[es:Plantilla:Tabla-experimental]]
</noinclude>
0gbgrfuiiywm036ys2f5x7spdsmm091
Template:Table cell templates
10
1583
4814
4813
2020-10-11T05:35:26Z
Chrisb
1
1 revision imported
4813
wikitext
text/x-wiki
<noinclude>
{|
|</noinclude>{{#if:{{{sort|}}}|data-sort-value="<nowiki>{{{sort|</nowiki>{{{sort}}}<nowiki>}}}</nowiki>"}} style="background: {{{bg|<nowiki>{{/bgcolor}}</nowiki>}}}; color: {{{color|black}}}; vertical-align: {{{valign|middle}}}; text-align: <nowiki>{{{align|</nowiki>{{{align|center}}}<nowiki>}}}</nowiki>; <nowiki>{{{style|text-transform: capitalize;}}}</nowiki>" class="{{{class|{{BASEPAGENAME}}}}} table-{{{class|{{BASEPAGENAME}}}}}"| <nowiki>{{{1|</nowiki>{{{text}}}<nowiki>}}}</nowiki><noinclude>
|}
{{Documentation}}
<!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Table cell templates]]
</noinclude>
nv215pztm0qc4dk6weavbxdqm3920mz
Template:Table cell templates/doc
10
1584
4816
4815
2020-10-11T05:35:27Z
Chrisb
1
1 revision imported
4815
wikitext
text/x-wiki
<noinclude>{{Documentation subpage}}</noinclude>
{{#ifeq:{{FULLPAGENAME}}|Template:BLACK|{{For|the text color template|Template:Black}}|{{#ifeq:{{FULLPAGENAME}}|Template:Ya|{{For|the template with a smaller tick and no green background|Template:Aye}}|{{#ifeq:{{FULLPAGENAME}}|Template:Maybe|{{For|the yellow tick template|Template:Mby}}}}}}}}
The templates in this series are designed to be used in a [[Help:Table|table]] to make a cell with text in that cell, with an appropriately colored background. They are commonly used in [[:Category:Comparisons|comparison tables]].
For example, {{Tlc|yes}} makes a cell with a green background. The text in the cell is taken from the [[Help:Template#Parameters|first parameter]]; <code><nowiki>{{</nowiki>yes|Sure}}</code> would output "Sure" otherwise it defaults to "Yes". Most templates allow authors to override the default text in this way, some require text put after the template call and some also need a vertical bar in between: <code><nowiki>{{</nowiki>''table cell template''}} ''text''</code> or <code><nowiki>{{</nowiki>''table cell template''}} | ''text''</code>. This information, the colors and default texts are found in the table below.
{{Warnsign|Important:}} If you want to use other attributes for the table cells, ''e.g.'' <code>colspan</code>, <code>rowspan</code>, or <code>style</code>, they need to be put before the template call, and there must be '''no vertical bar (aka pipe) <code>|</code>''' in-between them:
{| class=wikitable align=right
!{{Yes}} ||{{No}} ||rowspan=2 {{n/a}}
|-
|colspan=2 {{Yes-No}}
|}
<pre>...
!{{Yes}} ||{{No}} ||rowspan=2 {{n/a}}
|-
|colspan=2 style="border:solid 3px Maroon" {{Yes-No}}
...
</pre>
== Templates ==
<div style="overflow:auto;">
{| class="wikitable" style="text-align: left; width: auto;"
|+ Table cell templates
! Class<ref name="table-cell-templates-table-css">The HTML class of table cell templates may be referenced in a [[m:help:User style|user stylesheet]] to change appearance.</ref> !! Default syntax !! Preview (default) !! Customized syntax !! Preview (customized)
|-
|rowspan=2| <code>table-rh</code>
| {{tl|rh}} {{!}} Row header<ref name="table-cell-templates-table-after+pipe" /> || {{rh}} | Row header || {{tlp|rh|2=align=right}} {{!}} Row header || {{rh|align=right}} | Row header
|-
| {{tl|rh2}} {{!}} Row header<ref name="table-cell-templates-table-after+pipe">Does not take a parameter; the content should be placed after the template call, separated by a pipe (|) character.</ref> || {{rh2}} {{!}} Row header || {{tlp|rh2|2=align=right}} | Row header || {{rh2|align=right}} | Row header
|-
|rowspan=3| <code>table-yes</code>
| {{tl|yes}} || {{yes}} || {{tlp|yes|<nowiki>customized [[plain text|text]]</nowiki>}} ||{{yes|customized [[plain text|text]]}}
|-
| {{tl|yes C}} || {{yes C}} || {{tlp|yes C|}} ||{{yes C|}}
|-
| {{tl|yes O}} || {{yes O}} || {{tlp|yes O|}} ||{{yes O|}}
|-
| <code>table-maybe</code>
| {{tl|maybe}} || {{maybe}} || {{tlp|maybe|<nowiki>customized [[plain text|text]]</nowiki>}} ||{{maybe|customized [[plain text|text]]}}
|-
|rowspan=7| <code>table-no</code>
| {{tl|no}} || {{no}} || {{tlp|no|<nowiki>customized [[plain text|text]]</nowiki>}} || {{no|customized [[plain text|text]]}}
|-
| {{tl|no O}} || {{no O}} || {{tlp|no O|}} || {{no O|}}
|-
| {{tl|no X}} || {{no X}} || {{tlp|no X|}} || {{no X|}}
|-
| {{tl|eliminated}} || {{eliminated}} || {{tlp|eliminated|dropped out}} || {{eliminated|dropped out}}
|-
| {{tlp|active fire|12%}} || {{active fire|12%}} || ||
|-
| {{tl|lost}} || {{lost}} || {{tlp|lost|missing}} || {{lost|missing}}
|-
| {{tl|safe}} || {{safe}} || {{tlp|safe|protected}} || {{safe|protected}}
|-
| <code>table-active</code>
| {{tl|active}} || {{active}} || {{tlp|active|live}} || {{active|live}}
|-
|rowspan=2| <code>table-siteactive</code>
| {{tl|site active}} || {{site active}} || {{tlp|site active|up}} || {{site active|up}}
|-
| {{tl|coming soon}} || {{coming soon}} || {{tlp|coming soon|second half of the year}} || {{coming soon|second half of the year}}
|-
| <code>table-siteinactive</code>
| {{tl|site inactive}} || {{site inactive}} || {{tlp|site inactive|down}} || {{site inactive|down}}
|-
|rowspan=11| <code>table-yes2</code>
| {{tl|good}} || {{good}} || {{tlp|good|A}} || {{good|A}}
|-
| {{tl|yes2}} || {{yes2}} || {{tlp|yes2|text}} || {{yes2|text}}
|-
| {{tl|ya}} || {{ya}} || {{tlp|ya|text{{=}}ya}} || {{ya|text=ya}}
|-
| {{tlp|ya|Ya}} || {{ya|Ya}} || {{tlp|ya|text|link{{=}}WP:ALT}} || {{ya|text|link=WP:ALT}}
|-
| {{tl|won}} || {{won}} || {{tlp|won|text{{=}}white|color{{=}}darkblue|winner}} || {{won|text=white|color=darkblue|winner}}
|-
| {{tlp|won|place{{=}}1}} || {{won|place=1}} || {{tlp|won|place{{=}}gold}} || {{won|place=gold}}
|-
| {{tlp|won|place{{=}}2}} || {{won|place=2}} || {{tlp|won|place{{=}}silver}} || {{won|place=silver}}
|-
| {{tlp|won|place{{=}}3}} || {{won|place=3}} || {{tlp|won|place{{=}}bronze}} || {{won|place=bronze}}
|-
| {{tl|WinDL}} || {{WinDL}} || {{tlp|WinDL|win}} || {{WinDL|win}}
|-
| {{tlp|WinDL|res{{=}}D}} || {{WinDL|res=D}} || {{tlp|WinDL|res{{=}}draw}} || {{WinDL|res=draw}}
|-
| {{tlp|WinDL|res{{=}}L}} || {{WinDL|res=L}} || {{tlp|WinDL|res{{=}}loss}} || {{WinDL|res=loss}}
|-
|rowspan=7| <code>table-no2</code>
| {{tl|no2}} || {{no2}} || {{tlp|no2|text}} || {{no2|text}}
|-
| {{tl|na}} || {{na}} || {{tlp|na|text{{=}}na}} || {{na|text=na}}
|-
| {{tlp|na|Na}} || {{na|Na}} || {{tlp|na|text|link{{=}}WP:ALT}} || {{na|text|link=WP:ALT}}
|-
| {{tl|nom}} || {{nom}} || {{tlp|nom|5}} || {{nom|5}}
|-
| {{tl|sho}} || {{sho}} || {{tlp|sho|proposed}} || {{sho|proposed}}
|-
| {{tl|longlisted}} || {{longlisted}} || {{tlp|longlisted|rejected}} || {{longlisted|rejected}}
|-
| {{tl|TBA}} || {{TBA}} || {{tlp|TBA|to be announced}} || {{TBA|to be announced}}
|-
| rowspan=2 |<code>table-success</code>
| {{tl|success}} || {{success}} || {{tlp|success|mission complete}} || {{success|mission complete}}
|-
| {{tl|operational}} || {{operational}} || {{tlp|operational|returning data}} || {{operational|returning data}}
|-
| <code>table-failure</code>
| {{tl|failure}} || {{failure}} || {{tlp|failure|wrong orbit}} || {{failure|wrong orbit}}
|-
| rowspan=16| <code>table-partial</code>
| {{tl|partial}} || {{partial}} || {{tlp|partial|almost done}} ||{{partial|almost done}}
|-
| {{tl|Regional}} || {{Regional}} || {{tlp|Regional|Uyghur}} || {{Regional|Uyghur}}
|-
| {{tl|MaybeCheck}} || {{MaybeCheck}} || {{tlp|MaybeCheck|text{{=}}possibly}} || {{MaybeCheck|text=possibly}}
|-
| {{tlp|MaybeCheck|possibly}} || {{MaybeCheck|possibly}} || {{tlp|MaybeCheck|text|link{{=}}WP:ALT}} || {{MaybeCheck|text|link=WP:ALT}}
|-
| {{tl|partial success}} || {{partial success}} || {{tlp|partial success|reached orbit and returned pictures}} || {{partial success|reached orbit and returned pictures}}
|-
| {{tl|partial failure}} || {{partial failure}} || {{tlp|partial failure|<nowiki>[[Cubesat]] not deployed</nowiki>}} || {{partial failure|[[Cubesat]] not deployed}}
|-
| {{tl|okay}} || {{okay}} || {{tlp|okay|C}} || {{okay|C}}
|-
| {{tl|Yes-No}} || {{Yes-No}} || {{tlp|Yes-No|yes with an if; no with a but}} || {{Yes-No|yes with an if; no with a but}}
|-
| {{tl|some}} || {{some}} || {{tlp|some|many}} || {{some|many}}
|-
| {{tl|nonpartisan}} || {{nonpartisan}} || {{tlp|nonpartisan|impartial}} || {{nonpartisan|impartial}}
|-
| {{tl|pending}} || {{pending}} || {{tlp|pending|awaiting}} || {{pending|awaiting}}
|-
| {{tl|unofficial}} || {{unofficial}} || {{tlp|unofficial|<nowiki>''de facto''</nowiki>}} || {{unofficial|''de facto''}}
|-
| {{tl|unofficial2}} || {{unofficial2}} || {{tlp|unofficial2|<nowiki>''de facto''</nowiki>}} || {{unofficial2|''de facto''}}
|-
| {{tl|usually}} || {{usually}} || {{tlp|usually|commonly}} || {{usually|commonly}}
|-
| {{tl|rarely}} || {{rarely}} || {{tlp|rarely|seldom}}|| {{rarely|seldom}}
|-
| {{tl|sometimes}} || {{sometimes}} || {{tlp|sometimes|occasionally}} || {{sometimes|occasionally}}
|-
| <code>table-noAttempt</code>
| {{tl|No attempt}} || {{No attempt}} || {{tlp|No attempt|No landing attempted}} || {{No attempt|No landing attempted}}
|-
| <code>table-any</code>
| {{tl|any}} || {{any}} || {{tlp|any|anyone}}|| {{any|anyone}}
|-
|rowspan=6| <code>table-na</code>
| {{tl|n/a}} || {{n/a}} || {{tlp|n/a|unavailable}}|| {{n/a|unavailable}}
|-
| {{tl|varies}} || {{varies}} || {{tlp|varies|differs}}|| {{varies|differs}}
|-
| {{tl|sdash}} || {{sdash}} || {{tlp|sdash|<nowiki>[[File:Dash.svg|13px|link=|dash icon]]</nowiki>}}|| {{sdash|[[File:Dash.svg|13px|link=|dash]]}}
|-
| {{tl|BLACK}} || {{BLACK}} || {{tlp|BLACK|banned}} || {{BLACK|banned}}
|-
| {{tl|non-album single}} || {{non-album single}} || {{tlp|non-album single|EP}} || {{non-album single|EP}}
|-
| {{tl|unreleased}} || {{unreleased}} || {{tlp|unreleased|shelved}} || {{unreleased|shelved}}
|-
|rowspan=2| <code>table-unknown</code>
| {{tl|unknown}} || {{Unknown}} || {{tlp|unknown|?}} || {{unknown|?}}
|-
| {{tl|dunno}} || {{Dunno}} || {{tlp|dunno|not sure}} || {{dunno|not sure}}
|-
| <code>table-automatic</code>
| {{tl|perhaps}} || {{perhaps}} || {{tlp|perhaps|maybe}} || {{perhaps|maybe}}
|-
| <code>table-depends</code>
| {{tl|depends}} || {{depends}} || {{tlp|depends|vendor-defined}} || {{depends|vendor-defined}}
|-
| <code>table-included</code>
| {{tl|included}} || {{included}} || {{tlp|included|incorporated}} || {{included|incorporated}}
|-
|rowspan=2| <code>table-dropped</code>
| {{tl|dropped}} || {{dropped}} || {{tlp|dropped|discontinued}} || {{dropped|discontinued}}
|-
| {{tl|terminated}} || {{terminated}} || {{tlp|terminated|fired}} || {{terminated|fired}}
|-
| <code>table-beta</code>
| {{tl|beta}} || {{beta}} || {{tlp|beta|preview}} || {{beta|preview}}
|-
| <code>table-experimental</code>
| {{tl|table-experimental}} || {{table-experimental}} || {{tlp|table-experimental|lab}} || {{table-experimental|lab}}
|-
| <code>table-free</code>
| {{tl|free}} || {{free}} || {{tlp|free|empty}} || {{free|empty}}
|-
| <code>table-proprietary</code>
| {{tl|proprietary}} || {{proprietary}} || {{tlp|proprietary|custom extension}} || {{proprietary|custom extension}}
|-
| <code>table-nonfree</code>
| {{tl|nonfree}} || {{nonfree}} || {{tlp|nonfree|paid}} || {{nonfree|paid}}
|-
| <code>table-needs</code>
| {{tl|needs}} || {{needs}} || {{tlp|needs|req.}} || {{needs|req.}}
|-
| <code>table-nightly</code>
| {{tl|nightly}} || {{nightly}} || {{tlp|nightly|dev}} || {{nightly|dev}}
|-
| <code>table-release-candidate</code>
| {{tl|release-candidate}} || {{release-candidate}} || {{tlp|release-candidate|RC}} || {{release-candidate|RC}}
|-
| <code>table-draw</code>
| {{tl|draw}} || {{draw}} || {{tlp|draw|1:1}} || {{draw|1:1}}
|-
| <code>table-planned</code>
| {{tl|planned}} || {{planned}} || {{tlp|planned|July 2028}} || {{planned|July 2028}}
|-
| <code>table-scheduled</code>
| {{tl|scheduled}} || {{scheduled}} || {{tlp|scheduled|3 March 2027}} || {{scheduled|3 March 2027}}
|-
| <code>incorrect</code>
| {{tl|incorrect}} || {{incorrect}} || {{tlp|incorrect|wrong}} || {{incorrect|wrong}}
|-
| <code>noresult</code>
| {{tl|no result}} || {{no result}} || {{tlp|no result|NR}} || {{no result|NR}}
|-
| rowspan=8 | <code>table-debate</code>
| {{tl|D-P}} || {{D-P}} || {{tlp|D-P|present}} || {{D-P|present}}
|-
| {{tl|D-A}} || {{D-A}} || {{tlp|D-A|absent}} || {{D-A|absent}}
|-
| {{tl|D-I}} || {{D-I}} || {{tlp|D-I|invited}} || {{D-I|invited}}
|-
| {{tl|D-O}} || {{D-O}} || {{tlp|D-O|invited to other debate}} || {{D-O|invited to other debate}}
|-
| {{tl|D-N}} || {{D-N}} || {{tlp|D-N|not invited}} || {{D-N|not invited}}
|-
| {{tl|D-Nv}} || {{D-Nv}} || {{tlp|D-Nv|not voting}} || {{D-Nv|not voting}}
|-
| {{tl|D-W}} || {{D-W}} || {{tlp|D-W|withdrawn}} || {{D-W|withdrawn}}
|-
| {{tl|D-Out}} || {{D-Out}} || {{tlp|D-Out|out of race}} || {{D-Out|out of race}}
|-
|rowspan=14| <code>table-cast</code>
| {{tl|CMain}} || {{CMain}} || {{tlp|CMain|text}} || {{CMain|text}}
|-
| {{tl|CAlso starring}} || {{CAlso starring}} || {{tlp|CAlso starring|costar}} || {{CAlso starring|costar}}
|-
| {{tl|CRecurring}} || {{CRecurring}} || {{tlp|CRecurring|regular guest}} || {{CRecurring|regular guest}}
|-
| {{tl|CGuest}} || {{CGuest}} || {{tlp|CGuest|victim}} || {{CGuest|victim}}
|-
| {{tl|COther}} || {{COther}} || {{tlp|COther|ensemble}} || {{COther|ensemble}}
|-
| {{tl|CNone}} || {{CNone}} || {{tlp|CNone|cast}} || {{CNone|cast}}
|-
| {{tl|CEmpty}} || {{CEmpty}} || ||
|-
| {{tl|CRemoved}} || {{CRemoved}} || {{tlp|CRemoved|edited}} || {{CRemoved|edited}}
|-
| {{tl|CFinalist}} || {{CFinalist}} || {{tlp|CFinalist|text{{=}}white|color{{=}}darkblue|contender}} || {{CFinalist|text=white|color=darkblue|contender}}
|-
| {{tlp|CFinalist|place{{=}}3rd Place}} || {{CFinalist|place=3rd Place}} || {{tlp|CFinalist|place{{=}}third place}} || {{CFinalist|place=third place}}
|-
| {{tl|exempt}} || {{exempt}} || {{tlp|Black Exempt}} || {{Black Exempt}}
|-
| {{tl|nocontest}} || {{nocontest}} || {{tlp|nocontest|rescheduled}} || {{nocontest|rescheduled}}
|-
| {{tl|Runner-up}} || {{Runner-up}} || {{tlp|Runner-up|2nd place}} || {{Runner-up|2nd place}}
|-
| {{tl|Quit}} || {{Quit}} || {{tlp|Quit|left}} || {{Quit|left}}
|-
|rowspan=3| ''no class''
| {{tl|not yet}} || {{not yet}} || {{tlp|not yet|NY}} || {{not yet|NY}}
|-
| {{tl|optional}} || {{optional}} || {{tlp|optional|non-mandatory}} || {{optional|non-mandatory}}
|-
| {{tlp|shade|25}}% || {{shade|25}}% || {{tlp|shade|75}}% || {{shade|75}}%
|}</div>
== Code ==
Common code to most if not all the templates in this series:
:<code>{{Table cell templates|class=''automatic''|text=''text''|bg=#''abcdef''}}</code>
<includeonly>{{#switch:{{SUBPAGENAME}}|doc|sandbox=|#default=
Code specific to this template:
:<code>{{ {{FULLPAGENAME}} }}</code>
{{{doc|}}}
}}</includeonly>
== Creating new templates ==
To make a new table cell template you can use:
:<syntaxhighlight lang=text inline>{{subst:Table cell templates|text= default text |bg= background color |class= a class name without prefix |align= standard horizontal alignment}}</syntaxhighlight>
You should leave out the <code>align</code> parameter and often the <code>class</code> parameter is unnecessary, too.
Add the new template to the table in the [[Template:Table cell templates/doc|common documentation]] afterwards. Please consider reusing one of the other templates and please choose the color sensibly.
If you find a table cell template that does not take a parameter and you want to be able to change the text in the cell, ''do not'' duplicate the template! Instead, edit the template and change the text to a default parameter substitution. For example, if a template's text is <code>Dropped</code>, change that to <code><nowiki>{{{1|Dropped}}}</nowiki></code>.
:<syntaxhighlight lang=text inline>style="background: #abcdef; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="automatic table-automatic"| {{{1|text}}}</syntaxhighlight>
== Color subpage ==
All templates should either have a <code>/bgcolor</code> subpage that contains nothing but a valid CSS color code, possibly wrapped in ''nowiki'' tags, e.g. <code><nowiki>#BFD</nowiki></code>, which can be included with <code><nowiki>background: {{/bgcolor}};</nowiki></code> in the <code>style</code> attribute, or they should reference another template's subpage, e.g. <code><nowiki>background: {{Template:Yes2/bgcolor}};</nowiki></code>. Alternatively, the <code>/bgcolor</code> subpage may redirect to another color code subpage: <code><nowiki>#REDIRECT [[yes2/bgcolor]]</nowiki></code>.
This way, pages that are using these templates may also use {{tl|legend}} and similar templates which can reference the actual color: <code><nowiki>{{legend|{{yes2/bgcolor}}|supported}}</nowiki></code>
== TemplateData ==
{{TemplateData header}}
<templatedata>{
"description": "One of several templates for styling individual table cells with standard contents and colors.",
"params": {
"1": {
"label": "text",
"description": "text to be displayed instead of the default, if this doesn't work put the text after the template, possibly with a vertical bar | in between",
"type": "content",
"default": "(template dependent)",
"required": false,
"suggested": false
},
"align": {
"label": "horizontal align",
"description": "text alignment inside the cell, either 'left', 'right', 'center' or 'justified'",
"default": "center",
"inherits": "1",
"type": "string",
"suggested": false
},
"style": {
"label": "style",
"description": "a semicolon separated list of additional CSS rules to be applied to the table cell",
"inherits": "1",
"type": "string",
"suggested": false
},
"color": {
"label": "background color",
"description": "a valid CSS color value or name to override the standard the cell background, only available with some templates",
"inherits": "1",
"type": "line",
"suggested": false
}
},
"format": "inline"
}</templatedata>
== See also ==
* {{tl|Change}} – calculates, displays and color-codes changes between two values
* {{tl|BSD-lic}} – specialized redirect for {{tlf|free}}
* {{tl|GPL-lic}} – specialized redirect for {{tlf|free}}
* {{tl|LGPL-lic}} – specialized redirect for {{tlf|free}}
== Notes ==
{{reflist}}
<includeonly>{{Sandbox other||{{#switch:{{SUBPAGENAME}}|doc=|#default=
<!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Unified table cell templates]]
}}}}</includeonly>
0eswbv06bz5mw4en1j3x3lfqvhl213d
Template:Table section
10
1235
2702
2701
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2701
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Table section}} begin-->{{Ambox
| name = Table section
| type = content
| small = {{{small|left}}}
| image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=[icon]]]
| issue = '''This section needs a table to organize its content better.'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}}
|  with: {{{with|{{{for|{{{1}}}}}}}}}}}.<br/>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} adding to it].
| fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit§ion={{{section|}}}}} adding to it]. [[Help:Editing|Editing help]] is available.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Articles with sections that need a table
<!--| cat3 = Wikipedia table cleanup-->
}}<!--{{Table section needs prose}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
8f4fvtdt9wdd077nf9uqd8abw8zcajf
Template:Table section needs prose
10
1274
2780
2779
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2779
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Table section needs prose}} begin-->{{Ambox
| name = Table section needs prose
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = This {{{1|section}}} '''is in a table format that [[Wikipedia:Manual of Style/Tables#Prose|may be better]] if supplemented with [[Wikipedia:Prose|prose]].'''
| fix = You can help by adding a prose summary of the table(s). [[Help:Editing|Editing help]] is available.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Articles with sections that need to be turned into prose
<!--| cat3 = Wikipedia table cleanup-->
}}<!--{{Table section needs prose}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
koajbbymfpr0qtbuuy6wh2qkgkoyp1u
Template:Table to prose
10
1173
2578
2577
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2577
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Table to prose}} begin-->{{Ambox
| name = Table to prose
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = This {{{1|article}}} '''is in a table format that [[Wikipedia:Manual of Style/Tables#Prose|may be better presented]] using [[Wikipedia:Prose|prose]].'''
| fix = You can help by converting this {{{1|article}}} to prose. [[Help:Editing|Editing help]] is available.
| date = {{{date|}}}
| cat = Articles needing cleanup
| all = All pages needing cleanup
| cat2 = Articles with sections that need to be turned into prose
<!--| cat3 = Wikipedia table cleanup-->
}}<!--{{Table to prose}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
hs1pq50ghrjh3p9s5nj100j6tk6p8bo
Template:Tag
10
878
1988
1987
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1987
wikitext
text/x-wiki
<code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!--
Opening tag
-->{{#switch:{{{2|pair}}}
|c|close =
|e|empty|s|single|v|void
|o|open
|p|pair = <{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}| {{{params|{{{attribs}}}}}}}}
}}<!--
Content between tags
-->{{#switch:{{{2|pair}}}
|c|close = {{{content|}}}
|e|empty|s|single|v|void =  />
|o|open = >{{{content|}}}
|p|pair = {{#ifeq:{{{1|tag}}}|!--||>}}{{{content|...}}}
}}<!--
Closing tag
-->{{#switch:{{{2|pair}}}
|e|empty|s|single|v|void
|o|open =
|c|close
|p|pair = {{#ifeq:{{{1|tag}}}|!--|-->|</{{{1|tag}}}>}}
}}<!--
--></code><noinclude>
{{Documentation}}
</noinclude>
rfqa950ndrmgt6ozaa81dwgyr2n28ea
Template:Tamil script needed
10
1064
2360
2359
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2359
wikitext
text/x-wiki
{{Script needed
|language = Tamil
|image = Tamil_A.svg
}}
dzg85g1lmo7op7kt7cuvztehxqkc9f8
Template:Technical
10
935
2102
2101
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2101
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Technical
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = style
| class = ambox-technical
| issue =
{{#ifeq: {{{1|}}} | introduction
<!-- Introduction -->
| The introduction of this article '''may be too technical for most readers to understand'''. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] to [[Wikipedia:Make technical articles understandable|make it understandable to non-experts]].
<!-- Article or section -->
| This {{{1|article}}} '''may be too technical for most readers to understand'''. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] to [[Wikipedia:Make technical articles understandable|make it understandable to non-experts]], without removing the technical details.}}
| talk = {{{talk|}}}
| fix =
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia articles that are too technical
| all = All articles that are too technical
}}
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
</noinclude>
2xh3idvcgbipskqlfc9n8knfxkvk1vt
Template:TemplateDataHeader
10
1622
4892
4891
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4891
wikitext
text/x-wiki
#REDIRECT [[Template:TemplateData header]]
{{R from move}}
bfnm7z66t4q2d8otfa0y3vtgkcwrfao
Template:TemplateData header
10
1480
3264
3263
2020-10-11T01:41:31Z
Chrisb
1
1 revision imported
3263
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> documentation for this template used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools; {{Template parameter usage|lc=yes}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
1nfml12ojtxh0l65pjhlb0pfq55ejy3
Template:Template link with alternate text
10
1301
2834
2833
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2833
wikitext
text/x-wiki
{{Tlg|subst={{{subst|}}}|nowrap={{{nowrap|}}}|{{{1|}}}<!--
-->|alttext{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!--
-->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!--
-->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!--
-->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!--
-->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!--
-->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!--
-->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!--
-->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!--
-->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!--
-->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!--
-->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude>
{{Documentation}}
</noinclude>
ekbj8d6mb201bbowib5w307op3y4n8t
Template:Template link with link off
10
897
2026
2025
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2025
wikitext
text/x-wiki
{{Tlg|nowrap=yes|nolink=yes|subst={{{subst|}}}|{{{1|}}}<!--
-->|2{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!--
-->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!--
-->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!--
-->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!--
-->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!--
-->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!--
-->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!--
-->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!--
-->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!--
-->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!--
-->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc sub-page, not here! -->
</noinclude>
fkwut59rh3dw297vmoghk9vvheiut49
Template:Template link with parameters
10
1585
4818
4817
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4817
wikitext
text/x-wiki
<span {{#if:{{{wrap|}}}||class="nowrap"}}>{{[[Template:{{{1}}}|{{{1}}}]]<!--
-->{{#ifeq:{{{2|x}}}|{{{2|}}}| |{{{2}}} }}<!--
-->{{#ifeq:{{{3|x}}}|{{{3|}}}| |{{{3}}} }}<!--
-->{{#ifeq:{{{4|x}}}|{{{4|}}}| |{{{4}}} }}<!--
-->{{#ifeq:{{{5|x}}}|{{{5|}}}| |{{{5}}} }}<!--
-->{{#ifeq:{{{6|x}}}|{{{6|}}}| |{{{6}}} }}<!--
-->{{#ifeq:{{{7|x}}}|{{{7|}}}| |{{{7}}} }}<!--
-->{{#ifeq:{{{8|x}}}|{{{8|}}}| |{{{8}}} }}<!--
-->{{#ifeq:{{{9|x}}}|{{{9|}}}| |{{{9}}} }}<!--
-->}}</span><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
fisoz2d5yplkufipxpjgx4wkvb2bp42
Template:Template other
10
1302
2836
2835
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2835
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
0tcssjmltwl7y5v3f5wj2kqciaabqly
Template:Template parameter usage
10
1481
3266
3265
2020-10-11T01:41:31Z
Chrisb
1
1 revision imported
3265
wikitext
text/x-wiki
{{#switch:{{{label|}}}
|={{#ifeq:{{yesno-no|{{{lc}}}}}|no|S|s}}ee the monthly [https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} parameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}.
|None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} Parameter usage report]
|for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} Parameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}.
|#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]
}}<noinclude>
{{documentation}}
</noinclude>
nys7rq3f7mo5i0jg8le26o25eif0tt9
Template:Term paper
10
1108
2448
2447
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2447
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Term paper}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Term paper
| type = style
| text = This {{{1|article}}} '''reads like a [[WP:NOTTEXTBOOK|term paper]] and may require [[Wikipedia:Cleanup|cleanup]]'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} to improve this article] to make it [[WP:NPOV|neutral]] in tone and meet Wikipedia's [[WP:STYLE|quality standards]].
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Term paper}} end-->
}}<noinclude>{{Documentation}}</noinclude>
6y8x0hfd9xrpdjmjk3rhq5k1bo9li5i
Template:Terminated
10
1586
4820
4819
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4819
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #EDF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="dropped table-dropped"|{{{1|Terminated}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
80o6crsbgp8l4l4xupomlezzsi0j4mm
Template:Text-source
10
1222
2676
2675
2020-09-29T19:18:05Z
Chrisb
1
1 revision imported
2675
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ambox
| name = {{{name|Text-source}}}
| subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Ambox important.svg|50x40px|alt=]]
| smallimage = none
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may contain [[WP:CITEBUNDLE|bundled citations]] with poor [[WP:INTEGRITY|text–source integrity]].'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] this article by [[WP:VERIFY|verifying its sources]], moving citations closer to the claims they support, and [[WP:SYNTH|removing original synthesis]].
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Wikipedia articles needing factual verification
| all =
}}<!--{{Text-source}} end-->
}}<noinclude>
{{documentation}}<!-- Please add categories and interwikis to the /doc subpage, thanks -->
</noinclude>
cvssjwwro6n3g96xwwp23364u8qg0sw
Template:Textbook
10
1239
2710
2709
2020-09-29T19:18:07Z
Chrisb
1
1 revision imported
2709
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Textbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Textbook
| type = style
| text = This {{{1|article}}} '''reads like a [[WP:NOTTEXTBOOK|textbook]] and may require [[Wikipedia:Cleanup|cleanup]]'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} to improve this article] to make it [[WP:NPOV|neutral]] in tone and meet Wikipedia's [[WP:STYLE|quality standards]].
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Textbook}} end-->
}}<noinclude>{{Documentation}}</noinclude>
t6lj9hu8zsfox7fcw0ipf1bt1cxd77m
Template:Tfd off topic
10
1195
2622
2621
2020-09-29T19:18:01Z
Chrisb
1
1 revision imported
2621
wikitext
text/x-wiki
{{ambox|name=Tfd off topic|image=[[File:People together.svg|60px|link=|alt=]]|issue=While this deletion discussion may be a contentious issue, editors are reminded to keep their comments on topic and remain [[WP:CIVIL|civil]]. [[WP:NPA|Personal attacks]] will not help your stance and could result in administrator action.}}<noinclude>
{{documentation}}
</noinclude>
a4b4h70b2jcuv67id4280wnoz2qvefj
Template:Thai script needed
10
1002
2236
2235
2020-09-29T19:17:33Z
Chrisb
1
1 revision imported
2235
wikitext
text/x-wiki
{{Script needed
|language = Thai
|image = Thai Alphabet Sample.svg
}}
euu28dn5szhf065yeostaqqzksk5a1f
Template:Third-party
10
1232
2696
2695
2020-09-29T19:18:06Z
Chrisb
1
1 revision imported
2695
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Third-party
| type = content
| image = [[File:Question book-new.svg|50x40px]]
| issue = This {{{1|article}}} '''may rely excessively on sources [[Wikipedia:Verifiability#Self-published sources|too closely associated with the subject]]''', potentially preventing the article from being [[Wikipedia:Verifiability|verifiable]] and [[Wikipedia:Neutral point of view|neutral]].
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by replacing them with more appropriate [[Wikipedia:Citing sources|citations]] to [[Wikipedia:Identifying and using independent sources|reliable, independent, third-party sources]]. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}}
| date = {{{date|}}}
|removalnotice = yes
}}{{DMCA|Articles lacking reliable references|from|{{{date|}}}|All articles lacking reliable references}}
}}<noinclude>
{{Documentation}}
</noinclude>
lojicw65wgu8e0qklh25uv2wol6jh1h
Template:Tibetan script needed
10
998
2228
2227
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2227
wikitext
text/x-wiki
{{Script needed
|language = Tibetan
|image = Standard Tibetan name.svg
}}
p6abh8gviiqid977xgelc8jqhgsu3oz
Template:Tick
10
1636
4920
4919
2020-10-11T05:50:32Z
Chrisb
1
1 revision imported
4919
wikitext
text/x-wiki
[[{{ {{{|safesubst:}}}#switch:{{ {{{|safesubst:}}}lc:{{{color|{{{colour|}}}}}} }}
|green |grn |gn =File:Yes check.svg
|lightgreen |lgreen |lgrn |lgn =File:Light green check.svg
|red |rd |r =File:Red check.svg
|darkred |dkred |drd |dr =File:Check-188-25-49-red.svg
|pink |pnk |pk =File:Pink check.svg
|orange |or |o =File:Check.svg
|yellow |yel |y =File:Yellow check.svg
|black |blk |k =File:Black check.svg
|blue |blu |u =File:Check-blue.svg
|lightblue |lblue |lblu |lb =File:Cornflower blue check.svg
|cyan |cy |c =File:Check-blue.svg
|purple |pur |pu =File:Purple check.svg
|grey |gray |gry |gy =File:SemiTransBlack v.svg
|brown |brn |bn =File:Svg check.svg
<!--default--> |File:Yes check.svg
}}|{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|20}}px|link=|alt=☑]]<span style="display:none">Y</span><!--template:tick--><noinclude>
{{documentation}}
</noinclude>
epgrpht6ep3dnxgufngcdzbm1v784zq
Template:Time-context
10
1109
2450
2449
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2449
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Time-context}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Time-context
| type = content
| image = [[Image:Ambox currentevent yellow.svg|50px|alt=|link=]]
| issue = This {{{1|article}}} is about an event or subject '''{{{2|that may not be current but does not specify the time period}}}'''.
| fix = Please help [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} improve it] to include this information. The [[{{TALKPAGENAME}}|talk page]] may contain suggestions. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}}
}}{{DMCA|Wikipedia articles needing context|from|{{{date|}}}|All Wikipedia articles needing context}}{{DMCA|Wikipedia introduction cleanup|from|{{{date|}}}|All pages needing cleanup}}<!--{{Time-context}} end-->
}}<noinclude>{{doc}}</noinclude>
5s0dtbpk9v5g4rhug5dpljdksskygz0
Template:Timeline of MacBook Family Models
10
1457
3218
3217
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3217
wikitext
text/x-wiki
#REDIRECT [[Template:Timeline of MacBook family models]]
3fo755x25qyfh7xowaauvjus2mz4v1v
Template:Timeline of MacBook family models
10
1458
3220
3219
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3219
wikitext
text/x-wiki
{{{headerextension|}}}{{{header|==Timeline of the MacBook family==}}}{{{headerextension|}}}
{{see also|Timeline of Macintosh models}}
{{#tag:timeline|
DateFormat=mm/dd/yyyy
Define $now = {{CURRENTMONTH}}/{{CURRENTDAY2}}/{{CURRENTYEAR}}
Define $later = {{#time:m/d/Y|+15 months}}
Period = from:01/01/2006 till:$later
Define $skip = at:end # Force a blank line
Define $dayunknown = 15 # what day to use if it's actually not known
ImageSize= width:1050 height:auto barincrement:22
TimeAxis = orientation:horizontal
PlotArea = right:4 left:0 bottom:100 top:5
Colors =
id:bg value:white
id:lightline value:rgb(0.9,0.9,0.9)
id:lighttext value:rgb(0.5,0.5,0.5)
id:mb1 value:rgb(0.9,0.7,0.8) legend:MacBook
id:mb2 value:rgb(0.9,0.6,0.8)
id:mb3 value:rgb(0.9,0.5,0.8) legend:MacBook_(Unibody)
id:mbau value:rgb(0.9,0.6,0.6)
id:mb4 value:rgb(0.9,0.8,0.5) legend:MacBook_(Retina_and_USB-C)
id:mba value:rgb(0.4,0.9,0.9) legend:MacBook_Air
id:mba2 value:rgb(0.0,0.8,0.7) legend:MacBook_Air_(tapered_and_dual_USB)
id:mba3 value:rgb(0.0,1,0.7) legend:MacBook_Air_(Retina_and_Thunderbolt_3)
id:mbp1 value:rgb(0.8,0.7,1) legend:MacBook_Pro
id:mbp2 value:rgb(0.7,0.7,1)
id:mbp3 value:rgb(0.6,0.5,1) legend:MacBook_Pro_(Unibody)
id:mbp4 value:rgb(0.5,0.5,1)
id:mbp5 value:rgb(0.3,0.5,1) legend:MacBook_Pro_(Retina)
id:mbp6 value:rgb(0.3,0.7,1) legend:MacBook_Pro_(Thunderbolt_3)
id:mbp7 value:rgb(0.2,0.9,1) legend:MacBook_Pro_(Magic_Keyboard)
id:nmb1 value:rgb(0.0,1,0.7)
id:current value:rgb(0.9,0.9,0.9) legend:Reference/Still_currently_produced
BackgroundColors = canvas:bg
ScaleMajor = gridcolor:lighttext unit:year increment:1 start:01/01/2006
ScaleMinor = gridcolor:lightline unit:month increment:1 start:01/01/2006
Legend = orientation:vertical position:bottom columns:4
BarData =
barset:macbookair
barset:macbook
barset:macbookpro
barset:null
barset:reference
PlotData=
width:15 textcolor:black shift:(5,-5) anchor:from fontsize:s
barset:macbookair
$skip
$skip
color:mba from:02/01/2008 till:10/19/2010 text:"[[MacBook Air]] 13''"
barset:break
color:mba2 from:10/20/2010 till:10/27/2016 text:"[[MacBook Air]] 11'' (tapered)"
color:mb4 from:03/09/2015 till:07/09/2019 text:"[[MacBook_(2015–2019)|MacBook]] 12'' (Retina)"
color:mba2 from:10/20/2010 till:07/09/2019 text:"[[MacBook Air]] 13'' (tapered)"
barset:break
$skip
$skip
$skip
color:mba3 from:10/30/2018 till:$now text:"[[MacBook Air]] 13'' (Retina)"
barset:break
$skip
$skip
$skip
color:current from:$now till:end
barset:macbook
color:mb1 from:05/16/2006 till:10/20/2009 text:"[[MacBook#Original polycarbonate model|MacBook]]"
barset:break
color:mb3 from:10/20/2009 till:07/20/2011 text:"[[MacBook#Unibody polycarbonate model|MacBook]] (plastic Unibody)"
barset:macbookpro
$skip
$skip
$skip
color:mbp1 from:02/14/2006 till:10/14/2008 text:"[[MacBook Pro#First generation|MacBook Pro]] 15''"
$skip
color:mbp1 from:04/24/2006 till:01/06/2009 text:"[[MacBook Pro#First generation|MacBook Pro]] 17''"
barset:break
color:mb3 from:10/14/2008 till:06/08/2009 text:"[[MacBook#Unibody aluminum model|MacBook]] (aluminum)"
barset:break
$skip
color:mbp3 from:06/08/2009 till:10/27/2016 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 13'' (Unibody)"
$skip
color:mbp3 from:10/14/2008 till:10/22/2013 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 15'' (Unibody)"
$skip
color:mbp3 from:01/06/2009 till:06/09/2012 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 17'' (Unibody)"
barset:break
$skip
$skip
color:mbp5 from:10/23/2012 till:06/05/2017 text:"[[MacBook Pro#Third generation (Retina)|MacBook Pro]] 13'' (Retina)"
$skip
color:mbp5 from:06/09/2012 till:07/12/2018 text:"[[MacBook Pro#Third generation (Retina)|MacBook Pro]] 15'' (Retina)"
barset:break
color:mbp6 from:10/27/2016 till:05/04/2020 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 13'' (two TB3 ports)"
$skip
$skip
color:mbp6 from:11/15/2016 till:05/04/2020 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 13'' (four TB3 ports)"
$skip
color:mbp6 from:11/15/2016 till:11/13/2019 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 15'' (four TB3 ports)"
barset:break
color:mbp7 from:05/04/2020 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 13''"
$skip
$skip
color:mbp7 from:05/04/2020 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 13''"
$skip
color:mbp7 from:11/13/2019 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 16''"
barset:break
color:current from:$now till:end
$skip
$skip
color:current from:$now till:end
$skip
color:current from:$now till:end
barset:reference
color:lightline from:start till:06/29/2007
barset:break
at:08/07/2006 mark:(line,black)
barset:break
color:lightline from:08/07/2006 till:06/29/2007 text:"[[Mac Pro]]"
barset:break
at:06/29/2007 mark:(line,black)
barset:break
color:lightline from:06/29/2007 till:04/03/2010 text:"[[iPhone]]"
barset:break
at:04/03/2010 mark:(line,black)
barset:break
color:lightline from:04/03/2010 till:04/24/2015 text:"[[iPad]]"
barset:break
at:04/24/2015 mark:(line,black)
barset:break
color:lightline from:04/24/2015 till:11/11/2015 text:"[[Apple Watch|Watch]]"
barset:break
at:11/11/2015 mark:(line,black)
barset:break
color:lightline from:11/11/2015 till:12/14/2017 text:"[[iPad Pro]]"
barset:break
at:12/14/2017 mark:(line,black)
barset:break
color:lightline from:12/14/2017 till:10/30/2019 text:"[[iMac Pro]]"
barset:break
at:10/30/2019 mark:(line,black)
barset:break
color:lightline from:10/30/2019 till:end text:"[[AirPods Pro]]"
}}
<noinclude>
[[Category:Macintosh models graphical timeline templates|MacBook]]
</noinclude>
jdjcq4cqkwg81d3zm8v3fa6xm6jwd0e
Template:Tl
10
879
1990
1989
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1989
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
h0vr3yvr9jdyd17x82vnav21ngwmxuk
Template:Tla
10
1303
2838
2837
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2837
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with alternate text]]
{{Redirect category shell|
{{R from move}}
}}
a5y15g6h6c42e4kt2bvqk2c2vejgg6y
Template:Tlc
10
1587
4822
4821
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4821
wikitext
text/x-wiki
<span class="nowrap"><code>{{#if:{{{a|}}}|<nowiki>* </nowiki>}}{{{{#if:{{{1|}}}|{{{1}}}| tlc|...}}<!--
-->{{#ifeq:{{{2|x}}}|{{{2|}}}| |{{{2}}} | }}<!--
-->{{#ifeq:{{{3|x}}}|{{{3|}}}| |{{{3}}} | }}<!--
-->{{#ifeq:{{{4|x}}}|{{{4|}}}| |{{{4}}} | }}<!--
-->{{#ifeq:{{{5|x}}}|{{{5|}}}| |{{{5}}} | }}<!--
-->{{#ifeq:{{{6|x}}}|{{{6|}}}| |{{{6}}} | }}<!--
-->{{#ifeq:{{{7|x}}}|{{{7|}}}| |{{{7}}} | }}<!--
-->{{#ifeq:{{{8|x}}}|{{{8|}}}| |{{{8}}} | }}<!--
-->{{#ifeq:{{{9|x}}}|{{{9|}}}| |{{{9}}} | }}<!--
-->}}</code></span><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
r4jvlzt5ug7ybzetwa1vcthegyqpq1c
Template:Tlf
10
898
2028
2027
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2027
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with link off]]
{{Redirect category shell|
{{R from move}}
}}
9mrb4gzoa8i94zzxq5i6opzke6v5ntr
Template:Tlg
10
899
2030
2029
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2029
wikitext
text/x-wiki
{{#Invoke:Tlg|main}}<noinclude>
{{Documentation}}
</noinclude>
lzp4kn7ui0gm80auun61tr0zlefr1zx
Template:Tlp
10
1588
4824
4823
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4823
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with parameters]]
{{R from move}}
6l74hww4lk18kiq6ytyy69dsjvrnwju
Template:Tlx
10
1317
2866
2865
2020-09-29T19:18:21Z
Chrisb
1
1 revision imported
2865
wikitext
text/x-wiki
<code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!--
-->[[{{{lang|{{{LANG|}}}}}}{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!--
-->{{#if:{{{2|}}} ||{{{2}}}}}<!--
-->{{#if:{{{3|}}} ||{{{3}}}}}<!--
-->{{#if:{{{4|}}} ||{{{4}}}}}<!--
-->{{#if:{{{5|}}} ||{{{5}}}}}<!--
-->{{#if:{{{6|}}} ||{{{6}}}}}<!--
-->{{#if:{{{7|}}} ||{{{7}}}}}<!--
-->{{#if:{{{8|}}} ||{{{8}}}}}<!--
-->{{#if:{{{9|}}} ||{{{9}}}}}<!--
-->{{#if:{{{10|}}} ||{{{10}}}}}<!--
-->{{#if:{{{11|}}} ||{{{11}}}}}<!--
-->{{#if:{{{12|}}} ||{{{12}}}}}<!--
-->{{#if:{{{13|}}} ||{{{13}}}}}<!--
-->{{#if:{{{14|}}} ||{{{14}}}}}<!--
-->{{#if:{{{15|}}} ||{{{15}}}}}<!--
-->{{#if:{{{16|}}} ||{{{16}}}}}<!--
-->{{#if:{{{17|}}} ||{{{17}}}}}<!--
-->{{#if:{{{18|}}} ||{{{18}}}}}<!--
-->{{#if:{{{19|}}} ||{{{19}}}}}<!--
-->{{#if:{{{20|}}} ||{{{20}}}}}<!--
-->{{#if:{{{21|}}} ||''...''}}<!--
--><nowiki>}}</nowiki></code>{{#if: {{{LANG|}}} | {{Z181}} | {{#if: {{{SISTER|}}} | {{Z181}} }} }}<noinclude>
{{Documentation}}
</noinclude>
1zx1keyq77wroc6nnxhxbv49on9i1og
Template:Tmbox
10
913
2058
2057
2020-09-29T19:17:22Z
Chrisb
1
1 revision imported
2057
wikitext
text/x-wiki
{{#invoke:Message box|tmbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
jcav8pdjkvcwg8gc4m0b4gox7yjnxku
Template:Tmbox/doc
10
1304
2840
2839
2020-09-29T19:18:16Z
Chrisb
1
1 revision imported
2839
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-risk| 2553167 |all-pages = yes}}
{{Lua|Module:Message box}}
<!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE -->
{{Mbox templates (small)}}
This is the {{tl|Tmbox}} (['''T''']alk page ['''m''']essage ['''box''']) metatemplate. This template is called by other templates to give a consistent structure and appearance to boilerplate messages used on talk pages across the project. It ''may'' be called directly on a talk page in order to present a one-off message in the same format as boilerplate messages, but this is non-standard (if a message is important enough to be presented in this form, you should consider creating a separate template so that it is easily available to other editors). Tmbox offers several different colors for different purposes, provides default images if no image parameter is given, and has some other pleasant features. This template works similarly to {{tl|Ambox}} and uses the same parameters.
This template should not be used for WikiProject banners. Such banners have special programming constraints that merit their own meta-templates. See the "See also" section below for links.
=== Suggested style standard ===
The types of talkpage messageboxes follow the same naming convention as the boxes for all other namespaces, but the type of any particular talkpage messagebox may not be as obvious as in other namespaces. When deciding on the type to use for a talkpage messagebox, please consider the following guidelines:
* '''speedy''' should ''only'' be used for [[:Category:Speedy deletion templates|speedy deletion templates]].
* '''delete''' should ''only'' be used for templates relating to ''ongoing'' deletion discussions. Please do ''not'' use this type just to get a red border for a messagebox.
* '''content''' and '''style''' should be used for warnings and alerts. Use '''content''' (which has an orange border) for more important and immediate alerts, and '''style''' (yellow border) for less important warnings. Messageboxes of these types should ideally be ''transitory'': they should not be expected to remain on a talkpage indefinitely.
* '''move''' and '''protection''' should only be used for messageboxes relating to moves and merges, and page protection, respectively.
* The '''notice''' type should be used for the majority of talkpage messageboxes; those that are intended to convey or summarise information. If a talkpage messagebox does not obviously fit into one of the other types, it is probably a notice type.
=== Usage ===
Simple usage example:
<pre>
{{tmbox | text = Some text.}}
</pre>
{{tmbox | text = Some text.}}
Complex example:
<pre>
{{tmbox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px|link=|alt=]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
</pre>
{{tmbox
| type = style
| image = [[File:Emblem-question-yellow.svg|40px|link=|alt=]]
| style = width: 400px;
| textstyle = color: red; font-weight: bold; font-style: italic;
| text = The message body text.
}}
=== Talk page message box types ===
The following examples use different '''type''' parameters but use no image parameters thus they use the default images for each type.
{{tmbox
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion templates.
}}
{{tmbox
| type = delete
| text = type=<u>delete</u> – Deletion templates.
}}
{{tmbox
| type = content
| text = type=<u>content</u> – Major warnings and problems.
}}
{{tmbox
| type = style
| text = type=<u>style</u> – Minor warnings and problems.
}}
{{tmbox
| type = notice
| text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary.
}}
{{tmbox
| type = move
| text = type=<u>move</u> – Merge, split, rename and transwiki messages and proposals.
}}
{{tmbox
| type = protection
| text = type=<u>protection</u> – Protection templates.
}}
=== Special ===
Some other parameter combinations.
{{tmbox
| text = No type and no image given ('''default''')
}}
{{tmbox
| image = none
| text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area.
}}
{{tmbox
| image = [[File:Gnome globe current event.svg|42px]]
| imageright = [[File:Nuvola apps bookcase.svg|40px]]
| text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki> <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki>
}}
=== Parameters ===
List of all parameters:
<pre>
{{tmbox
| name = name of the template
| type = speedy / delete / content / style / notice / move / protection
| image = none / [[File:Some image.svg|40px]]
| imageright = [[File:Some image.svg|40px]]
| style = CSS values
| textstyle = CSS values
| plainlinks = no
| text = The message body text.
| small = {{{small|}}} / yes
| smallimage = none / [[File:Some image.svg|30px]]
| smallimageright = none / [[File:Some image.svg|30px]]
| smalltext = A shorter message body text.
}}
</pre>
'''name'''
:(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts.
'''type'''
:If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a gray border.
'''image'''
:'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>image = [[File:Crystal package settings.png|40px]]</nowiki></code>
:'''none''' = Means that no image is used.
{{Anchor|imageright}}'''imageright'''
:'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example:
::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
'''style'''
:Optional [[Cascading Style Sheets|CSS]] values used by the entire message box table. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example:
::<code>style = margin-bottom: 0.5em;</code>
'''textstyle'''
:Optional [[Cascading Style Sheets|CSS]] values used by the text cell. For example:
::<code>textstyle = text-align: center;</code>
'''plainlinks'''
:Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
'''text'''
:The message body text.
==== The small parameters ====
{{tmbox
| small = yes
| text = small = yes
}}
{{tmbox
| type = style
| small = yes
| text = type = style <br> small = yes
}}
'''small'''
:'''yes''' = Makes it a smaller right floating message box. This also makes the default images smaller. Note that any data fed to the '''smallimage''', '''smallimageright''' and '''smalltext''' parameters is only used if "small=yes". To make it so your template also understands the small parameter you can use this code:
::<code><nowiki>small = {{{small|}}}</nowiki></code>
{{tmbox
| small = yes
| image = [[File:Nuvola apps bookcase.svg|40px]]
| smallimage = [[File:Nuvola apps bookcase.svg|30px]]
| text =
small = yes <br> image = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> <br> smallimage = <nowiki>[[File:Nuvola apps bookcase.png|30px]]</nowiki>
}}
'''smallimage'''
:'''No parameter''' = If no '''smallimage''' parameter is given then this template falls back to use the '''image''' parameter. If the '''image''' parameter also is empty then a small default image is used.
:'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example:
::<code><nowiki>smallimage = [[File:Crystal package settings.png|30px]]</nowiki></code>
:'''none''' = Means that no image is used. This overrides any image fed to '''image''', when "small=yes".
{{tmbox
| small = yes
| imageright = [[File:Nuvola apps bookcase.svg|40px]]
| text =
small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki>
}}
{{tmbox
| small = yes
| imageright = [[File:Nuvola apps bookcase.svg|30px]]
| smallimageright = none
| text =
small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> <br> smallimageright = none
}}
'''smallimageright'''
:'''No parameter''' = If no '''smallimageright''' parameter is given then this template falls back to use the '''imageright''' parameter. If the '''imageright''' parameter also is empty then no image is shown on the right side.
:'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example:
::<code><nowiki>smallimageright = [[File:Nuvola apps bookcase.png|30px]]</nowiki></code>
:'''Anything''' = Any other object that you want to show on the right side.
:'''none''' = Means that no right side image is used. This overrides any image fed to '''imageright''', when "small=yes".
'''smalltext'''
:A shorter version of the message body text. If no '''smalltext''' parameter is given then this template falls back to use the '''text''' parameter.
=== Technical details ===
If you need to use special characters in the text parameter then you need to escape them like this:
<pre>
{{tmbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</pre>
{{tmbox
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
This template uses the tmbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable.
This template calls [[Module:Message box]] which holds most of the code for {{tl|tmbox}}, while {{tl|tmbox}} itself does parameter preprocessing.
Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and special characters in parameters.
For more technical details see the [[Template talk:Tmbox|talk page]]. Since this template works almost exactly like {{tl|ambox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}} their talk pages and related pages might also contain more details.
=== See also ===
Similar templates:
* {{tl|Notice}}
{{Mbox templates see also}}
Other pages:
* [[Wikipedia:Talk page templates]] – The guideline specifying the styles for talk page message boxes.
WikiProject banners:
* {{tl|WikiProject banner shell}} and {{tl|WPBannerMeta}} – A system for collapsing, wrapping and creating WikiProject banners.
* {{tl|WikiProjectBanners}} – Another system for collapsing WikiProject banners.
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Mbox and messagebox templates]]
[[Category:Talk namespace templates| ]]
}}</includeonly>
rnr6bbonseh2oxuilrhnh42avboi0x3
Template:Tnull
10
1623
4894
4893
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4893
wikitext
text/x-wiki
<code>{{{{#if:{{{1|}}}|{{{1}}}| tnull|...}}{{#if:{{{2|}}}||{{{2}}}|}}{{#if:{{{3|}}}||{{{3}}}|}}{{#if:{{{4|}}}||{{{4}}}|}}{{#if:{{{5|}}}||{{{5}}}|}}{{#if:{{{6|}}}||{{{6}}}|}}{{#if:{{{7|}}}||{{{7}}}|}}{{#if:{{{8|}}}||{{{8}}}|}}{{#if:{{{9|}}}||{{{9}}}|}}{{#if:{{{10|}}}||{{{10}}}|}}{{#if:{{{11|}}}||{{{11}}}|}}}}</code><noinclude>
{{documentation}}</noinclude>
au6y4erpe6xb0hf46tmfi592qkquye4
Template:Tok Pisin script needed
10
1067
2366
2365
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2365
wikitext
text/x-wiki
{{Script needed
|language = Tok Pisin
|image =
}}
ehjo56bzal7ifxky19j7m48pslfsn2m
Template:Tone
10
937
2106
2105
2020-09-29T19:17:25Z
Chrisb
1
1 revision imported
2105
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Tone
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-Tone
| issue = This {{{1|article}}}'s '''tone or style may not reflect the [[wp:Writing better articles#Tone|encyclopedic tone]] used on Wikipedia'''. {{#if:{{{reason|}}}|The reason given is:''' {{{reason}}} '''}}
| talk = {{{talk|}}}
| fix = See Wikipedia's [[Wikipedia:Writing better articles#Tone|guide to writing better articles]] for suggestions.
| removalnotice = yes
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>
{{Documentation}}
</noinclude>
83hr7mahvqm6awckr26nv17evaecgl4
Template:Too abstract
10
1110
2452
2451
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2451
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Too abstract}} begin-->{{Ambox
| name = Too abstract
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| image = [[File:Emblem-question-yellow.svg|40px]]
| issue = This {{{1|article or section}}} may be written in a style that is '''too abstract''' to be readily understandable by [[WP:MTAA|general audiences]].
| fix = Please [[WP:EDIT|improve]] it by defining technical terminology, and by adding examples.
| date = {{{date|}}}
| cat-date = Wikipedia articles needing clarification
}}<!--{{Too abstract}} end-->
}}<noinclude>{{Documentation}}</noinclude>
s64qa9i273xnnro3qjv4r3o5w4jaznf
Template:Too few opinions
10
1111
2454
2453
2020-09-29T19:17:48Z
Chrisb
1
1 revision imported
2453
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Too few opinions}} begin-->{{Ambox
| name = Too few opinions
| type = content
| class = ambox-too_few_opinions
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| issue = The examples and perspective in this {{{1|article}}} '''may not [[Wikipedia:WikiProject Countering systemic bias|include all significant viewpoints]]'''.
| fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] or [[{{{discuss|:{{TALKPAGENAME}}}}}|discuss the issue]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles needing more viewpoints
}}<!--{{Too few opinions}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
av7z0wrfho853g2zecjttqwss8gm5vq
Template:Too many flags
10
1279
2790
2789
2020-09-29T19:18:13Z
Chrisb
1
1 revision imported
2789
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Too many flags
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type =
| class =
| issue = This {{{1|article}}}'s use of '''[[WP:MOSICON|flags and other icons]] may not reflect the standard used on Wikipedia''' and is in need of [[Wikipedia:Cleanup|cleanup]].
| talk = {{{talk|}}}
| fix = See Wikipedia's [[WP:MOSICON|flag and icon use style guide]] for suggestions.
| date = {{{date|}}}
| cat = Wikipedia articles needing editing for flag use
| all = All articles with style issues
}}
}}<noinclude>
{{Documentation}}
</noinclude>
6hdl2xnr6z9xg4mxn0sxq9q1pmlhryp
Template:Too many photos
10
1112
2456
2455
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2455
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Too many photos}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ ambox
| name = Too many photos
| type = style
| removalnotice = yes
| image = [[file:Camera-photo.svg|50x40px]]
| issue = This {{{1|article}}} contains '''too many pictures, charts or diagrams''' for its overall length.
| fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by converting charts or diagrams into '''[[Wikipedia:Manual of Style/Embedded lists#Prose versus lists| prose text]]''' or adjusting the '''[[MOS:SANDWICHING|sandwiching of text between two images]]''' and '''[[WP:GALLERY|indiscriminate galleries]]'''. See the [[Wikipedia:Manual of Style/Images|Manual of Style on use of images]].
| date = {{{date|}}}
}}<includeonly>{{Main other|[[Category:Pages with too many photos]]}}</includeonly><!--{{Too many photos}} end-->
}}<noinclude>{{Documentation}}</noinclude>
1ryztyh83km8ipaoapt0vq6e59g53dp
Template:Too many see alsos
10
1113
2458
2457
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2457
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Too many see alsos}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Too many see alsos
| type = style
| text = This "[[Wikipedia:Manual of Style/Layout#"See also"_section|see also]]" section '''may contain an excessive number of suggestions'''. Please ensure that only the most relevant links are given, that they are not [[Wikipedia:Red link|red links]], and that any links are not already in this article. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}}
| removalnotice = yes
}}{{DMCA|Articles with excessive see also sections|from|{{{date|}}}}}<!--{{Too many see alsos}} end-->
}}<noinclude>{{documentation}}<!-- place category and language links on the /doc sub-page, not here --></noinclude>
52ezudz5tf36kbtt1l3l3zvfmwcw7aw
Template:TranslatePassage
10
1114
2460
2459
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2459
wikitext
text/x-wiki
<!--{{TranslatePassage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = TranslatePassage
| type = style
| image = [[Image:Translation to english arrow.svg|50px|Translation to english arrow icon]]
| text = '''A passage in this article or section needs to be [[Wikipedia:Translation|translated]] from {{{1|its current language}}} into English.'''<br /><small>If you are confident enough in your fluency of English and {{{1|this language}}}, please feel free to [[Wikipedia:Translation/*/How-to|add a translation]].</small>
Please see '''[[Wikipedia:Pages needing translation into English#{{PAGENAME}}|this article's entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion.
{{#ifeq: {{yesno|{{{listed|no}}}}}|yes||{{pnt notice|{{{1|unknown}}}}}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Wikipedia articles needing translation]]}}}}}</includeonly><!--{{TranslatePassage}} end--><noinclude>
----
This template will categorize tagged articles into [[:Category:Wikipedia articles needing translation]].
This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]].
This template is not useful for [[Wikipedia:Subst]].
==See also==
* [[Template:Not English]]
* [[Template:Cleanup translation]]
* [[Template:Rough translation]]
* [[Template:Needs IPA]]
* [[Wikipedia:Template messages/Cleanup]]
* [[Wikipedia:Translation]]
[[Category:Wikipedia translation templates]]
</noinclude>
41ix4vniz6zwswavh7jw5o27rhgq7jp
Template:Translation WIP
10
977
2186
2185
2020-09-29T19:17:30Z
Chrisb
1
1 revision imported
2185
wikitext
text/x-wiki
<!--{{Translation WIP}} begin-->{{Ambox
| name = Translation WIP
| subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image= [[Image:Translation to english arrow.svg|50px|Translation arrow icon]]
| text = This article is a '''translation-work in progress ''' of the article '''[[:{{{3|FLSC}}}:{{{1|ArticleName}}}|{{{1|ArticleName}}}]]''' from {{{2|FromLanguage}}} to English.<br>
<small>You can help Wikipedia by assisting in the translation.</small>
| all = Articles in translation
}}<!--{{Translation WIP}} end--><noinclude>
{{Documentation}}
</noinclude>
dqkmxc1byy8mxu8c482ytl0hur8v9bc
Template:Travel guide
10
1115
2462
2461
2020-09-29T19:17:49Z
Chrisb
1
1 revision imported
2461
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Travel guide}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Travel guide
| type = style
| issue = This {{{1|article}}} '''is written like a [[WP:NOTTRAVEL|travel guide]] rather than an encyclopedic description of the subject'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. If a travel guide is intended, use of [[Wikivoyage]] is strongly suggested.
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Travel guide}} end-->
}}<noinclude>{{Documentation}}</noinclude>
e0t6ohaum2qyg4me659km8tfqz86erd
Template:Trim quotes
10
1624
4896
4895
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4895
wikitext
text/x-wiki
{{#invoke:Trim quotes|trim|s={{{s|{{{1|}}}}}}}}<noinclude>
{{documentation}}
</noinclude>
ithw9opg60n9gqsw1vx0o7fh57ingg9
Template:Trivia
10
1124
2480
2479
2020-09-29T19:17:50Z
Chrisb
1
1 revision imported
2479
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Trivia}} begin-->{{Ambox
| name = Trivia
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| issue = contains a '''[[Wikipedia:Manual of Style/Trivia sections|list of miscellaneous information]].'''
| fix = Please [[Wikipedia:Handling trivia#Recommendations for handling trivia|relocate]] any relevant information {{#if:{{{2|{{{to|}}}}}}|to [[{{{2|{{{to}}}}}}]]|into other sections or articles}}.
| date = {{{date|}}}
| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}
| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}
| cat = Articles with trivia sections
| all = All articles with trivia sections
}}<!--{{Trivia}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
7cw38a0ecqk2ilsz5aus391rxpb4ic7
Template:Twinkle standard installation
10
1649
4946
4945
2020-10-11T05:50:40Z
Chrisb
1
1 revision imported
4945
wikitext
text/x-wiki
{{Mbox
| image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]]
| text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle's]] users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as this template is used in the standard installation of Twinkle. Thank you! {{#if:{{{1|}}}|<br>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
tew7vmo0iz2akst9kphadayjxghro1d
Template:UF-hcal
10
1667
4982
4981
2020-10-11T05:50:44Z
Chrisb
1
1 revision imported
4981
wikitext
text/x-wiki
{{Microformat message
| format = hCalendar
| data = event details
| subtemplates =
{{#if:{{{hide_subtemplates}}} |<noinclude>}}
Dates will only be included if you use {{tl|start date}} (for single dates) or {{tl|end date}}. Do not, however, use these templates [[Wikipedia:WikiProject Microformats/dates|if a date before 1583 CE is involved]].
To include URLs, use {{tl|URL}}.
{{#if:{{{hide_subtemplates}}} |</noinclude>}}
|attendee |contact |description |dtend |dtstart |location |organiser |summary |url |vevent
| nocollapse = on
}}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars|{{PAGENAME}}]]}} }}</includeonly><noinclude>
{{Documentation |content={{Microformat message templates}}}}
[[Category:Microformat (uF) message templates]]
</noinclude>
sjfznaev9rdd9yrl61nq1ahkcw1j2iz
Template:UF-hprod
10
1668
4984
4983
2020-10-11T05:50:45Z
Chrisb
1
1 revision imported
4983
wikitext
text/x-wiki
{{Microformat message
| format = hProduct
| data = a product's details
| subsection1 = If the product has a URL, use {{tl|URL}} to include it.
|brand |category |description |fn |hproduct |identifier |listing |photo |price |review |type |url |value
| nocollapse = on
}}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hProduct|{{PAGENAME}}]]}} }}</includeonly><noinclude>
{{Documentation |content={{Microformat message templates}}}}
[[Category:Microformat (uF) message templates]]
[[Category:Templates generating hProduct| ]]
</noinclude>
snz5j2i3n3mktp7zq9iywogqge2tev7
Template:USRD-wrongdir
10
1127
2486
2485
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2485
wikitext
text/x-wiki
{{ambox
|name=USRD-wrongdir
|subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|type=style
|issue='''This {{#switch:{{{1|}}}|article|section={{{1}}}|#default=article or section}} is written in the wrong direction.''' U.S. road articles are [[WP:WikiProject U.S. Roads/Standards|generally written in a south-to-north and west-to-east direction]] in order to follow the order of their mileposts.
|fix=Please help by rewriting the {{#switch:{{{1|}}}|article|section={{{1}}}|#default=article or section}} in the correct direction.
|all=U.S. road articles written in the wrong direction
}}<noinclude>{{documentation}}
[[Category:U.S. road articles written in the wrong direction|*]]</noinclude>
7ril3smqyi4fa9y9chqxw6zq9ukob5x
Template:USgovtPOV
10
1138
2508
2507
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2507
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{USgovtPOV}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}
{{Ambox
| name = USgovtPOV
| class = ambox-usgovtpov
| type = content
| image = [[Image:Ambox scales.svg|50px|link=]]
| issue = This {{{1|article}}} is <strong>based partially or entirely on [[Copyright status of work by the U.S. government|public domain works of the U.S. government]], {{#if:{{{2|{{{agency|{{{especially|}}}}}}}}}|especially from {{{2|{{{agency|{{{especially|}}}}}}}}}}}</strong> and thus may require cleanup.
| fix = You can help by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} rewriting it] from a [[Wikipedia:Neutral point of view|neutral viewpoint]] to meet [[:Category:Wikipedia style guidelines|Wikipedia's standards]], and expanding the {{{1|article}}} by adding [[WP:VERIFY|verifiable content]] from [[WP:RS|reliable sources]]. The [[{{TALKPAGENAME}}|talk page]] may contain relevant discussion.
| date = {{{date|}}}
| removalnotice = yes}}
{{DMCA|Articles needing POV-check|from|{{{date|}}}|All NPOV disputes}}}}<!--{{USgovtPOV}} end-->
<noinclude>{{Documentation}}
</noinclude>
5wv120lyik0gueypfgwacuqg48qibek
Template:Umbox
10
918
2068
2067
2020-09-29T19:17:23Z
Chrisb
1
1 revision imported
2067
wikitext
text/x-wiki
<div style="background-color: #BBDDFF; border: #4169E1 1px solid; margin: 2em 0 1em; padding: 0.5em 1em; font-weight: bold; overflow: auto; vertical-align: middle; {{{style|}}}"><noinclude><!--
// Image
--></noinclude>{{{{{|safesubst:}}}#if:{{{image|}}}|[[File:{{{image}}}|left|40px|link={{{imagelink|}}}]]}}<noinclude><!--
// Text
--></noinclude>{{{text|}}}</div><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
b6btxmaez4v7sttq67tcatbbeo9m573
Template:Unbalanced
10
1128
2488
2487
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2487
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unbalanced}} begin-->{{Ambox
| name = Unbalanced
| class = ambox-unbalanced
| type = content
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| image = [[File:Ambox scales.svg|50px|link=]]
| issue = This {{{1|article}}} '''may be [[Wikipedia:Neutral point of view#Undue weight|unbalanced]] towards certain viewpoints'''.
| fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] by adding information on neglected viewpoints, or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]].
| date = {{{date|}}}
| cat = Articles needing more viewpoints
}}<!--{{Unbalanced}} end-->
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
00xkxdifm5czgcehfuieapyst0o46mb
Template:Unbalanced section
10
1129
2490
2489
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2489
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unbalanced section}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
|name = Unbalanced section
| type = content
| image = [[Image:Ambox scales.svg|50px|link=]]
| issue = This section '''may be [[WP:DUE|unbalanced]] towards certain viewpoints'''.
| fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]].
| date = {{{date|}}}
}}{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}<!--{{Unbalanced section}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
cq6y36uapbxv47sfomt6gct3q08umvm
Template:Unchronological
10
1130
2492
2491
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2491
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unchronological}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
|name = Unchronological
| type = content
| image = [[File:Ambox outdated.svg|40px]]
| text = The chronology in this {{#ifeq:{{{section|}}}|yes|section|{{{2|article}}}}} '''seems to be out of order.'''{{#if:{{{1|}}}|, as {{{1}}}}} [{{fullurl:{{FULLPAGENAME}}|action=edit}} You can help]. The [[{{TALKPAGENAME}}|discussion page]] may contain suggestions.
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles needing rewrite|from|{{{date|}}}}}<!--{{Unchronological}} end-->
}}<noinclude>{{Documentation}}</noinclude>
37xqb61z2qu7v31ywnnzzkfqanynj7l
Template:Uncited category
10
1163
2558
2557
2020-09-29T19:17:56Z
Chrisb
1
1 revision imported
2557
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = {{{name|Uncited category}}}
| subst = {{{subst|<includeonly>{{subst:substcheck}}</includeonly>}}}
| small = {{{small|}}}
| type = content
| class = ambox-Refimprove
| issue = This {{#if:{{{type|}}}|{{{type|}}}|article}} is in the {{#if:{{{2|{{{cat2|}}}}}}|categories|category}} {{#if:{{{1|{{{cat1|}}}}}}|[[:Category:{{{1|{{{cat1|}}}}}}]]{{#if:{{{2|{{{cat2|}}}}}}| and [[:Category:{{{2|{{{cat2|}}}}}}]]}}|<noinclude>Category:{{var|Name_here}}</noinclude>}}, but no [[Wikipedia:Reliable sources|reliable sources]] are [[Help:Introduction to referencing/1|cited to verify]] {{#if:{{{2|{{{cat2|}}}}}}|their|its}} inclusion.
| fix = Please help by adding references that support {{#if:{{{2|{{{cat2|}}}}}}|their|its}} inclusion, or remove the {{#if:{{{2|{{{cat2|}}}}}}|categories|category}} if none exist.
| talk = {{{talk|}}}
| date = {{{date|}}}
| all = {{Template other|<!-- Will not categorize if transcluded into the template namespace -->|Articles with uncited categories}}
| removalnotice = {{{help|yes}}}
}}
<!--{{Uncited category}} end-->
}}<noinclude>
{{documentation}}<!-- Please add categories and interwikis to the /doc subpage -->
</noinclude>
277ecm4cpq8yb0hf84zub1w4t6lp7n9
Template:Unclear date
10
1131
2494
2493
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2493
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unclear date}} begin-->{{Ambox
| name = Unclear date
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = '''This {{{1|article or section}}} contains statements that may [[Wikipedia:Avoid statements that will date quickly|date quickly]] and become unclear.'''
| fix = Please {{plain link|url={{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article}} or discuss this issue on the [[{{TALKPAGENAME}}|talk page]].
| date = {{{date|}}}
| cat = Wikipedia articles needing clarification
}}<!--{{Unclear date}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
ltygbgnm1eebjpfajvel4guqtyz8lxf
Template:Underlinked
10
1151
2534
2533
2020-09-29T19:17:54Z
Chrisb
1
1 revision imported
2533
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Underlinked}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Underlinked
| type = style
| image = [[File:Ambox wikify.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''needs more [[Wikipedia:Manual of Style/Linking|links to other articles]] to help [[Wikipedia:Manual of Style/Linking#Principles|integrate it into the encyclopedia]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with too few wikilinks
| all = All articles with too few wikilinks
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
}}<!--{{Underlinked}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
94aqkwu7hwsg52tk0sjpghczjloe1zp
Template:Undisclosed paid
10
1251
2734
2733
2020-09-29T19:18:09Z
Chrisb
1
1 revision imported
2733
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B=
{{Ambox
| name = Undisclosed paid
| type = delete
| image = [[File:Dollar sign in circle cleaned (PD version).svg|50x40px|link=]]
| issue = This {{{1|article}}} '''may have been created or edited in return for undisclosed payments'''{{#if:{{{pre16Jun2014|}}}||, a violation of Wikipedia's [[wmf:Terms of Use|terms of use]]}}.
| fix = It may require cleanup to comply with Wikipedia's [[Wikipedia:List of policies#Content|content policies]].
| date = {{{date|}}}
| cat = Wikipedia articles with undisclosed paid content
}}
}}<noinclude>{{Documentation}}<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --></noinclude>
ge1n6oob2ps3pesm6789l39si990aby
Template:Undue weight
10
1243
2718
2717
2020-09-29T19:18:08Z
Chrisb
1
1 revision imported
2717
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B=
<!--{{Undue weight}} begin-->{{Ambox
| name = Undue weight
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| image = [[File:Ambox scales.svg|50px|link=|alt=Unbalanced scales]]
| class = ambox-undue-weight
| sect = {{{1|}}}
| issue = may '''lend [[Wikipedia:Neutral point of view#Due and undue weight|undue weight]] to {{{2|{{{to|certain ideas, incidents, or controversies}}}}}}'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in a '''[[Wikipedia:Neutral point of view#Balance|balanced fashion]]''' that contextualizes different points of view.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles needing POV-check
}}<!--{{Undue weight}} end-->
}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
k49t81be52pzmk89ky9kl540i7sylxp
Template:Unfocused
10
1202
2636
2635
2020-09-29T19:18:02Z
Chrisb
1
1 revision imported
2635
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B={{Ambox
| name = Unfocused
| type = content
| issue = This {{#if:{{{section|}}}|section|article}} '''may lack focus or may be about more than one topic'''. {{#if:{{{reason|}}}|In particular, {{{reason}}}.}}
| fix = Please help improve this article, possibly by [[WP:Splitting|splitting]] the article and/or by introducing a [[WP:Disambiguation|disambiguation page]], or discuss this issue on the [[{{TALKPAGENAME}}#{{{talk|{{{1|}}}}}}|talk page]].
| date = {{{date|}}}
| cat = Wikipedia articles lacking focus
| all = All Wikipedia articles lacking focus
}}
}}<noinclude>
{{Documentation}}
</noinclude>
hc1g2rbk0c221804wwz1azlp28z7jkk
Template:Units attention
10
1132
2496
2495
2020-09-29T19:17:51Z
Chrisb
1
1 revision imported
2495
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unit-attn}} begin-->{{Ambox
| name = Units attention
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = style
| image = [[Image:Measuring tape icon.svg|55px]]
| issue = '''The [[units of measurement]] used in this {{{1|article or section}}} are exclusively in [[International System of Units|SI]] or non-SI form or need some other form of clean-up.'''
| fix = <br /><small>Please help <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]</span> by [[template:convert|adding alternative units]], preferably from the references cited in the article. ([[{{TALKPAGENAME}}|talk]])</small>
| date = {{{date|{{{2|}}}}}}
}}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Articles requiring unit attention}}}}}}}</includeonly><!--{{Unit-attn}} end-->
}}<noinclude>
{{documentation}}
</noinclude>
6kendlqtka1uziuzz203qjt0m1k3n10
Template:Unknown
10
1589
4826
4825
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4825
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #ececec; color: #2C2C2C; font-size: smaller; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="unknown table-unknown"|{{{1|Unknown}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
hgo832orxm3cczwyq7cqxjr75za0pc2
Template:Unofficial
10
1590
4828
4827
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4827
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #5FC; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Unofficial}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
eko97rhsgebtq18k0diglih1lzvzj5b
Template:Unofficial2
10
1591
4830
4829
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4829
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #adffe6; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Unofficial}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
l5ob0y5z51qxpr8dcf6qsq2p9fyv41e
Template:Unreferenced
10
928
2088
2087
2020-09-29T19:17:24Z
Chrisb
1
1 revision imported
2087
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|Unreferenced}}}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Unreferenced
| small = {{{small|}}}
| image = [[File:Question book-new.svg|50x40px|alt=]]
| issue = This {{{1|article}}} '''does not [[Wikipedia:Citing sources|cite]] any [[Wikipedia:Verifiability|sources]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] by [[Help:Referencing for beginners|adding citations to reliable sources]]. Unsourced material may be challenged and [[Wikipedia:Verifiability#Burden of evidence|removed]].{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}}
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}}
| all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}}
| all2 = {{#ifeq:{{{status}}}|hasaref|All articles possibly lacking sources}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
csr3u9iazfzow56l4qbyosovydf1pis
Template:Unreferenced-law
10
1134
2500
2499
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2499
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!-- {{Unreferenced-law}} begin -->{{Ambox
|name = Unreferenced-law
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| text = This [[Wikipedia:WikiProject Law|law-related]] {{{1|article}}} '''does not cite its [[{{SITENAME}}:Citing sources|references or sources]].''' You can [[{{SITENAME}}:WikiProject Fact and Reference Check|help Wikipedia]] by including appropriate citations, which can be found through [[legal research]]. Unsourced or poorly sourced material may be challenged and removed.
| cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}}
| date = {{{date|}}}
| all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}}
| all2 = Law-related articles lacking sources
| removalnotice = yes
}}<!-- {{Unreferenced-law}} end -->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
g11o8ld5oyjjq6bef1hb0a8mi6ld0lf
Template:Unreferenced-medical section
10
1176
2584
2583
2020-09-29T19:17:58Z
Chrisb
1
1 revision imported
2583
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{ ambox
| name = Unreferenced-medical section
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| imageright = [[File:Rod of Asclepius2.svg|50x40px|]]
| issue = This section '''has no [[Wikipedia:Identifying reliable sources (medicine)|medical references]] for [[Wikipedia:Verifiability|verification]] or relies exclusively on non-medical sources{{#if:{{{reason|{{#ifeq:{{{1|}}}|section||{{{1|}}}}}}}}|, specifically: {{{reason|{{{1}}}}}}}}'''.
| fix = Please review the contents of the section and [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} add the appropriate references] if you can. Unsourced or poorly sourced material may be challenged and [[Wikipedia:Verifiability#Burden of evidence|removed]].
| talk = {{{talk|}}}
| small = {{{small|}}}
| smalltext = Please add '''[[Wikipedia:Identifying reliable sources (medicine)|medical references]]'''.
| smallimageright = [[file:Rod of asclepius.png|10px]]
| date = {{{date|}}}
| cat = Articles needing additional medical references
| all = All articles needing additional references
| removalnotice = yes
}}
}}<noinclude>
{{Documentation}}
[[Category:Citation and verifiability maintenance templates]]
</noinclude>
dd4g2dnvo7u2mq2z0j8hmkts8l7frtm
Template:Unreferenced section
10
1156
2544
2543
2020-09-29T19:17:55Z
Chrisb
1
1 revision imported
2543
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Unreferenced|section|name=Unreferenced section|small={{#if:{{{small|}}}|left}}
|subst=<includeonly>{{subst:substcheck}}</includeonly>
|find={{#if:{{{find|}}}|{{{find|}}}|none}}
|date={{{date|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
e3mxp6elo5aqnnv52c3iuhdgrhsiwwr
Template:Unreferenced small
10
1133
2498
2497
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2497
wikitext
text/x-wiki
<!--{{Unreferenced}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{#if:{{{auto|}}}|[[Category:Articles automatically tagged as unreferenced]]|{{Ambox
|name = Unreferenced small
| small = left
| type = content
| smallimage = [[Image:Question book-new.svg|20px|alt=|link=]]
| text = This {{{1|article}}} ''' needs [[Wikipedia:Verifiability|references]]'''.<br />{{#if:{{{date|}}}|<small>''({{{date}}})''</small>}}
}}}}{{#ifeq:{{{1}}}|section|{{DMCA|Articles needing additional references|from|{{{date|}}}|All articles needing additional references}}|{{DMCA|Articles lacking sources|from|{{{date|}}}|All articles lacking sources}}}}<!--{{Unreferenced}} end--><noinclude>
{{Documentation}}
</noinclude>
h169jorzjv76m0lyxt81mk489cae02l
Template:Unreleased
10
1592
4832
4831
2020-10-11T05:35:28Z
Chrisb
1
1 revision imported
4831
wikitext
text/x-wiki
{| class="wikitable"
|<onlyinclude>{{n/a|{{{1|Unreleased}}}}}</onlyinclude>
|}
{{documentation|content={{Table cell templates/doc}}}}
[[Category:Unified table cell templates]]
e4f2008ygda1ni4t1j4plheccjv17hl
Template:Unreliable sources
10
1135
2502
2501
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2501
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unreliable sources}} begin-->{{Ambox
| name = Unreliable sources
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| small = {{{small|}}}
| class = ambox-unreliable_sources
| image = [[File:Text document with red question mark.svg|50x40px]]
| issue = {{yesno|{{{some|yes}}}|yes=Some|no=Some or all}} of this {{{1|article}}}'s [[Wikipedia:citing sources|listed sources]] '''may not be [[Wikipedia:Reliable sources|reliable]]'''. {{#ifeq:{{{imdb|}}}|yes|It includes attribution to IMDb, which may not be a reliable source for information.}}
| fix = Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted.
| date = {{{date|}}}
| cat = Articles lacking reliable references
| all = All articles lacking reliable references
|removalnotice = yes
}}<!--{{Unreliable sources}} end-->
}}<noinclude>{{Documentation}}</noinclude>
2unnf5v8rze8g2f6a5kaqbeo9gb4b9g
Template:Unsorted
10
1136
2504
2503
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2503
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Unsorted}} begin-->{{Ambox
| name = Unsorted
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| text = '''This [[WP:LIST|list]] needs to be [[Wikipedia:LISTS#Organization|organised]]'''.<br /><small>Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] by ordering it according to a single criterion. For example alphabetical, numerical or chronological.</small>
| date = {{{date|}}}
| cat = Wikipedia external links cleanup
}}<!--{{Unsorted}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
sp4lae17sslcpu36dqgw5y1s1phxtl7
Template:Update
10
1275
2782
2781
2020-09-29T19:18:12Z
Chrisb
1
1 revision imported
2781
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{main other
| demospace = {{{demospace|}}}
|{{ambox
| name = Update
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Update
| image = [[File:{{Ambox globe current red}}|42px|link=]]
| issue = {{#if:{{{part|{{{1|}}}}}}
|{{#ifeq:{{{part|{{{1|}}}}}}|section
|{{#if:{{{inaccurate|}}}
|This section's '''[[Wikipedia:Accuracy dispute|factual accuracy]] may be compromised due to out-of-date information'''
|This section needs to be '''updated'''}}
|{{#if:{{{inaccurate|}}}
|The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of parts of this article (those related to {{{part|{{{1|}}}}}}) '''may be compromised due to out-of-date information'''
|Parts of this article (those related to {{{part|{{{1|}}}}}}) need to be '''updated'''}}
}}
|{{#if:{{{inaccurate|}}}
|This article's '''[[Wikipedia:Accuracy dispute|factual accuracy]] may be compromised due to out-of-date information'''
|This article needs to be '''updated'''}}
}}. {{#if:{{{reason|}}}|The reason given is: {{{reason}}}.}}
| fix = Please update this {{{type|{{SUBJECTSPACE formatted}}}}} to reflect recent events or newly available information. {{#if:{{{2|{{{updated|}}}}}}
|<br /><small>Last update: {{{2|{{{updated}}}}}}</small>
}}
| talk = {{{talk|{{{talksection|{{{discuss|}}}}}}}}}
| date = {{{date|}}}
| cat = {{#if:{{{inaccurate|}}}|Articles with obsolete information|Wikipedia articles in need of updating}}
| all = All Wikipedia articles in need of updating
| all2 = {{{cat|}}}
}}
|{{mbox
| name = Update
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Update
| image = [[File:{{Ambox globe current red}}|42px|link=]]
| text = {{#if:{{{part|{{{1|}}}}}}
|{{#if:{{{inaccurate|}}}
|The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of parts of this {{{type|{{SUBJECTSPACE formatted}}}}} (those related to {{{part|{{{1|}}}}}}) '''may be compromised due to out-of-date information'''
|Parts of this {{{type|{{SUBJECTSPACE formatted}}}}} (those related to {{{part|{{{1|}}}}}}) need to be '''updated'''}}
|{{#if:{{{inaccurate|}}}
|The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of this {{{type|{{SUBJECTSPACE formatted}}}}} '''may be compromised due to out-of-date information'''
|This {{{type|{{SUBJECTSPACE formatted}}}}} needs to be '''updated'''}}
}}. {{#if:{{{reason|}}}|The reason given is: {{{reason}}}.}} Please update this {{{type|{{SUBJECTSPACE formatted}}}}} to reflect recent events or newly available information. {{#ifexist: {{TALKPAGENAME}}
|Relevant discussion may be found on {{#if: {{{talk|{{{talksection|{{{discuss|}}}}}}}}} | [[{{TALKPAGENAME}}#{{{talk|{{{talksection|{{{discuss}}}}}}}}}|the talk page]] | [[{{TALKPAGENAME}}| the talk page]] }}.}} {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} {{#if:{{{2|{{{updated|}}}}}}
|<br /><small>Last update: {{{2|{{{updated}}}}}}</small>
}}
}}
}}
}}<noinclude>
<!-- Place categories on /doc subpage; interwikis go to Wikidata. -->
{{Documentation}}
</noinclude>
l0m2z8jyr2v01hm5d0sxu4jojlp7mn1
Template:Update-EB
10
1137
2506
2505
2020-09-29T19:17:52Z
Chrisb
1
1 revision imported
2505
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Update-EB}} begin-->{{Ambox
| name = Update-EB
| type = content
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| image = [[File:Ambox outdated content.svg|40px|alt=|link=]]
| issue = This {{#if:{{{section|}}}|section|article}} '''is largely based on {{#if:{{{article|}}}|the|an}} article {{#if:{{{article|}}}|'''{{{article}}}'''}} in the out-of-copyright [[Encyclopædia Britannica Eleventh Edition|''Encyclopædia Britannica'' Eleventh Edition]], which was produced in 1911.'''
| fix = It should be brought up to date to reflect subsequent history or scholarship (including the references, if any). When you have completed the review, replace this notice with a simple note on this article's talk page.
| date = {{{date|}}}
| cat = 1911 Britannica articles needing updates
}}<!--{{Update-EB}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
nssuzb762zkx7qe1gg9t99p9cuq8pec
Template:Used in system
10
880
1992
1991
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1991
wikitext
text/x-wiki
{{ombox
| type = content
| text =
'''This {{lcfirst:{{NAMESPACE}}}} is used {{#if:{{{1|}}}|{{{1}}}|in system messages}}.''' <br /> Changes to it can cause immediate changes to the Wikipedia user interface. {{#ifeq:{{NAMESPACENUMBER}}|6||To avoid large-scale disruption, any changes should first be tested in this {{lcfirst:{{NAMESPACE}}}}'s [[{{Sandbox other|{{SUBJECTSPACE}}:{{BASEPAGENAME}}|{{SUBJECTPAGENAME}}}}/sandbox|/sandbox]] or [[{{Sandbox other|{{SUBJECTSPACE}}:{{BASEPAGENAME}}|{{SUBJECTPAGENAME}}}}/testcases|/testcases]] subpage, or in your own [[Wikipedia:Subpages#How to create user subpages|user space]]. The tested changes can then be added in one single edit to this {{lcfirst:{{NAMESPACE}}}}.}} Please discuss any changes {{#if:{{{2|}}}|at [[{{{2}}}]]|on the [[{{Sandbox other|{{TALKSPACE}}:{{BASEPAGENAME}}|{{TALKPAGENAME}}}}|talk page]]}} before implementing them.
}}<includeonly>{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default={{category handler|all=[[Category:Pages used in system messages needing protection]]|nocat={{{nocat|}}}}}}}}}</includeonly><noinclude>
{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
rg5imw5md0mskm3m446xur0dtn2xopx
Template:User-generated
10
1211
2654
2653
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2653
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{User-generated}} begin-->{{Ambox
| name = User-generated
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-self-published
| issue = This {{{1|article}}} '''may contain improper references to [[Wikipedia:Identifying reliable sources#User-generated content|user-generated content]]'''. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}}
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing references to [[Wikipedia:Identifying reliable sources|unreliable sources]], where they are [[Wikipedia:Verifiability#Self-published sources|used inappropriately]].
| date = {{{date|}}}
| removalnotice = yes
| cat = Articles lacking reliable references
}}<!--{{Self-published}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
i8ztzsm4f137q40e2pl2ymr5z6emj42
Template:Usually
10
1593
4834
4833
2020-10-11T05:35:29Z
Chrisb
1
1 revision imported
4833
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #8CF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Usually}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
pv7w7av985y2m2a0diqrf7l9jux52jv
Template:Varies
10
1594
4836
4835
2020-10-11T05:35:29Z
Chrisb
1
1 revision imported
4835
wikitext
text/x-wiki
{| class="wikitable"
|-
| <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!--
-->| {{{1|Varies}}}</onlyinclude>
|}
{{documentation}}
018nl8zp0j0p9xwfb7pvylt7k23hryu
Template:Verbosity
10
1182
2596
2595
2020-09-29T19:17:59Z
Chrisb
1
1 revision imported
2595
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox
| name = Verbosity
| type = style
| issue = This {{{1|article}}}'s '''text uses more words than are necessary'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by using fewer words whilst keeping the content of the article.
| date = {{{date|}}}
}}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}
}}<noinclude>{{Documentation}}</noinclude>
6eaz070sgz082xrpgb5szltew0txl65
Template:Verifiability
10
1141
2514
2513
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2513
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Verifiability}} begin-->{{Ambox
| name = Verifiability
| image = [[File:Question book-new.svg|50px]]
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| issue = '''The [[WP:V|verifiability]] of the claims made in this article is disputed.'''
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Wikipedia:Verifiability|verifying]] its references and [[Template:Citation needed|removing]] any that are not [[Wikipedia:Reliable sources|reliable]] or do not [[Wikipedia:Verifiability#Burden of evidence|support the article]]. Relevant discussion may be found on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]].
| date = {{{date|}}}
| cat = Articles lacking reliable references
| all = All articles lacking reliable references
| removalnotice = yes
}}<!--{{Verifiability}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
q44y1pmnrwb3s452ftvldk8dvgoqbhx
Template:Verify source
10
1459
3222
3221
2020-10-11T01:32:04Z
Chrisb
1
1 revision imported
3221
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Verify source}} begin-->{{Fix
| link = Wikipedia:Verifiability
| text = {{{type|}}} verification needed
| title = The material near this tag needs to be fact-checked with the cited source(s).
| date = {{{date|}}}
| cat = [[Category:All pages needing factual verification]]
| cat-date = Category:Wikipedia articles needing factual verification}}<!--{{Verify source}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
dj3ro60r349928uiq6b7sygnxrgm9jt
Template:Verify sources
10
1139
2510
2509
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2509
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Verify sources}} begin-->{{Ambox
| name = Verify sources
| subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
| type = content
| image = [[File:Question book-new.svg|50x40px]]
| issue = An editor has expressed concern that this {{#if:{{{1|}}}|{{{1}}}|article}} '''may have a number of irrelevant [[Wikipedia:Citing sources#Inline citations|citations]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Wikipedia:Verifiability|verifying]] these references and [[Template:Citation needed|challenge]] any that are not [[Wikipedia:Reliable sources|reliable]] or do not [[Wikipedia:Verifiability#Burden of evidence|support the article]].
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Wikipedia references cleanup
| all = All articles needing references cleanup
| removalnotice = yes
}}<!--{{Verify sources}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
a5j7uwk9m0b74gyz7dh6loajfyr4le0
Template:Very long
10
1140
2512
2511
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2511
wikitext
text/x-wiki
<onlyinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Very long}} begin-->{{Ambox
| name = {{{name|Very long}}}
| subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly>
| type = style
| class = ambox-very_long
| issue = This {{{1|{{#if:{{NAMESPACE}}|page|article}}}}} '''may be [[Wikipedia:Article size|too long]] to read and navigate comfortably'''. {{#if: {{{rps|}}} | The [[WP:SIZERULE|readable prose size]] is {{{rps}}} kilobytes.}}
| fix = {{{fix|Please consider {{#if:{{{nosplit|}}}||[[WP:splitting|splitting]] content into sub-articles,}} [[Wikipedia:Summary style|condensing]] it, or adding [[Help:Section#Subsections|subheadings]].}}}
| date = {{{date|}}}
| small = {{{small|}}}
| smalltext = This section is [[Wikipedia:Article size|too long]]. Consider {{#if:{{{nosplit|}}}||[[WP:splitting|splitting]] it into new pages,}} adding [[Help:Section#Subsections|subheadings]], or [[Wikipedia:Summary style|condensing]] it.
| cat = Articles that may be too long
}}<!--{{Very long}} end-->
}}</onlyinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
28t5anf1lu1nb54vqazvto41czfqmfg
Template:Very long section
10
1143
2518
2517
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2517
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Very long
|name=Very long section
|subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>
|1=section
|small=left
|date={{{date|}}}
|nosplit={{{nosplit|}}}
}}
}}<noinclude>
{{Documentation}}
</noinclude>
8848tzxubad3ifycbjrnmn7deq8fhis
Template:Vietnamese script needed
10
999
2230
2229
2020-09-29T19:17:32Z
Chrisb
1
1 revision imported
2229
wikitext
text/x-wiki
{{Script needed
|language = Vietnamese
|image = Dbarbowl.svg
}}
6r3oxn74qqhizwmd7sotif1hjaby8xo
Template:View
10
1305
2842
2841
2020-09-29T19:18:17Z
Chrisb
1
1 revision imported
2841
wikitext
text/x-wiki
{{#invoke:navbar|navbar|plain = 1|template = {{{template|{{{1|}}}}}}}}<noinclude>
{{Documentation|Template:Navbar/doc}}
</noinclude>
3cdib5yx2npzm141agd4nm089qwwm12
Template:Warning
10
1266
2764
2763
2020-09-29T19:18:11Z
Chrisb
1
1 revision imported
2763
wikitext
text/x-wiki
{{Mbox
| name = Warning
| demospace = {{{demospace|}}}
| style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||width:80%;}} {{{style}}} }}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| image = {{#if:{{{image|}}}| [[File:{{{image}}}|{{{imagesize|40px}}}|Warning]] }}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}}| [[File:{{{image}}}|30px|Warning]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>
<!-- Add categories to the /doc subpage; interwikis go to Wikidata. -->
{{Documentation}}
</noinclude>
ccd5wh93blf8ugbbitkytz4k94h0llk
Template:Warnsign
10
1595
4838
4837
2020-10-11T05:35:29Z
Chrisb
1
1 revision imported
4837
wikitext
text/x-wiki
[[File:Ambox warning pn.svg|20px|link=|alt=⚠]] '''{{{{{|safesubst:}}}ucfirst:{{{1|Warning}}}}}'''<noinclude>
{{Documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
1pssf1jjsub1k8rvvma596xy33lwgkp
Template:Wbr
10
1625
4898
4897
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4897
wikitext
text/x-wiki
<wbr />​<noinclude>
{{Documentation}}
</noinclude>
038outj03jutckphwb9ai636hounypl
Template:Weasel
10
1142
2516
2515
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2515
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Weasel}} begin-->{{Ambox
| name = Weasel
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = content
| class = ambox-Weasel
| issue = This {{{1|article}}} '''contains [[Wikipedia:Manual_of_Style/Words_to_watch#Unsupported_attributions|weasel words]]: vague phrasing that often accompanies [[Wikipedia:Neutral point of view|biased]] or [[Wikipedia:Verifiability|unverifiable]] information'''.
| fix = Such statements should be [[Wikipedia:Manual_of_Style/Words_to_watch#Improving_weasel-worded_statements|clarified or removed]].
| date = {{{date|}}}
| cat = Articles with weasel words
}}<!--{{Weasel}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
fyjs6d8mc1uik4kl61m4fnxgo6yaz6w
Template:Wikify
10
1206
2644
2643
2020-09-29T19:18:03Z
Chrisb
1
1 revision imported
2643
wikitext
text/x-wiki
{{Deprecated template|Wikify|note=Please use a more specific cleanup template as listed in [[Template:Wikify#Cleanup templates|the documentation]].|nocat=true}}{{Main other|[[Category:Pages using deprecated templates]]|}}
<noinclude>
{{documentation|content=
'''Former appearance of this template:'''{{ambox
| name = Wikify
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| class = ambox-Wikify
| image = [[File:Ambox wikify.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''may need to be [[Wikipedia:Glossary#Wikify|wikified]] to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]'''.
| fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by adding [[Wikipedia:Linking|''relevant'' internal links]], or by improving the article's [[Wikipedia:Layout|layout]].
| date = {{{date|}}}
| info = {{{reason|}}}
}}
== Cleanup templates ==
*{{tl|MOS}}
*{{tl|underlinked}}
*{{tl|overlinked}}
*{{tl|dead end}}
*{{tl|cleanup HTML}}
*{{tl|cleanup bare URLs}}
*{{tl|format footnotes}}
*{{tl|citation style}}
*{{tl|sections}}
*{{tl|lead missing}}
*{{tl|lead too short}}
*{{tl|lead too long}}
*{{tl|inadequate lead}}
*{{tl|lead rewrite}}
*{{tl|infobox requested}} (only on talk pages)
== Notes ==
*The '''Wikify section''' template is also deprecated and redirects here.
*A full list of cleanup templates can be found at [[WP:Template messages/Cleanup]].
== See also ==
* [[Wikipedia:WikiProject Wikify]]
* [[Wikipedia:Templates for discussion/Log/2012 August 10#Template:Wikify]]
[[Category:Deprecated templates kept for historical reasons]]
[[Category:Template disambiguation pages]]
}}</noinclude>
sulkcpua81xpwz0y1bo8r12t1ikodv0
Template:WinDL
10
1596
4840
4839
2020-10-11T05:35:29Z
Chrisb
1
1 revision imported
4839
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: {{
#switch: {{lc:{{{res|WinDL}}}}}
|windl = {{{color|<nowiki>#</nowiki>CCFFCC}}}
|draw|d|D = {{{color|<nowiki>#</nowiki>FFFFCC}}}
|loss|l|L = {{{color|<nowiki>#</nowiki>FFCCCC}}}
|#default = {{{color|<nowiki>#</nowiki>F8EABA}}}
}}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes table-yes2"|{{{1|{{{res|W}}}}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
4848ggvbvyfokk0su7411apsk7tof9p
Template:Won
10
1597
4842
4841
2020-10-11T05:35:30Z
Chrisb
1
1 revision imported
4841
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: {{
#switch: {{lc:{{{place|Won}}}}}
|won = {{{color|<nowiki>#</nowiki>99FF99}}}
|1|1st|gold = {{{color|gold}}}
|2|2nd|silver = {{{color|silver}}}
|3|3rd|bronze = {{{color|<nowiki>#</nowiki>D9A821}}}
|#default = {{{color|<nowiki>#</nowiki>F8EABA}}}
}}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes table-yes2"|{{{1|{{{place|Won}}}}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
</noinclude>
9oz068i12jhncy5pfpfk1lv7lby9foj
Template:WrongTitleExamples
10
1658
4964
4963
2020-10-11T05:50:42Z
Chrisb
1
1 revision imported
4963
wikitext
text/x-wiki
#REDIRECT [[Template:Correct title examples]]
h6ndodlf2z8h2quxxhks45cyh1on3j3
Template:Xtag
10
1626
4900
4899
2020-10-11T05:39:04Z
Chrisb
1
1 revision imported
4899
wikitext
text/x-wiki
<code class="nowrap">{{#switch:{{{2|pair}}}
|c|close = <!--nothing-->
|s|single
|o|open
|p|pair = <{{#switch:{{{1|}}}
|categorytree=[[mw:Extension:CategoryTree|categorytree]]
|charinsert=[[mw:Extension:CharInsert|charinsert]]
|ce=[[Help:Displaying a formula#Chemistry|ce]]
|chem=[[Help:Displaying a formula#Chemistry|chem]]
|gallery=[[Help:Gallery tag|gallery]]
|graph=[[Help:Graph|graph]]
|hiero=[[mw:Extension:WikiHiero|hiero]]
|includeonly=[[Help:Template#Noinclude, includeonly, and onlyinclude|includeonly]]
|indicator=[[mw:Help:Page status indicators|indicator]]
|imagemap=[[mw:Extension:ImageMap|imagemap]]
|inputbox=[[mw:Extension:InputBox|inputbox]]
|mapframe=[[mw:Extension:Kartographer|mapframe]]
|maplink=[[mw:Extension:Kartographer#<maplink>|maplink]]
|math=[[mw:Extension:Math|math]]
|math chem=[[Help:Displaying a formula#Chemistry|math chem]]
|noinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|noinclude]]
|nowiki=[[Help:Nowiki|nowiki]]
|onlyinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|onlyinclude]]
|poem=[[mw:Extension:Poem|poem]]
|pre=[[WP:PRE|pre]]
|ref=[[mw:Extension:Cite/Cite.php|ref]]
|references=[[mw:Extension:Cite/Cite.php|references]]
|score=[[Help:Score|score]]
|section=[[mw:Extension:Labeled Section Transclusion|section]]
|source=[[mw:Extension:SyntaxHighlight|source]]
|syntaxhighlight=[[mw:Extension:SyntaxHighlight|syntaxhighlight]]
|templatedata=[[Wikipedia:TemplateData/Tutorial|templatedata]]
|templatestyles=[[mw:Extension:TemplateStyles|templatestyles]]
|timeline=[[mw:Extension:EasyTimeline|timeline]]
|#default={{{1|}}}[[Category:Pages using xtag template with unsupported tag name]]
}}{{#if:{{{params|}}}| {{{params}}}}}
}}{{#switch:{{{2|open}}}
|c|close = {{{content|}}}
|s|single =  />
|o|open = >{{{content|}}}
|p|pair = >{{{content|...}}}
}}{{#switch:{{{2|open}}}
|s|single
|o|open = <!--nothing-->
|c|close
|p|pair = </{{{1|tag}}}>
}}</code><noinclude>
{{documentation}}
</noinclude>
4la5a5vxsl3ky1njkzhvnecnlvco3m8
Template:Ya
10
1491
4630
4629
2020-10-11T05:35:15Z
Chrisb
1
1 revision imported
4629
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>data-sort-value="{{{sort|Yes}}}" style="background: {{{color|#D2FFD2}}}; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-yes2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:Green check.svg|13px|link={{{link|}}}|{{{1|Yes}}}]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Checkmark insertion templates]]
</noinclude>
ixn188e0v57o0f7tdcnodmm2soypsyr
Template:Yes
10
1598
4844
4843
2020-10-11T05:35:30Z
Chrisb
1
1 revision imported
4843
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|-
|</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|{{{1|Yes}}}<noinclude>
|}
{{documentation}}
</noinclude>
tac11s4bgfdohg6hu289wiklat0xbk7
Template:Yes-No
10
1599
4846
4845
2020-10-11T05:35:30Z
Chrisb
1
1 revision imported
4845
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Yes/No}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
<!-- interwikis & categories -->
</noinclude>
6jfz2rjw6it0y5bw3a0k6229za610hi
Template:Yes2
10
1600
4848
4847
2020-10-11T05:35:30Z
Chrisb
1
1 revision imported
4847
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>style="background:#bfd; color:black; vertical-align:middle; text-align:{{{align|center}}}; {{{style|}}}" class="table-yes2" |{{{1|}}}<noinclude>
|}
{{documentation}}
</noinclude>
g8ru5wexcbkah1ii8j2dbutxe5g3wjx
Template:Yes C
10
1601
4850
4849
2020-10-11T05:35:30Z
Chrisb
1
1 revision imported
4849
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|-
|</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|[[File:Green check.svg|13px|link=|]] {{{1|Yes}}}<noinclude>
|}{{Documentation|Template:Table cell templates/doc}}
</noinclude>
es5h760x177ineymfhu38q1f8e948h7
Template:Yes O
10
1602
4852
4851
2020-10-11T05:35:31Z
Chrisb
1
1 revision imported
4851
wikitext
text/x-wiki
<noinclude>
{| class="wikitable"
|-
|</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|[[File:Symbol confirmed.svg|18px|link=|]] {{{1|Yes}}}<noinclude>
|}{{Documentation|Template:Table cell templates/doc}}
</noinclude>
3mc3hfb9zpflzps4ractpama7tawfy0
Template:Yesno
10
1482
3268
3267
2020-10-11T01:41:31Z
Chrisb
1
1 revision imported
3267
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
bioaq6x8oitfnx7oqmfhviol4hbp1nd
Template:Yesno-no
10
1483
3270
3269
2020-10-11T01:41:31Z
Chrisb
1
1 revision imported
3269
wikitext
text/x-wiki
{{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
34vmtxa9ubuh1vz2ulp78m5ela68riu
Template:Yiddish script needed
10
1065
2362
2361
2020-09-29T19:17:42Z
Chrisb
1
1 revision imported
2361
wikitext
text/x-wiki
{{Script needed
|language = Yiddish
|image = Jidysz.png
}}
645z7klm15nt2rqo0mskw7gfzyk5rf4
Category:Annotation
14
1766
5246
2020-11-22T00:20:45Z
Chrisb
1
Page was autogenerated by Semantic Image Annotator Extension.
5246
wikitext
text/x-wiki
This is the Annotation category used by the Annotator Tools.
mfr0e611106pnz3girzwe7sqyhk8awv
Category:Article message templates with missing parameters
14
1146
2524
2523
2020-09-29T19:17:53Z
Chrisb
1
1 revision imported
2523
wikitext
text/x-wiki
{{template category}}
{{Category used by module|[[Module:Message box/configuration]]}}
{{Wikipedia category|tracking=y}}
[[Category:Article message templates]]
{{CatAutoTOC}}
8xwkcicfp31atz44lfpaabms4yecyld
Category:Game Consoles
14
2105
6324
6323
2022-01-08T05:17:36Z
Alpha Bravo Tech.
538
6324
wikitext
text/x-wiki
Game Consoles.
This page is dedicated game console repair.
tmbxcnpd5vr1wiu80bbvzcc1rz2rk2q
Category:ImageAnnotation
14
1767
5247
2020-11-22T00:20:45Z
Chrisb
1
Page was autogenerated by Semantic Image Annotator Extension.
5247
wikitext
text/x-wiki
This is the ImageAnnotation category used by Semantic Image Annotator.
[[Category:Annotation]]
tja6mopk5446qo6d3zni6btrhf1fawn
Category:Mac
14
193
603
600
2020-02-02T15:07:25Z
Chrisb
1
603
wikitext
text/x-wiki
<br />
7egt9rvm0oxpiin85je6tdx61r5zj6q
Category:MacBook
14
194
602
601
2020-02-02T15:06:40Z
Chrisb
1
602
wikitext
text/x-wiki
[[Category:Mac]]
<br />
qeik6dzqx6tf5eg35obarlyohzjmen6
Category:MacBook Air
14
195
6949
6948
2023-09-29T16:26:51Z
Cndarch5
1026
6949
wikitext
text/x-wiki
[[Category:MacBook]]
7wp7sovrkdm4qbl3nv18fz8t5qdq9x6
Category:MacBook Pro
14
196
540
2020-02-02T11:20:23Z
Piernov
10
Category:MacBook Pro
540
wikitext
text/x-wiki
[[Category:MacBook]]
7wp7sovrkdm4qbl3nv18fz8t5qdq9x6
Category:Mac mini
14
1345
2958
2020-10-04T20:15:01Z
Chrisb
1
Created page with "[[Category:Mac]]"
2958
wikitext
text/x-wiki
[[Category:Mac]]
5cympk57no9mhgvdzq2hlcee8fsg2ac
Category:PowerPC
14
198
594
547
2020-02-02T11:41:23Z
Piernov
10
Category Mac
594
wikitext
text/x-wiki
[[Category:Mac]]
5cympk57no9mhgvdzq2hlcee8fsg2ac
Category:Resources
14
199
573
2020-02-02T11:34:40Z
Piernov
10
Category:Resources
573
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:Troubleshooting Guide
14
60
101
99
2019-11-10T17:14:04Z
Chrisb
1
Chrisb moved page [[Category:Troubleshooting]] to [[Category:Troubleshooting Guide]] without leaving a redirect
99
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:iMac
14
813
1748
2020-09-14T16:44:09Z
Chrisb
1
Created page with "[[Category:Mac]]"
1748
wikitext
text/x-wiki
[[Category:Mac]]
5cympk57no9mhgvdzq2hlcee8fsg2ac
Category:iPad
14
200
583
2020-02-02T11:37:57Z
Piernov
10
Category:iPhone
583
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category:iPhone
14
197
7101
776
2024-05-04T19:27:53Z
Shoppingbusiness40
1134
added addition sub category
7101
wikitext
text/x-wiki
IPhone schematic Lines and their functions
1sibki1p5p8zcsbviwg8vo24eadbwp4
Category:iPhone 11
14
801
1712
2020-09-13T23:01:39Z
Eden
191
Created page with "[[Category:iPhone]]"
1712
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 11 Pro
14
802
1713
2020-09-13T23:01:45Z
Eden
191
Created page with "[[Category:iPhone]]"
1713
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 11 Pro Max
14
803
1714
2020-09-13T23:01:55Z
Eden
191
Created page with "[[Category:iPhone]]"
1714
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 12
14
804
1715
2020-09-13T23:02:02Z
Eden
191
Created page with "[[Category:iPhone]]"
1715
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 12 Max
14
805
1716
2020-09-13T23:02:10Z
Eden
191
Created page with "[[Category:iPhone]]"
1716
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 12 Pro
14
806
1717
2020-09-13T23:02:23Z
Eden
191
Created page with "[[Category:iPhone]]"
1717
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 12 Pro Max
14
807
1718
2020-09-13T23:02:30Z
Eden
191
Created page with "[[Category:iPhone]]"
1718
wikitext
text/x-wiki
[[Category:iPhone]]
5rkuml38rlgy2cfisk56ua9r2azssh0
Category:iPhone 5
14
787
1768
1766
2020-09-20T18:05:41Z
Eden
191
1768
wikitext
text/x-wiki
[[Category:iPhone | 1]]
p1ybs0dhrahm918dtnyu6w8d1o81a65
Category:iPhone 5c
14
788
1767
1699
2020-09-20T18:04:52Z
Eden
191
1767
wikitext
text/x-wiki
[[Category:iPhone | 2]]
bdhgqvfomzvvea47qc7z5fib3zogj8w
Category:iPhone 5s
14
789
1769
1700
2020-09-20T18:06:06Z
Eden
191
1769
wikitext
text/x-wiki
[[Category:iPhone | 3]]
o7fsfwcqya0wofoc9lztae4l7x0y4l9
Category:iPhone 6
14
790
1770
1701
2020-09-20T18:06:24Z
Eden
191
1770
wikitext
text/x-wiki
[[Category:iPhone | 4]]
oiqcu26bwioe1vd4xjtx9ngmngrkxsl
Category:iPhone 6+
14
791
1772
1771
2020-09-20T18:07:00Z
Eden
191
1772
wikitext
text/x-wiki
[[Category:iPhone | 5]]
9607hzufboo5to9e9sosivs60hkv3o2
Category:iPhone 6s
14
792
1773
1703
2020-09-20T18:07:26Z
Eden
191
1773
wikitext
text/x-wiki
[[Category:iPhone | 6]]
jrran4q263mpwgva50ibza6960qywhq
Category:iPhone 6s+
14
793
1774
1704
2020-09-20T18:07:40Z
Eden
191
1774
wikitext
text/x-wiki
[[Category:iPhone | 7]]
8v98cgrbvwjbq9box2rwo2qjv8f04rz
Category:iPhone 7
14
794
1775
1705
2020-09-20T18:08:06Z
Eden
191
1775
wikitext
text/x-wiki
[[Category:iPhone | 8]]
l8gg8fn3t92tex0h3b60ee1c10u9h6f
Category:iPhone 7+
14
795
1776
1706
2020-09-20T18:08:29Z
Eden
191
1776
wikitext
text/x-wiki
[[Category:iPhone | 9]]
s9vk5bllgib8lhiepw7dajq7h46024q
Category:iPhone 8
14
786
1781
1777
2020-09-20T18:10:43Z
Eden
191
1781
wikitext
text/x-wiki
[[Category:iPhone | A1]]
fv9smhlqka19m3720cezs7c3u3tjdok
Category:iPhone 8+
14
796
1782
1778
2020-09-20T18:11:02Z
Eden
191
1782
wikitext
text/x-wiki
[[Category:iPhone | A2]]
nkgole57u8km9h2yorfsuojwximiewh
Category:iPhone SE
14
809
1783
1779
2020-09-20T18:11:14Z
Eden
191
1783
wikitext
text/x-wiki
[[Category:iPhone | A3]]
g99iywgca5aux9grlgqxdof2nlnhhd5
Category:iPhone SE (2020)
14
808
1784
1780
2020-09-20T18:11:26Z
Eden
191
1784
wikitext
text/x-wiki
[[Category:iPhone | A4]]
pd15gsylsnv5ndyzxzk0d825edm5n4s
Category:iPhone X
14
797
1785
1765
2020-09-20T18:11:50Z
Eden
191
1785
wikitext
text/x-wiki
[[Category:iPhone | A5]]
ol9sj7vsjq9y4vwur4qrtbiqk7gdqfa
Category:iPhone XR
14
798
1786
1709
2020-09-20T18:12:07Z
Eden
191
1786
wikitext
text/x-wiki
[[Category:iPhone | A6]]
4vljx8miwosmku63al178eceemb9yif
Category:iPhone XS
14
799
1787
1710
2020-09-20T18:12:21Z
Eden
191
1787
wikitext
text/x-wiki
[[Category:iPhone | A7]]
1d78qhda1wlzaeicxqetaw91mmdrdz6
Category:iPhone XS Max
14
800
1788
1711
2020-09-20T18:12:38Z
Eden
191
1788
wikitext
text/x-wiki
[[Category:iPhone | A8]]
a690kqjnosui5oczakbehnpwe06gxtp
Category talk:Mac
15
2031
6217
6048
2021-11-12T02:10:37Z
Alan.l
19
/* 820-3437-B multiple sensor issues */
6217
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Category talk:Mac mini
15
1876
5550
5539
2021-02-07T17:46:29Z
Chrisb
1
5550
wikitext
text/x-wiki
'''Mac Mini 2011 Common issue.'''
'''Quarter Fan spin.''' ''No water damage.''
In most cases a quarter fan spin on in this year is a corrupted EFI chip. You will need to dump the proper bios of the year and model into the Mac Mini.
De-Soldering the original Bios chip and reprogramming it will help resolve the issue.
MOVED TO [[A1347 2010-2012 common issues]]
m84sky3kufktpao7iidicz545xx8frv
Module:About
828
1637
4922
4921
2020-10-11T05:50:33Z
Chrisb
1
1 revision imported
4921
Scribunto
text/plain
local mArguments --initialize lazily
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.about (frame)
-- A passthrough that gets args from the frame and all
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
return p._about(args)
end
function p._about (args, options)
-- Produces "about" hatnote.
-- Type checks and defaults
checkType('_about', 1, args, 'table', true)
args = args or {}
checkType('_about', 2, options, 'table', true)
options = options or {}
local defaultOptions = {
aboutForm = 'This %s is about %s. ',
PageType = require('Module:Pagetype').main(),
otherText = nil, --included for complete list
sectionString = 'section'
}
for k, v in pairs(defaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Set initial "about" string
local pageType = (args.section and options.sectionString) or options.PageType
local about = ''
if args[1] then
about = string.format(options.aboutForm, pageType, args[1])
end
--Allow passing through certain options
local fsOptions = {
otherText = options.otherText,
extratext = args.text
}
local hnOptions = {
selfref = args.selfref
}
-- Set for-see list
local forSee = mHatList._forSee(args, 2, fsOptions)
-- Concatenate and return
return mHatnote._hatnote(about .. forSee, hnOptions)
end
return p
34eqkrvgvpb6coyf5mc8amjmasfegyy
Module:Aligned table
828
1650
4948
4947
2020-10-11T05:50:40Z
Chrisb
1
1 revision imported
4947
Scribunto
text/plain
-- This module implements {{aligned table}}
local p = {}
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
function p.table(frame)
local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
local entries = {}
local colclass = {}
local colstyle = {}
local cols = tonumber(args['cols']) or 2
-- create the root table
local root = mw.html.create('table')
-- add table style for fullwidth
if isnotempty(args['fullwidth']) then
root
:css('width', '100%')
:css('border-collapse', 'collapse')
:css('border-spacing', '0px 0px')
:css('border', 'none')
end
-- add table classes
if isnotempty(args['class']) then
root:addClass(args['class'])
end
-- add table style
if isnotempty(args['style']) then
root:cssText(args['style'])
end
-- build arrays with the column styles and classes
if isnotempty(args['leftright']) then
colstyle[1] = 'text-align:left;'
colstyle[2] = 'text-align:right;'
end
if isnotempty(args['rightleft']) then
colstyle[1] = 'text-align:right;'
colstyle[2] = 'text-align:left;'
end
for i = 1,cols do
colclass[ i ] = colclass[ i ] or ''
colstyle[ i ] = colstyle[ i ] or ''
if isnotempty(args['colstyle']) then
colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colalign' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'align']) then
colstyle[ i ] = 'text-align:' .. args['col' .. tostring(i) .. 'align'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['align' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colnowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'nowrap']) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['nowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
end
if isnotempty(args['colwidth' .. tostring(i)]) then
colstyle[ i ] = 'width:' .. args['colwidth' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'width']) then
colstyle[ i ] = 'width:' .. args['col' .. tostring(i) .. 'width'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['colwidth']) then
colstyle[ i ] = 'width:' .. args['colwidth'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colstyle' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['colstyle' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'style']) then
colstyle[ i ] = colstyle[ i ] .. args['col' .. tostring(i) .. 'style']
elseif isnotempty(args['style' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)]
end
if isnotempty(args['colclass' .. tostring(i)]) then
colclass[ i ] = args['colclass' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'class']) then
colclass[ i ] = args['col' .. tostring(i) .. 'class']
elseif isnotempty(args['class' .. tostring(i)]) then
colclass[ i ] = args['class' .. tostring(i)]
end
end
-- compute the maximum cell index
local cellcount = 0
for k, v in pairs( args ) do
if type( k ) == 'number' then
cellcount = math.max(cellcount, k)
end
end
-- compute the number of rows
local rows = math.ceil(cellcount / cols)
-- build the table content
if isnotempty(args['title']) then
local caption = root:tag('caption')
caption:cssText(args['titlestyle'])
caption:wikitext(args['title'])
end
if isnotempty(args['above']) then
local row = root:tag('tr')
local cell = row:tag('th')
cell:attr('colspan', cols)
cell:cssText(args['abovestyle'])
cell:wikitext(args['above'])
end
for j=1,rows do
-- start a new row
local row = root:tag('tr')
if isnotempty(args['rowstyle']) then
row:cssText(args['rowstyle'])
else
row:css('vertical-align', 'top')
end
-- loop over the cells in the row
for i=1,cols do
local cell
if isnotempty(args['row' .. tostring(j) .. 'header']) then
cell = row:tag('th'):attr('scope','col')
elseif isnotempty(args['col' .. tostring(i) .. 'header']) then
cell = row:tag('th'):attr('scope','row')
else
cell = row:tag('td')
end
if args['class' .. tostring(j) .. '.' .. tostring(i)] then
cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowclass' .. tostring(j)] then
cell:addClass(args['rowclass' .. tostring(j)])
elseif args['row' .. tostring(j) .. 'class'] then
cell:addClass(args['row' .. tostring(j) .. 'class'])
elseif args['rowevenclass'] and math.fmod(j,2) == 0 then
cell:addClass(args['rowevenclass'])
elseif args['rowoddclass'] and math.fmod(j,2) == 1 then
cell:addClass(args['rowoddclass'])
end
if colclass[i] ~= '' then
cell:addClass(colclass[i])
end
end
if args['style' .. tostring(j) .. '.' .. tostring(i)] then
cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowstyle' .. tostring(j)] then
cell:cssText(args['rowstyle' .. tostring(j)])
elseif args['rowevenstyle'] and math.fmod(j,2) == 0 then
cell:cssText(args['rowevenstyle'])
elseif args['rowoddstyle'] and math.fmod(j,2) == 1 then
cell:cssText(args['rowoddstyle'])
elseif args['row' .. tostring(j) .. 'style'] then
cell:cssText(args['row' .. tostring(j) .. 'style'])
end
if isnotempty(colstyle[i]) then
cell:cssText(colstyle[i])
end
end
cell:wikitext(mw.ustring.gsub(args[cols*(j - 1) + i] or '', '^(.-)%s*$', '%1') or '')
end
end
-- return the root table
return tostring(root)
end
return p
lkoars5bco6x4lfsuz77evrgpgjjg0r
Module:Anchor
828
1306
2844
2843
2020-09-29T19:18:17Z
Chrisb
1
1 revision imported
2843
Scribunto
text/plain
-- This module implements {{anchor}}.
local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')
local p = {}
function p.main(frame)
-- Get the positional arguments from #invoke, remove any nil values,
-- and pass them to p._main.
local args = getArgs(frame)
local argArray = tableTools.compressSparseArray(args)
return p._main(unpack(argArray))
end
function p._main(...)
-- Generate the list of anchors.
local anchors = {...}
local ret = {}
for _, anchor in ipairs(anchors) do
ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
end
return table.concat(ret)
end
return p
qn9l8z10vmc8ghld7804a9aaffg6g8o
Module:Arguments
828
881
1994
1993
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1993
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
5qx9tzlul9ser30uxj9nbasjt92cevn
Module:Category handler
828
871
1974
1973
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1973
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
letwavu3yvlayfzew66uuwixmwebq5b
Module:Category handler/blacklist
828
900
2032
2031
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2031
Scribunto
text/plain
-- This module contains the blacklist used by [[Module:Category handler]].
-- Pages that match Lua patterns in this list will not be categorised unless
-- categorisation is explicitly requested.
return {
'^Main Page$', -- don't categorise the main page.
-- Don't categorise the following pages or their subpages.
-- "%f[/\0]" matches if the next character is "/" or the end of the string.
'^Wikipedia:Cascade%-protected items%f[/\0]',
'^User:UBX%f[/\0]', -- The userbox "template" space.
'^User talk:UBX%f[/\0]',
-- Don't categorise subpages of these pages, but allow
-- categorisation of the base page.
'^Wikipedia:Template index/.*$',
-- Don't categorise archives.
'/[aA]rchive',
"^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$",
}
fsv1drcay6t25e91hzhqxtyp7pckbpx
Module:Category handler/config
828
901
2034
2033
2020-09-29T19:15:42Z
Chrisb
1
1 revision imported
2033
Scribunto
text/plain
--------------------------------------------------------------------------------
-- [[Module:Category handler]] configuration data --
-- Language-specific parameter names and values can be set here. --
-- For blacklist config, see [[Module:Category handler/blacklist]]. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- foo = 'parameter name', --
-- --
-- To add multiple names, you can use this format: --
-- --
-- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, --
--------------------------------------------------------------------------------
cfg.parameters = {
-- The nocat and categories parameter suppress
-- categorisation. They are used with Module:Yesno, and work as follows:
--
-- cfg.nocat:
-- Result of yesno() Effect
-- true Categorisation is suppressed
-- false Categorisation is allowed, and
-- the blacklist check is skipped
-- nil Categorisation is allowed
--
-- cfg.categories:
-- Result of yesno() Effect
-- true Categorisation is allowed, and
-- the blacklist check is skipped
-- false Categorisation is suppressed
-- nil Categorisation is allowed
nocat = 'nocat',
categories = 'categories',
-- The parameter name for the legacy "category2" parameter. This skips the
-- blacklist if set to the cfg.category2Yes value, and suppresses
-- categorisation if present but equal to anything other than
-- cfg.category2Yes or cfg.category2Negative.
category2 = 'category2',
-- cfg.subpage is the parameter name to specify how to behave on subpages.
subpage = 'subpage',
-- The parameter for data to return in all namespaces.
all = 'all',
-- The parameter name for data to return if no data is specified for the
-- namespace that is detected.
other = 'other',
-- The parameter name used to specify a page other than the current page;
-- used for testing and demonstration.
demopage = 'page',
}
--------------------------------------------------------------------------------
-- Parameter values --
-- These are set values that can be used with certain parameters. Only one --
-- value can be specified, like this: --
-- --
-- cfg.foo = 'value name' -- --
--------------------------------------------------------------------------------
-- The following settings are used with the cfg.category2 parameter. Setting
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2
-- is present but equal to anything other than cfg.category2Yes or
-- cfg.category2Negative then it supresses cateogrisation.
cfg.category2Yes = 'yes'
cfg.category2Negative = '¬'
-- The following settings are used with the cfg.subpage parameter.
-- cfg.subpageNo is the value to specify to not categorise on subpages;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.
cfg.subpageNo = 'no'
cfg.subpageOnly = 'only'
--------------------------------------------------------------------------------
-- Default namespaces --
-- This is a table of namespaces to categorise by default. The keys are the --
-- namespace numbers. --
--------------------------------------------------------------------------------
cfg.defaultNamespaces = {
[ 0] = true, -- main
[ 6] = true, -- file
[ 12] = true, -- help
[ 14] = true, -- category
[100] = true, -- portal
[108] = true, -- book
}
--------------------------------------------------------------------------------
-- Wrappers --
-- This is a wrapper template or a list of wrapper templates to be passed to --
-- [[Module:Arguments]]. --
--------------------------------------------------------------------------------
cfg.wrappers = 'Template:Category handler'
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
6ga9hbq2pdwalsvx68i53dmbr421rq5
Module:Category handler/data
828
902
2036
2035
2020-09-29T19:15:42Z
Chrisb
1
1 revision imported
2035
Scribunto
text/plain
-- This module assembles data to be passed to [[Module:Category handler]] using
-- mw.loadData. This includes the configuration data and whether the current
-- page matches the title blacklist.
local data = require('Module:Category handler/config')
local mShared = require('Module:Category handler/shared')
local blacklist = require('Module:Category handler/blacklist')
local title = mw.title.getCurrentTitle()
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(
title.prefixedText,
blacklist
)
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(
title,
mShared.getParamMappings()
)
return data
k26mwixuaeijisfddb0sxkg82iux8v4
Module:Category handler/doc
828
903
2038
2037
2020-09-29T19:15:43Z
Chrisb
1
1 revision imported
2037
wikitext
text/x-wiki
{{high-use|4486247|all-pages = yes}}
{{Used in system}}
{{Module rating|p}}
This module implements the {{tl|category handler}} template. The category handler template helps other templates to automate both categorization and [[Wikipedia:Category suppression|category suppression]]. For information about using the category handler template in other templates, please see the '''[[Template:Category handler|template documentation]]'''. Keep reading for information about using the category handler module in other Lua modules, or for information on exporting this module to other wikis.
== Use from other Lua modules ==
=== When not to use this module ===
For cases where a module only needs to categorise in one of the namespaces main (articles), file (images) or category, then using this module is overkill. Instead, you can simply get a title object using [[mw:Extension:Scribunto/Lua reference manual#mw.title.getCurrentTitle|mw.title.getCurrentTitle]] and check the <code>nsText</code> field. For example:
<syntaxhighlight lang="lua">
local title = mw.title.getCurrentTitle()
if title.nsText == 'File' then
-- do something
end
</syntaxhighlight>
However, if your module needs to categorize in any other namespace, then we recommend you use this module, since it provides proper category suppression and makes it easy to select how to categorize in the different namespaces.
=== Namespaces ===
This module detects and groups all the different [[Wikipedia:Namespace|namespaces]] used on Wikipedia into several types. These types are used as parameter names in this module.
:'''main''' = Main/article space, as in normal Wikipedia articles.
:'''talk''' = Any talk space, such as page names that start with "Talk:", "User talk:", "File talk:" and so on.
:'''user, wikipedia, file ... = The other namespaces except the talk pages. Namespace aliases are also accepted. See the table below for the full list.'''
:'''other''' = Any namespaces that were not specified as a parameter to the template. See examples below.
;List of possible namespace parameters
(excluding <code>''talk''</code> and <code>''other''</code>)
{{#invoke:Namespace detect|table}}
=== Basic usage ===
This module takes two or more parameters. Here's an example using a hello world program:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'Hello world!'
local category = categoryHandler{
'[[Category:Somecat]]',
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
The above example uses the default settings for the category handler module. That means the example module will categorize on pages in the following namespaces:
:'''main''', '''file''', '''help''', '''category''', '''portal''' and '''book'''
But it will ''not'' categorize in any other namespaces, e.g.:
:'''talk''', '''user''', '''wikipedia''', '''mediawiki''', '''template''' ...
And it will ''not'' categorize on blacklisted pages. (See section [[#Blacklist|blacklist]] below.)
The reason the category handler module does not categorize in some of the namespaces is that in those namespaces most modules and templates are just demonstrated or listed, not used. Thus most modules and templates should not categorize in those namespaces.
Any module or template that is meant for one or more of the namespaces where this module categorizes can use the basic syntax as shown above.
=== Advanced usage ===
This module takes one or more parameters named after the different page types as listed in section [[#Namespaces|namespaces]] above. By using those parameters you can specify exactly in which namespaces your template should categorize. Like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module meant for articles and talk pages.'
local category = categoryHandler{
main = '[[Category:Somecat1]]', -- Categorize in main (article) space
talk = '[[Category:Somecat2]]', -- Categorize in talk space
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
The above module will only categorize in main and talk space. But it will not categorize on /archive pages since they are blacklisted. (See section [[#Blacklist|blacklist]] below.) And if you need to demonstrate (discuss) the module on a talkpage, then you can feed "<code>nocat='true'</code>" to prevent that template from categorizing. (See section [[#Nocat|nocat]] below.) Like this:
<pre>
== My new module ==
Hey guys, have you seen my new module?
{{#invoke:mymodule|main|nocat=true}}
Nice, isn't it?
--~~~~
</pre>
Sometimes we want to use the same category in several namespaces, then do like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module used in several namespaces.'
local category = categoryHandler{
main = '[[Category:Somecat1]]',
[ 1 ] = '[[Category:Somecat2]]', -- For help and user space
help = 1,
user = 1,
talk = '', -- No categories on talk pages
other = '[[Category:Somecat3]]', -- For all other namespaces
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
In the above example we use a numbered parameter to feed one of the categories, and then we tell this module to use that numbered parameter for both the help and user space.
The category handler module understands an unlimited number of numbered parameters.
The '''other''' parameter defines what should be used in the remaining namespaces that have not explicitly been fed data.
Note the empty but defined '''talk''' parameter. That stops this module from showing what has been fed to the '''other''' parameter, when in talk space.
The category handler module also has a parameter called '''all'''. It works like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module used in all namespaces.'
local category = categoryHandler{
all = '[[Category:Somecat1]]', -- Categorize in all namespaces
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
The above example will categorize in all namespaces, but not on blacklisted pages. If you want to demonstrate that module on a page, then use "<code>nocat=true</code>" to prevent the template from categorizing.
We suggest avoiding the '''all''' parameter, since modules and templates should preferably only categorize in the namespaces they need to.
The all parameter can also be combined with the rest of the parameters. Like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module used in all namespaces.'
local category = categoryHandler{
all = '[[Category:Somecat1]]', -- Categorize in all namespaces
main = '[[Category:Somecat2]]', -- And add this in main space
other = '[[Category:Somecat3]]', -- And add this in all other namespaces
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
If the above module is placed on an article, then it will add the categories "Somecat1" and "Somecat2". But on all other types of pages it will instead add "Somecat1" and "Somecat3". As the example shows, the all parameter works independently of the rest of the parameters.
=== Subpages ===
The category handler module understands the '''subpage''' parameter. Like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module used in all namespaces.'
local category = categoryHandler{
subpage = 'no' -- Don't categorize on subpages
wikipedia = '[[Category:Somecat]]',
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
If "<code>subpage='no'</code>" then this template will ''not'' categorize on subpages. For the rare occasion you ''only'' want to categorize on subpages, then use "<code>subpage='only'</code>". If '''subpage''' is empty or undefined then this template categorizes both on basepages and on subpages.
=== Blacklist ===
This module has a blacklist of the pages and page types where templates should not auto-categorize. Thus modules that use this meta-template will for instance not categorize on /archive pages and on the subpages of [[Wikipedia:Template messages]].
If you want a template to categorize on a blacklisted page, then feed "<code><nowiki>nocat = false</nowiki></code>" to the module when you place it on the page, thus skipping the blacklist check. Note that this module only categorizes if it has data for the namespace. For instance, if the basic syntax is used (see [[#Basic usage|basic usage]] above), then even if you set "<code>nocat = false</code>" the template will not categorize on a talk page, since it has no data for talk pages. But it has data for help space, so on a blacklisted help page it will categorize.
The blacklist is located in the configuration table <code>cfg.blacklist</code> near the top of the module code.
=== The "nocat" parameter ===
This module understands the '''nocat''' parameter:
* If "<code>nocat = true</code>" then this template does ''not'' categorize.
* If '''nocat''' is <code>nil</code> then this template categorizes as usual.
* If "<code>nocat = false</code>" this template categorizes even when on blacklisted pages. (See section [[#Blacklist|blacklist]] above.)
* The nocat parameter also accepts aliases for <code>true</code> and <code>false</code> as defined by [[Module:Yesno]], e.g. "yes", "y", "true", and 1 for <code>true</code>, and "no", "n", "false", and 0 for <code>false</code>.
Modules and templates that use {{tlf|category handler}} should forward '''nocat''', so they too understand '''nocat'''. The code "<code>nocat = frame.args.nocat</code>" shown in the examples on this page does that.
=== The "categories" parameter ===
For backwards compatibility this module also understands the '''categories''' parameter. It works the same as '''nocat'''. Like this:
* If "<code>categories = false</code>" then this template does ''not'' categorize.
* If '''categories''' is empty or undefined then this template categorizes as usual.
* If "<code>categories = true</code>" this template categorizes even when on blacklisted pages.
* The categories parameter also accepts aliases for <code>true</code> and <code>false</code> as defined by [[Module:Yesno]], e.g. "yes", "y", "true", and 1 for <code>true</code>, and "no", "n", "false", and 0 for <code>false</code>.
=== The "category2" parameter ===
For backwards compatibility this template kind of supports the old "category =" parameter. But the parameter name "category" is already used in this module to feed category data for when in category space. So instead this template uses '''category2''' for the usage similar to '''nocat'''. Like this:
* If "<code>category2 = "</code>" (empty but defined), or "<code>category2 = 'no'</code>", or if '''category2''' is fed any other data (except as described in the next two points), then this template does ''not'' categorize.
* If '''category2''' is undefined or if "<code>category2 = '¬'</code>", then this template categorizes as usual.
* If "<code>category2 = 'yes'</code>" this template categorizes even when on blacklisted pages.
=== Categories and text ===
Besides from categories, you can feed anything else to this module, for instance some text. Like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local result = 'This is a module used on talk pages.'
local category = categoryHandler{
talk = '[[Category:Somecat]]',
other = '<p class="error">This module should only be used on talk pages.</p>',
nocat = frame.args.nocat -- So "nocat=true/false" works
}
category = category or '' -- Check that we don't have a nil value for the category variable.
return result .. category
end
return p
</syntaxhighlight>
When the module code above is used on anything other than a talk page, it will look like this:
:This is a module used on talk pages.{{#invoke:category handler|main
| talk = [[Category:Somecat]]
| other = <p class="error">This module should only be used on talk pages.</p>
| nocat = {{{nocat|}}} <!--So "nocat=true/false" works-->
}}
That text will not show on blacklisted pages, so don't use this method to show any important information. Feeding "<code>nocat = 'true'</code>" to the template hides the text, just as it suppresses any categories.
=== The "page" parameter ===
For testing and demonstration purposes this module can take a parameter named '''page'''. Like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local category = categoryHandler{
main = 'Category:Some cat',
talk = 'Category:Talk cat',
nocat = frame.args.nocat, -- So "nocat=true/false" works
page = 'User talk:Example'
}
return category
end
return p
</syntaxhighlight>
In the above code we on purpose left out the brackets around the category names so we see the output on the page. No matter on what kind of page the code above is used it will return this:
:{{#invoke:category handler|main
| main = Category:Some cat
| talk = Category:Talk cat
| nocat = {{{nocat|}}} <!--So "nocat=true/false" works-->
| page = User talk:Example
}}
The '''page''' parameter makes this module behave exactly as if on that page. Even the blacklist works. The pagename doesn't have to be an existing page.
If the '''page''' parameter is empty or undefined, the name of the current page determines the result.
You can make it so your module also understands the '''page''' parameter. That means you can test how your template will categorize on different pages, without having to actually edit those pages. Then do like this:
<syntaxhighlight lang="lua">
p = {}
local categoryHandler = require( 'Module:Category handler' ).main
function p.main( frame )
local category = categoryHandler{
main = 'Category:Some cat',
talk = 'Category:Talk cat',
nocat = frame.args.nocat, -- So "nocat=true/false" works
page = frame.args.page -- For testing
}
return category
end
return p
</syntaxhighlight>
=== Parameters ===
List of all parameters:
* First positional parameter - for default settings
* subpage = 'no' / 'only'
* 1, 2, 3 ...
* all = '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text'
* main = 1, 2, 3 ... / '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text'
* ...
* other = 1, 2, 3 ... / '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text'
* nocat = frame.args.nocat / true / false / 'yes' / 'no' / 'y' / 'n' / 'true' / 'false' / 1 / 0
* categories = frame.args.categories / false / true / 'no' / 'yes' / 'n' / 'y' / 'false' / 'true' / 0 / 1
* category2 = frame.args.category or '¬' / 'no' / 'not defined' / '¬' / 'yes'
* page = frame.args.page / 'User:Example'
Note that empty values to the "main" ... "other" parameters have special meaning (see examples above). The "all" parameter doesn't understand numbered parameters, since there should never be a need for that.
== Exporting to other wikis ==
This module can be exported to other wikis by changing the configuration values in the <code>cfg</code> table. All the variable values are configurable, so after the configuration values have been set there should be no need to alter the main module code. Details of each configuration value are included in the module code comments. In addition, this module requires [[Module:Namespace detect]] to be available on the local wiki.
== See also ==
* {{tl|Category handler}} – for using this module with templates, rather than Lua modules.
* [[Wikipedia:Category suppression]] – The how-to guide.
* [[Wikipedia:WikiProject Category Suppression]] – The WikiProject.
* [[Wikipedia:Namespace]] – Lists all the namespaces.
5kxmyqwfbg89dg8t6et327d4b1oa9z5
Module:Category handler/shared
828
904
2040
2039
2020-09-29T19:15:44Z
Chrisb
1
1 revision imported
2039
Scribunto
text/plain
-- This module contains shared functions used by [[Module:Category handler]]
-- and its submodules.
local p = {}
function p.matchesBlacklist(page, blacklist)
for i, pattern in ipairs(blacklist) do
local match = mw.ustring.match(page, pattern)
if match then
return true
end
end
return false
end
function p.getParamMappings(useLoadData)
local dataPage = 'Module:Namespace detect/data'
if useLoadData then
return mw.loadData(dataPage).mappings
else
return require(dataPage).mappings
end
end
function p.getNamespaceParameters(titleObj, mappings)
-- We don't use title.nsText for the namespace name because it adds
-- underscores.
local mappingsKey
if titleObj.isTalkPage then
mappingsKey = 'talk'
else
mappingsKey = mw.site.namespaces[titleObj.namespace].name
end
mappingsKey = mw.ustring.lower(mappingsKey)
return mappings[mappingsKey] or {}
end
return p
omlsnhudxz6juptvtxz7ns97jutbzc5
Module:Check for unknown parameters
828
1318
2868
2867
2020-09-29T19:18:22Z
Chrisb
1
1 revision imported
2867
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local knownargs = {}
local unknown = args['unknown'] or 'Found _VALUE_, '
local preview = args['preview']
local values = {}
local res = {}
local regexps = {}
-- create the list of known args, regular expressions, and the return string
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
if isnotempty(preview) then
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>'
elseif preview == nil then
preview = unknown
end
-- loop over the parent args, and make sure they are on the list
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and
knownargs[tostring(k)] == nil and
( showblankpos or isnotempty(v) )
then
table.insert(values, k .. ' = ' .. clean(v))
end
end
-- add results to the output tables
if #values > 0 then
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
unknown = preview
end
for _, v in pairs(values) do
if v == '' then
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
v = ' '
end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
fai6f8jbbmvoyopkl9xbkhi5th8yqh4
Module:Citation/CS1
828
1460
3224
3223
2020-10-11T01:32:07Z
Chrisb
1
1 revision imported
3223
Scribunto
text/plain
require('Module:No globals');
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
each of these counts against the Lua upvalue limit
]]
local validation; -- functions in Module:Citation/CS1/Date_validation
local utilities; -- functions in Module:Citation/CS1/Utilities
local z ={}; -- table of tables in Module:Citation/CS1/Utilities
local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers
local metadata; -- functions in Module:Citation/CS1/COinS
local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist
--[[--------------------------< P A G E S C O P E V A R I A B L E S >--------------------------------------
declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here
]]
local added_deprecated_cat; -- Boolean flag so that the category is added only once
local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category
local Frame; -- holds the module's frame table
--[[--------------------------< F I R S T _ S E T >------------------------------------------------------------
Locates and returns the first set value in a table of values where the order established in the table,
left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set.
This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs
version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate
the for-loop before it reached the actual end of the list.
]]
local function first_set (list, count)
local i = 1;
while i <= count do -- loop through all items in list
if utilities.is_set( list[i] ) then
return list[i]; -- return the first set list member
end
i = i + 1; -- point to next
end
end
--[[--------------------------< A D D _ V A N C _ E R R O R >----------------------------------------------------
Adds a single Vancouver system error message to the template's output regardless of how many error actually exist.
To prevent duplication, added_vanc_errs is nil until an error message is emitted.
added_vanc_errs is a Boolean declared in page scope variables above
]]
local function add_vanc_error (source)
if not added_vanc_errs then
added_vanc_errs = true; -- note that we've added this category
table.insert( z.message_tail, { utilities.set_message ( 'err_vancouver', {source}, true ) } );
end
end
--[[--------------------------< I S _ S C H E M E >------------------------------------------------------------
does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it
is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says:
Scheme names consist of a sequence of characters beginning with a
letter and followed by any combination of letters, digits, plus
("+"), period ("."), or hyphen ("-").
returns true if it does, else false
]]
local function is_scheme (scheme)
return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern
end
--[=[-------------------------< I S _ D O M A I N _ N A M E >--------------------------------------------------
Does this thing that purports to be a domain name seem to be a valid domain name?
Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5
BNF defined here: https://tools.ietf.org/html/rfc4234
Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15;
see also [[Single-letter second-level domain]]
list of TLDs: https://www.iana.org/domains/root/db
RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between
the first and last characters the name may use letters, digits, and the hyphen.
Also allowed are IPv4 addresses. IPv6 not supported
domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld
is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped
here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal.
There are several tests:
the first character of the whole domain name including subdomains must be a letter or a digit
internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490
single-letter/digit second-level domains in the .org, .cash, and .today TLDs
q, x, and z SL domains in the .com TLD
i and q SL domains in the .net TLD
single-letter SL domains in the ccTLDs (where the ccTLD is two letters)
two-character SL domains in gTLDs (where the gTLD is two or more letters)
three-plus-character SL domains in gTLDs (where the gTLD is two or more letters)
IPv4 dot-decimal address format; TLD not allowed
returns true if domain appears to be a proper name and TLD or IPv4 address, else false
]=]
local function is_domain_name (domain)
if not domain then
return false; -- if not set, abandon
end
domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once
if not domain:match ('^[%w]') then -- first character must be letter or digit
return false;
end
if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource
return false;
end
local patterns = { -- patterns that look like URLs
'%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld
'%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix
'%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10)
'%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10)
'%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars)
'%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD
'^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address
}
for _, pattern in ipairs (patterns) do -- loop through the patterns list
if domain:match (pattern) then
return true; -- if a match then we think that this thing that purports to be a URL is a URL
end
end
for _, d in ipairs ({'cash', 'company', 'today', 'org'}) do -- look for single letter second level domain names for these top level domains
if domain:match ('%f[%w][%w]%.' .. d) then
return true
end
end
return false; -- no matches, we don't know what this thing is
end
--[[--------------------------< I S _ U R L >------------------------------------------------------------------
returns true if the scheme and domain parts of a URL appear to be a valid URL; else false.
This function is the last step in the validation process. This function is separate because there are cases that
are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external
wikilinks.
]]
local function is_url (scheme, domain)
if utilities.is_set (scheme) then -- if scheme is set check it and domain
return is_scheme (scheme) and is_domain_name (domain);
else
return is_domain_name (domain); -- scheme not set when URL is protocol-relative
end
end
--[[--------------------------< S P L I T _ U R L >------------------------------------------------------------
Split a URL into a scheme, authority indicator, and domain.
First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#).
If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain.
When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one
or more '/' characters immediately following the scheme's colon), make sure that there are only 2.
Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes
like news: that don't use authority indicator?
Strip off any port and path;
]]
local function split_url (url_str)
local scheme, authority, domain;
url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//')
if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL
domain = url_str:match ('^//(%S*)')
elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name
scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions
if utilities.is_set (authority) then
authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing;
if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then
return scheme; -- return scheme only making domain nil which will cause an error message
end
else
if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test?
return scheme; -- return scheme only making domain nil which will cause an error message
end
end
domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present
end
return scheme, domain;
end
--[[--------------------------< L I N K _ P A R A M _ O K >---------------------------------------------------
checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs
Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed:
# < > [ ] | { } _
except the underscore which is used as a space in wiki URLs and # which is used for section links
returns false when the value contains any of these characters.
When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the
|<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok).
]]
local function link_param_ok (value)
local scheme, domain;
if value:find ('[<>%[%]|{}]') then -- if any prohibited characters
return false;
end
scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL;
return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL
end
--[[--------------------------< L I N K _ T I T L E _ O K >---------------------------------------------------
Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value.
|<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when
that condition exists
check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language
code and must begin with a colon.
]]
local function link_title_ok (link, lorig, title, torig)
local orig;
if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value
if not link_param_ok (link) then -- check |<param>-link= markup
orig = lorig; -- identify the failing link parameter
elseif title:find ('%[%[') then -- check |title= for wikilink markup
orig = torig; -- identify the failing |title= parameter
elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki
local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix
if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon
orig = lorig; -- flag as error
end
end
end
if utilities.is_set (orig) then
link = ''; -- unset
table.insert( z.message_tail, { utilities.set_message ( 'err_bad_paramlink', orig)}); -- URL or wikilink in |title= with |title-link=;
end
return link; -- link if ok, empty string else
end
--[[--------------------------< C H E C K _ U R L >------------------------------------------------------------
Determines whether a URL string appears to be valid.
First we test for space characters. If any are found, return false. Then split the URL into scheme and domain
portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two
portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false.
Because it is different from a standard URL, and because this module used external_link() to make external links
that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name
is at https://tools.ietf.org/html/rfc5536#section-3.1.4
]]
local function check_url( url_str )
if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL
return false;
end
local scheme, domain;
scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL;
if 'news:' == scheme then -- special case for newsgroups
return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$');
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >----------------------------
Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first
non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks
that use protocol-relative URLs. Also finds bare URLs.
The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that
find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=,
and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]]
is possible as might be [[en://Hus]].
]=]
local function is_parameter_ext_wikilink (value)
local scheme, domain;
if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]'));
elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]'));
elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(%a%S*:%S+)'));
elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain
else
return false; -- didn't find anything that is obviously a URL
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[[-------------------------< C H E C K _ F O R _ U R L >-----------------------------------------------------
loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message.
]]
local function check_for_url (parameter_list)
local error_message = '';
for k, v in pairs (parameter_list) do -- for each parameter in the list
if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message
if utilities.is_set(error_message) then -- once we've added the first portion of the error message ...
error_message = error_message .. ", "; -- ... add a comma space separator
end
error_message = error_message .. "|" .. k .. "="; -- add the failed parameter
end
end
if utilities.is_set (error_message) then -- done looping, if there is an error message, display it
table.insert( z.message_tail, { utilities.set_message ( 'err_param_has_ext_link', {error_message}, true ) } );
end
end
--[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------
Escape sequences for content that will be used for URL descriptions
]]
local function safe_for_url( str )
if str:match( "%[%[.-%]%]" ) ~= nil then
table.insert( z.message_tail, { utilities.set_message ( 'err_wikilink_in_url', {}, true ) } );
end
return str:gsub( '[%[%]\n]', {
['['] = '[',
[']'] = ']',
['\n'] = ' ' } );
end
--[[--------------------------< E X T E R N A L _ L I N K >----------------------------------------------------
Format an external link with error checking
]]
local function external_link( URL, label, source, access)
local error_str = "";
local domain;
local path;
local base_url;
if not utilities.is_set ( label ) then
label = URL;
if utilities.is_set ( source ) then
error_str = utilities.set_message ( 'err_bare_url_missing_title', { utilities.wrap_style ('parameter', source) }, false, " " );
else
error( cfg.messages["bare_url_no_origin"] );
end
end
if not check_url( URL ) then
error_str = utilities.set_message ( 'err_bad_url', {utilities.wrap_style ('parameter', source)}, false, " " ) .. error_str;
end
domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path
if path then -- if there is a path portion
path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values
URL = table.concat ({domain, path}); -- and reassemble
end
base_url = table.concat({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL
if utilities.is_set (access) then -- access level (subscription, registration, limited)
base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon
end
return table.concat ({base_url, error_str});
end
--[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >--------------------------------------
Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the
offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated
parameters in the citation.
added_deprecated_cat is a Boolean declared in page scope variables above
]]
local function deprecated_parameter(name)
if not added_deprecated_cat then
added_deprecated_cat = true; -- note that we've added this category
table.insert( z.message_tail, { utilities.set_message ( 'err_deprecated_params', {name}, true ) } ); -- add error message
end
end
--[=[-------------------------< K E R N _ Q U O T E S >--------------------------------------------------------
Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote
mark contained in a |title= or |chapter= parameter's value.
This function will positive kern either single or double quotes:
"'Unkerned title with leading and trailing single quote marks'"
" 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example)
Double single quotes (italic or bold wiki-markup) are not kerned.
Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter
quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks.
Call this function for chapter titles, for website titles, etc.; not for book titles.
]=]
local function kern_quotes (str)
local cap = '';
local cap2 = '';
local wl_type, label, link;
wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks
if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks
str = utilities.substitute (cfg.presentation['kern-wl-both'], str);
elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks
str = utilities.substitute (cfg.presentation['kern-wl-left'], str);
elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks
str = utilities.substitute (cfg.presentation['kern-wl-right'], str);
end
else -- plain text or [[L|D]]; text in label variable
label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark)
label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark)
cap, cap2 = mw.ustring.match (label, "^([\"\'])([^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-left'], {cap, cap2});
end
cap, cap2 = mw.ustring.match (label, "^(.+[^\'])([\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-right'], {cap, cap2});
end
if 2 == wl_type then
str = utilities.make_wikilink (link, label); -- reassemble the wikilink
else
str = label;
end
end
return str;
end
--[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >----------------------------------------
|script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should
not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped
in italic markup.
Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right.
|script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon:
|script-title=ja:*** *** (where * represents a Japanese character)
Spaces between the two-character code and the colon and the colon and the first script character are allowed:
|script-title=ja : *** ***
|script-title=ja: *** ***
|script-title=ja :*** ***
Spaces preceding the prefix are allowed: |script-title = ja:*** ***
The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can
know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute
is not added. At this time there is no error message for this condition.
Supports |script-title=, |script-chapter=, |script-<periodical>=
]]
local function format_script_value (script_value, script_param)
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix
lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
if not utilities.is_set (lang) then
table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'missing title part'}, true ) } ); -- prefix without 'title'; add error message
return ''; -- script_value was just the prefix so return empty string
end
-- if we get this far we have prefix and script
name = cfg.lang_code_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize
if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script
-- is prefix one of these language codes?
if utilities.in_array (lang, cfg.script_lang_codes) then
utilities.add_prop_cat ('script_with_name', {name, lang})
else
table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'unknown language code'}, true ) } ); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'invalid language code'}, true ) } ); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'missing prefix'}, true ) } ); -- no language code prefix; add error message
end
script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL
return script_value;
end
--[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------
Initially for |title= and |script-title=, this function concatenates those two parameter values after the script value has been
wrapped in <bdi> tags.
]]
local function script_concatenate (title, script, script_param)
if utilities.is_set (script) then
script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error
if utilities.is_set (script) then
title = title .. ' ' .. script; -- concatenate title and script title
end
end
return title;
end
--[[--------------------------< W R A P _ M S G >--------------------------------------------------------------
Applies additional message text to various parameter values. Supplied string is wrapped using a message_list
configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken
from citation_config.messages - the reason this function is similar to but separate from wrap_style().
]]
local function wrap_msg (key, str, lower)
if not utilities.is_set ( str ) then
return "";
end
if true == lower then
local msg;
msg = cfg.messages[key]:lower(); -- set the message to lower case before
return utilities.substitute ( msg, str ); -- including template text
else
return utilities.substitute ( cfg.messages[key], str );
end
end
--[[--------------------------< W I K I S O U R C E _ U R L _ M A K E >----------------------------------------
Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate label; nil else.
str is the value assigned to |chapter= (or aliases) or |title= or |title-link=
]]
local function wikisource_url_make (str)
local wl_type, D, L;
local ws_url, ws_label;
local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'});
wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink)
if 0 == wl_type then -- not a wikilink; might be from |title-link=
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]]
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]])
str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_label = D; -- get ws article name from display portion of interwiki link
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title without namespace from link portion of wikilink
});
end
end
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent encoding of fragment marker
end
return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil
end
--[[--------------------------< F O R M A T _ P E R I O D I C A L >--------------------------------------------
Format the three periodical parameters: |script-<periodical>=, |<periodical>=, and |trans-<periodical>= into a single Periodical meta-
parameter.
]]
local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical)
local periodical_error = '';
if not utilities.is_set (periodical) then
periodical = ''; -- to be safe for concatenation
else
periodical = utilities.wrap_style ('italic-title', periodical); -- style
end
periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (trans_periodical) then
trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical);
if utilities.is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when trans-periodical without periodical or script-periodical
periodical = trans_periodical;
periodical_error = ' ' .. utilities.set_message ('err_trans_missing_title', {'periodical'});
end
end
return periodical .. periodical_error;
end
--[[--------------------------< F O R M A T _ C H A P T E R _ T I T L E >--------------------------------------
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=, and |chapter-url= into a single chapter meta-
parameter (chapter_url_source used for error messages).
]]
local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access)
local chapter_error = '';
local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link
if ws_url then
ws_label = ws_label:gsub ('_', ''); -- replace underscore separaters with space characters
chapter = ws_label;
end
if not utilities.is_set (chapter) then
chapter = ''; -- to be safe for concatenation
else
if false == no_quotes then
chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks
chapter = utilities.wrap_style ('quoted-title', chapter);
end
end
chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (chapter_url) then
chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate
elseif ws_url then
chapter = external_link (ws_url, chapter .. ' ', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this?
chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter});
end
if utilities.is_set (trans_chapter) then
trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter);
if utilities.is_set (chapter) then
chapter = chapter .. ' ' .. trans_chapter;
else -- here when trans_chapter without chapter or script-chapter
chapter = trans_chapter;
chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param>
chapter_error = ' ' .. utilities.set_message ('err_trans_missing_title', {chapter_source});
end
end
return chapter .. chapter_error;
end
--[[--------------------------< H A S _ I N V I S I B L E _ C H A R S >----------------------------------------
This function searches a parameter's value for non-printable or invisible characters. The search stops at the
first match.
This function will detect the visible replacement character when it is part of the Wikisource.
Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers (gallery, math, pre, ref)
and identifies them with a slightly different error message. See also coins_cleanup().
Output of this function is an error message that identifies the character or the Unicode group, or the stripmarker
that was detected along with its position (or, for multi-byte characters, the position of its first byte) in the
parameter value.
]]
local function has_invisible_chars (param, v)
local position = ''; -- position of invisible char or starting position of stripmarker
local dummy; -- end of matching string; not used but required to hold end position when a capture is returned
local capture; -- used by stripmarker detection to hold name of the stripmarker
local i = 1;
local stripmarker, apostrophe;
capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true
if capture == v then -- if same there are no Unicode characters
return;
end
while cfg.invisible_chars[i] do
local char = cfg.invisible_chars[i][1] -- the character or group name
local pattern = cfg.invisible_chars[i][2] -- the pattern used to find it
position, dummy, capture = mw.ustring.find (v, pattern) -- see if the parameter value contains characters that match the pattern
if position and (char == 'zero width joiner') then -- if we found a zero-width joiner character
if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts
position = nil; -- unset position
end
end
if position then
if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition)
('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters
stripmarker = true; -- set a flag
elseif true == stripmarker and 'delete' == char then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker
position = nil; -- unset
else
local err_msg;
if capture then
err_msg = capture .. ' ' .. char;
else
err_msg = char .. ' ' .. 'character';
end
table.insert( z.message_tail, { utilities.set_message ( 'err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}, true ) } ); -- add error message
return; -- and done with this parameter
end
end
i = i+1; -- bump our index
end
end
--[[--------------------------< A R G U M E N T _ W R A P P E R >----------------------------------------------
Argument wrapper. This function provides support for argument mapping defined in the configuration file so that
multiple names can be transparently aliased to single internal variable.
]]
local function argument_wrapper ( args )
local origin = {};
return setmetatable({
ORIGIN = function ( self, k )
local dummy = self[k]; --force the variable to be loaded.
return origin[k];
end
},
{
__index = function ( tbl, k )
if origin[k] ~= nil then
return nil;
end
local args, list, v = args, cfg.aliases[k];
if type( list ) == 'table' then
v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' );
if origin[k] == nil then
origin[k] = ''; -- Empty string, not nil
end
elseif list ~= nil then
v, origin[k] = args[list], list;
else
-- maybe let through instead of raising an error?
-- v, origin[k] = args[k], k;
error( cfg.messages['unknown_argument_map'] .. ': ' .. k);
end
-- Empty strings, not nil;
if v == nil then
v = '';
origin[k] = '';
end
tbl = rawset( tbl, k, v );
return v;
end,
});
end
--[[--------------------------< N O W R A P _ D A T E >--------------------------------------------------------
When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>. When date is DD MMMM YYYY or is
MMMM DD, YYYY then wrap in nowrap span: <span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY
DOES NOT yet support MMMM YYYY or any of the date ranges.
]]
local function nowrap_date (date)
local cap = '';
local cap2 = '';
if date:match("^%d%d%d%d%-%d%d%-%d%d$") then
date = utilities.substitute (cfg.presentation['nowrap1'], date);
elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then
cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$");
date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2});
end
return date;
end
--[[--------------------------< S E T _ T I T L E T Y P E >----------------------------------------------------
This function sets default title types (equivalent to the citation including |type=<default value>) for those templates that have defaults.
Also handles the special case where it is desirable to omit the title type from the rendered citation (|type=none).
]]
local function set_titletype (cite_class, title_type)
if utilities.is_set (title_type) then
if 'none' == cfg.keywords_xlate[title_type] then
title_type = ''; -- if |type=none then type parameter not displayed
end
return title_type; -- if |type= has been set to any other value use that value
end
return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are
returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
]]
local function hyphen_to_dash( str )
if not utilities.is_set (str) then
return str;
end
local accept; -- Boolean
str, accept = utilities.has_accept_as_written (str); -- remove accept-this-as-written markup when it wraps all of str
if accept then
return str; -- when markup removed, nothing to do, we're done
end
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-'); -- replace HTML numeric entity with hyphen character
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
if mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
item = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of str
table.insert (out, item); -- add the (possibly modified) item to the output table
end
return table.concat (out, ', '); -- concatenate the output table into a comma separated string
end
--[[--------------------------< S A F E _ J O I N >------------------------------------------------------------
Joins a sequence of strings together while checking for duplicate separation characters.
]]
local function safe_join( tbl, duplicate_char )
local f = {}; -- create a function table appropriate to type of 'duplicate character'
if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions
f.gsub = string.gsub
f.match = string.match
f.sub = string.sub
else -- for multi-byte characters use the ustring library functions
f.gsub = mw.ustring.gsub
f.match = mw.ustring.match
f.sub = mw.ustring.sub
end
local str = ''; -- the output string
local comp = ''; -- what does 'comp' mean?
local end_chr = '';
local trim;
for _, value in ipairs( tbl ) do
if value == nil then value = ''; end
if str == '' then -- if output string is empty
str = value; -- assign value to it (first time through the loop)
elseif value ~= '' then
if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup.
comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string)
else
comp = value;
end
-- typically duplicate_char is sepc
if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character?
-- Because individual string segments often (always?) begin with terminal punct for the
-- preceding segment: 'First element' .. 'sepc next element' .. etc.?
trim = false;
end_chr = f.sub(str, -1, -1); -- get the last character of the output string
-- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff?
if end_chr == duplicate_char then -- if same as separator
str = f.sub(str, 1, -2); -- remove it
elseif end_chr == "'" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc''
str = f.sub(str, 1, -4) .. "''"; -- remove them and add back ''
elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]''
trim = true; -- why? why do this and next differently from previous?
elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]''
trim = true; -- same question
end
elseif end_chr == "]" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink
trim = true;
elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link
trim = true;
elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link
trim = true;
elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title.
trim = true;
end
elseif end_chr == " " then -- if last char of output string is a space
if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space>
str = f.sub(str, 1, -3); -- remove them both
end
end
if trim then
if value ~= comp then -- value does not equal comp when value contains HTML markup
local dup2 = duplicate_char;
if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it
value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup
else
value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character
end
end
end
str = str .. value; --add it to the output string
end
end
return str;
end
--[[--------------------------< I S _ S U F F I X >------------------------------------------------------------
returns true is suffix is properly formed Jr, Sr, or ordinal in the range 1–9. Puncutation not allowed.
]]
local function is_suffix (suffix)
if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then
return true;
end
return false;
end
--[[--------------------------< I S _ G O O D _ V A N C _ N A M E >--------------------------------------------
For Vancouver style, author/editor names are supposed to be rendered in Latin (read ASCII) characters. When a name
uses characters that contain diacritical marks, those characters are to converted to the corresponding Latin character.
When a name is written using a non-Latin alphabet or logogram, that name is to be transliterated into Latin characters.
These things are not currently possible in this module so are left to the editor to do.
This test allows |first= and |last= names to contain any of the letters defined in the four Unicode Latin character sets
[http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A
[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF
[http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F
[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F
|lastn= also allowed to contain hyphens, spaces, and apostrophes. (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
|firstn= also allowed to contain hyphens, spaces, apostrophes, and periods
This original test:
if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then
was written outside of the code editor and pasted here because the code editor gets confused between character insertion point and cursor position.
The test has been rewritten to use decimal character escape sequence for the individual bytes of the Unicode characters so that it is not necessary
to use an external editor to maintain this code.
\195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls)
\195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls)
\195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B)
\199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B)
]]
local function is_good_vanc_name (last, first, suffix)
if not suffix then
if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix
first = first:match ('(.-)[,%s]+'); -- get name/initials
suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix
end
end
if utilities.is_set (suffix) then
if not is_suffix (suffix) then
add_vanc_error (cfg.err_msg_supl.suffix);
return false; -- not a name with an appropriate suffix
end
end
if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or
nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then
add_vanc_error (cfg.err_msg_supl['non-Latin char']);
return false; -- not a string of Latin characters; Vancouver requires Romanization
end;
return true;
end
--[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------
Attempts to convert names to initials in support of |name-list-style=vanc.
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/.
Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/.
This code only accepts and understands generational suffix in the Vancouver format because Roman numerals look like, and can be mistaken for, initials.
This function uses ustring functions because firstname initials may be any of the Unicode Latin characters accepted by is_good_vanc_name ().
]]
local function reduce_to_initials(first)
local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$");
if not name then -- if not initials and a suffix
name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials?
end
if name then -- if first is initials with or without suffix
if 3 > mw.ustring.len (name) then -- if one or two initials
if suffix then -- if there is a suffix
if is_suffix (suffix) then -- is it legitimate?
return first; -- one or two initials and a valid suffix so nothing to do
else
add_vanc_error (cfg.err_msg_supl.suffix); -- one or two initials with invalid suffix so error message
return first; -- and return first unmolested
end
else
return first; -- one or two initials without suffix; nothing to do
end
end
end -- if here then name has 3 or more uppercase letters so treat them as a word
local initials, names = {}, {}; -- tables to hold name parts and initials
local i = 1; -- counter for number of initials
names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix
while names[i] do -- loop through the table
if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot)
names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present
if is_suffix (names[i]) then -- if a legitimate suffix
table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table
break; -- and done because suffix must fall at the end of a name
end -- no error message if not a suffix; possibly because of Romanization
end
if 3 > i then
table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table
end
i = i+1; -- bump the counter
end
return table.concat(initials) -- Vancouver format does not include spaces.
end
--[[--------------------------< L I S T _ P E O P L E >-------------------------------------------------------
Formats a list of people (e.g. authors, contributors, editors, interviewers, translators)
names in the list will be linked when
|<name>-link= has a value
|<name>-mask- does NOT have a value; masked names are presumed to have been rendered previously so should have been linked there
when |<name>-mask=0, the associated name is not rendered
]]
local function list_people (control, people, etal)
local sep;
local namesep;
local format = control.format;
local maximum = control.maximum;
local lastauthoramp = control.lastauthoramp; -- TODO: delete after deprecation
local name_list = {};
if 'vanc' == format then -- Vancouver-like name styling?
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma
namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space
lastauthoramp = nil; -- TODO: delete after deprecation -- unset because isn't used by Vancouver style
else
sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon
namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space>
end
if sep:sub (-1, -1) ~= " " then sep = sep .. " " end
if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names
for i, person in ipairs (people) do
if utilities.is_set (person.last) then
local mask = person.mask;
local one;
local sep_one = sep;
if utilities.is_set (maximum) and i > maximum then
etal = true;
break;
end
if mask then
local n = tonumber (mask); -- convert to a number if it can be converted; nil else
if n then
one = 0 ~= n and string.rep("—",n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name
person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil
else
one = mask; -- replace name with mask text (must include name-list separator)
sep_one = " "; -- modify name-list separator
end
else
one = person.last; -- get surname
local first = person.first -- get given name
if utilities.is_set (first) then
if ("vanc" == format) then -- if Vancouver format
one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
if not person.corporate and is_good_vanc_name (one, first) then -- and name is all Latin characters; corporate authors not tested
first = reduce_to_initials (first); -- attempt to convert first name(s) to initials
end
end
one = one .. namesep .. first;
end
end
if utilities.is_set (person.link) then
one = utilities.make_wikilink (person.link, one); -- link author/editor
end
if one then -- if <one> has a value (name, mdash replacement, or mask text replacement)
table.insert (name_list, one); -- add it to the list of names
table.insert (name_list, sep_one); -- add the proper name-list separator
end
end
end
local count = #name_list / 2; -- (number of names + number of separators) divided by 2
if 0 < count then
if 1 < count and not etal then
if 'amp' == format or utilities.is_set (lastauthoramp) then -- TODO: delete lastauthoramp after deprecation
name_list[#name_list-2] = " & "; -- replace last separator with ampersand text
elseif 'and' == format then
if 2 == count then
name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text
else
name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text
end
end
end
name_list[#name_list] = nil; -- erase the last separator
end
local result = table.concat (name_list); -- construct list
if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list
result = result .. sep .. ' ' .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al.
end
return result, count; -- return name-list string and count of number of names (count used for editor names only)
end
--[[--------------------------< A N C H O R _ I D >------------------------------------------------------------
Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise returns an empty string.
namelist is one of the contributor-, author-, or editor-name lists chosen in that order. year is Year or anchor_year.
]]
local function anchor_id (namelist, year)
local names={}; -- a table for the one to four names and year
for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names
names[i] = v.last
if i == 4 then break end -- if four then done
end
table.insert (names, year); -- add the year at the end
local id = table.concat(names); -- concatenate names and year for CITEREF id
if utilities.is_set (id) then -- if concatenation is not an empty string
return "CITEREF" .. id; -- add the CITEREF portion
else
return ''; -- return an empty string; no reason to include CITEREF id in this citation
end
end
--[[--------------------------< N A M E _ H A S _ E T A L >----------------------------------------------------
Evaluates the content of name parameters (author, editor, etc.) for variations on the theme of et al. If found,
the et al. is removed, a flag is set to true and the function returns the modified name and the flag.
This function never sets the flag to false but returns it's previous state because it may have been set by
previous passes through this function or by the associated |display-<names>=etal parameter
]]
local function name_has_etal (name, etal, nocat, param)
if utilities.is_set (name) then -- name can be nil in which case just return
local patterns = cfg.et_al_patterns; --get patterns from configuration
for _, pattern in ipairs (patterns) do -- loop through all of the patterns
if name:match (pattern) then -- if this 'et al' pattern is found in name
name = name:gsub (pattern, ''); -- remove the offending text
etal = true; -- set flag (may have been set previously here or by |display-<names>=etal)
if not nocat then -- no categorization for |vauthors=
table.insert( z.message_tail, {utilities.set_message ('err_etal', {param})}); -- and set an error if not added
end
end
end
end
return name, etal;
end
--[[--------------------------< N A M E _ I S _ N U M E R I C >------------------------------------------------
Add maint cat when name parameter value does not contain letters. Does not catch mixed alphanumeric names so
|last=A. Green (1922-1987) does not get caught in the current version of this test but |first=(1888) is caught.
returns nothing
]]
local function name_is_numeric (name, list_name)
if utilities.is_set (name) then
if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters
utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template
end
end
end
--[[--------------------------< N A M E _ H A S _ E D _ M A R K U P >------------------------------------------
Evaluates the content of author and editor parameters for extraneous editor annotations: ed, ed., eds, (Ed.), etc.
These annotation do not belong in author parameters and are redundant in editor parameters. If found, the function
adds the editor markup maintenance category.
returns nothing
]]
local function name_has_ed_markup (name, list_name)
local patterns = cfg.editor_markup_patterns; -- get patterns from configuration
if utilities.is_set (name) then
for _, pattern in ipairs (patterns) do -- spin through patterns table and
if name:match (pattern) then
utilities.set_message ('maint_extra_text_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template
break;
end
end
end
end
--[[--------------------------< N A M E _ H A S _ M U L T _ N A M E S >----------------------------------------
Evaluates the content of last/surname (authors etc.) parameters for multiple names. Multiple names are indicated
if there is more than one comma or any semicolons. If found, the function adds the multiple name maintenance category.
returns nothing
]]
local function name_has_mult_names (name, list_name)
local _, commas, semicolons;
if utilities.is_set (name) then
_, commas = name:gsub (',', ''); -- count the number of commas
_, semicolons = name:gsub (';', ''); -- count the number of semicolons
if 1 < commas or 0 < semicolons then
utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message
end
end
end
--[[--------------------------< N A M E _ C H E C K S >--------------------------------------------------------
This function calls various name checking functions used to validate the content of the various name-holding
parameters.
]]
local function name_checks (last, first, list_name)
local accept_name;
if utilities.is_set (last) then
last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last>
if not accept_name then -- <last> not wrapped in accept-as-written markup
name_has_mult_names (last, list_name); -- check for multiple names in the parameter (last only)
name_has_ed_markup (last, list_name); -- check for extraneous 'editor' annotation
name_is_numeric (last, list_name); -- check for names that are compsed of digits and punctuation
end
end
if utilities.is_set (first) then
first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first>
if not accept_name then -- <first> not wrapped in accept-as-written markup
name_has_ed_markup (first, list_name); -- check for extraneous 'editor' annotation
name_is_numeric (first, list_name); -- check for names that are compsed of digits and punctuation
end
end
return last, first; -- done
end
--[[--------------------------< E X T R A C T _ N A M E S >----------------------------------------------------
Gets name list from the input arguments
Searches through args in sequential order to find |lastn= and |firstn= parameters (or their aliases), and their matching link and mask parameters.
Stops searching when both |lastn= and |firstn= are not found in args after two sequential attempts: found |last1=, |last2=, and |last3= but doesn't
find |last4= and |last5= then the search is done.
This function emits an error message when there is a |firstn= without a matching |lastn=. When there are 'holes' in the list of last names, |last1= and |last3=
are present but |last2= is missing, an error message is emitted. |lastn= is not required to have a matching |firstn=.
When an author or editor parameter contains some form of 'et al.', the 'et al.' is stripped from the parameter and a flag (etal) returned
that will cause list_people() to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps 'et al.' out of the
template's metadata. When this occurs, the page is added to a maintenance category.
]]
local function extract_names(args, list_name)
local names = {}; -- table of names
local last; -- individual name components
local first;
local link;
local mask;
local i = 1; -- loop counter/indexer
local n = 1; -- output table indexer
local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors)
local etal = false; -- return value set to true when we find some form of et al. in an author parameter
local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging
while true do
last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1
first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i );
link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i );
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al.
first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al.
last, first = name_checks (last, first, list_name); -- multiple names, extraneous annotation, etc. checks
if first and not last then -- if there is a firstn without a matching lastn
local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias
table.insert (z.message_tail, { utilities.set_message ( 'err_first_missing_last', {
first_alias, -- param name of alias missing its mate
first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form
}, true ) } ); -- add this error message
elseif not first and not last then -- if both firstn and lastn aren't found, are we done?
count = count + 1; -- number of times we haven't found last and first
if 2 <= count then -- two missing names and we give up
break; -- normal exit or there is a two-name hole in the list; can't tell which
end
else -- we have last with or without a first
local result;
link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup
if first then
link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup
end
names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only)
n = n + 1; -- point to next location in the names table
if 1 == count then -- if the previous name was missing
table.insert( z.message_tail, { utilities.set_message ( 'err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}, true ) } ); -- add this error message
end
count = 0; -- reset the counter, we're looking for two consecutive missing names
end
i = i + 1; -- point to next args location
end
return names, etal; -- all done, return our list of names and the etal flag
end
--[[--------------------------< G E T _ I S O 6 3 9 _ C O D E >------------------------------------------------
Validates language names provided in |language= parameter if not an ISO639-1 or 639-2 code.
Returns the language name and associated two- or three-character code. Because case of the source may be incorrect
or different from the case that WikiMedia uses, the name comparisons are done in lower case and when a match is
found, the Wikimedia version (assumed to be correct) is returned along with the code. When there is no match, we
return the original language name string.
mw.language.fetchLanguageNames(<local wiki language>, 'all') returns a list of languages that in some cases may include
extensions. For example, code 'cbk-zam' and its associated name 'Chavacano de Zamboanga' (MediaWiki does not support
code 'cbk' or name 'Chavacano'. Most (all?) of these languages are not used a 'language' codes per se, rather they
are used as sub-domain names: cbk-zam.wikipedia.org. A list of language names and codes supported by fetchLanguageNames()
can be found at Template:Citation Style documentation/language/doc
Names that are included in the list will be found if that name is provided in the |language= parameter. For example,
if |language=Chavacano de Zamboanga, that name will be found with the associated code 'cbk-zam'. When names are found
and the associated code is not two or three characters, this function returns only the WikiMedia language name.
Some language names have multiple entries under different codes:
Aromanian has code rup and code roa-rup
When this occurs, this function returns the language name and the 2- or 3-character code
Adapted from code taken from Module:Check ISO 639-1.
]]
local function get_iso639_code (lang, this_wiki_code)
if cfg.lang_name_remap[lang:lower()] then -- if there is a remapped name (because MediaWiki uses something that we don't think is correct)
return cfg.lang_name_remap[lang:lower()][1], cfg.lang_name_remap[lang:lower()][2]; -- for this language 'name', return a possibly new name and appropriate code
end
local ietf_code; -- because some languages have both IETF-like codes and ISO 639-like codes
local ietf_name;
local langlc = mw.ustring.lower (lang); -- lower-case version for comparisons
for code, name in pairs (cfg.languages) do -- scan the list to see if we can find our language
if langlc == mw.ustring.lower (name) then
if 2 == #code or 3 == #code then -- two- or three-character codes only; IETF extensions not supported
return name, code; -- so return the name and the code
end
ietf_code = code; -- remember that we found an IETF-like code and save its name
ietf_name = name; -- but keep looking for a 2- or 3-char code
end
end
-- didn't find name with 2- or 3-char code; if IETF-like code found return
return ietf_code and ietf_name or lang; -- associated name; return original language text else
end
--[[--------------------------< L A N G U A G E _ P A R A M E T E R >------------------------------------------
Gets language name from a provided two- or three-character ISO 639 code. If a code is recognized by MediaWiki,
use the returned name; if not, then use the value that was provided with the language parameter.
When |language= contains a recognized language (either code or name), the page is assigned to the category for
that code: Category:Norwegian-language sources (no). For valid three-character code languages, the page is assigned
to the single category for '639-2' codes: Category:CS1 ISO 639-2 language sources.
Languages that are the same as the local wiki are not categorized. MediaWiki does not recognize three-character
equivalents of two-character codes: code 'ar' is recognized but code 'ara' is not.
This function supports multiple languages in the form |language=nb, French, th where the language names or codes are
separated from each other by commas with optional space characters.
]]
local function language_parameter (lang)
local code; -- the two- or three-character language code
local name; -- the language name
local language_list = {}; -- table of language names to be rendered
local names_table = {}; -- table made from the value assigned to |language=
local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name
names_table = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list
for _, lang in ipairs (names_table) do -- reuse lang
name = cfg.lang_code_remap[lang:lower()]; -- first see if this is a code that is not supported by MediaWiki but is in remap
if name then -- there was a remapped code so
if not lang:match ('^%a%a%a?%-x%-%a+$') then -- if not a private IETF tag
lang = lang:gsub ('^(%a%a%a?)%-.*', '%1'); -- strip IETF tags from code
end
else
lang = lang:gsub ('^(%a%a%a?)%-.*', '%1'); -- strip any IETF-like tags from code
if 2 == lang:len() or 3 == lang:len() then -- if two-or three-character code
name = mw.language.fetchLanguageName (lang:lower(), cfg.this_wiki_code); -- get language name if |language= is a proper code
end
end
if utilities.is_set (name) then -- if |language= specified a valid code
code = lang:lower(); -- save it
else
name, code = get_iso639_code (lang, cfg.this_wiki_code); -- attempt to get code from name (assign name here so that we are sure of proper capitalization)
end
if utilities.is_set (code) then -- only 2- or 3-character codes
name = cfg.lang_code_remap[code] or name; -- override wikimedia when they misuse language codes/names
if cfg.this_wiki_code ~= code then -- when the language is not the same as this wiki's language
if 2 == code:len() then -- and is a two-character code
utilities.add_prop_cat ('foreign_lang_source' .. code, {name, code}); -- categorize it; code appended to allow for multiple language categorization
else -- or is a recognized language (but has a three-character code)
utilities.add_prop_cat ('foreign_lang_source_2' .. code, {code}); -- categorize it differently TODO: support multiple three-character code categories per cs1|2 template
end
elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled
utilities.add_prop_cat ('local_lang_source', {name, code}); -- categorize it
end
else
utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added
end
table.insert (language_list, name);
name = ''; -- so we can reuse it
end
name = utilities.make_sep_list (#language_list, language_list);
if this_wiki_name == name then
return ''; -- if one language and that language is this wiki's return an empty string (no annotation)
end
return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)'
--[[ TODO: should only return blank or name rather than full list
so we can clean up the bunched parenthetical elements Language, Type, Format
]]
end
--[[--------------------------< S E T _ C S 1 _ S T Y L E >----------------------------------------------------
Set style settings for CS1 citation templates. Returns separator and postscript settings
At en.wiki, for cs1:
ps gets: '.'
sep gets: '.'
]]
local function set_cs1_style (ps)
if not utilities.is_set (ps) then -- unless explicitly set to something
ps = cfg.presentation['ps_cs1']; -- terminate the rendered citation
end
return cfg.presentation['sep_cs1'], ps; -- element separator
end
--[[--------------------------< S E T _ C S 2 _ S T Y L E >----------------------------------------------------
Set style settings for CS2 citation templates. Returns separator, postscript, ref settings
At en.wiki, for cs2:
ps gets: '' (empty string - no terminal punctuation)
sep gets: ','
]]
local function set_cs2_style (ps, ref)
if not utilities.is_set (ps) then -- if |postscript= has not been set, set cs2 default
ps = cfg.presentation['ps_cs2']; -- terminate the rendered citation
end
if not utilities.is_set (ref) then -- if |ref= is not set
ref = "harv"; -- set default |ref=harv
end
return cfg.presentation['sep_cs2'], ps, ref; -- element separator
end
--[[--------------------------< G E T _ S E T T I N G S _ F R O M _ C I T E _ C L A S S >----------------------
When |mode= is not set or when its value is invalid, use config.CitationClass and parameter values to establish
rendered style.
]]
local function get_settings_from_cite_class (ps, ref, cite_class)
local sep;
if (cite_class == "citation") then -- for citation templates (CS2)
sep, ps, ref = set_cs2_style (ps, ref);
else -- not a citation template so CS1
sep, ps = set_cs1_style (ps);
end
return sep, ps, ref -- return them all
end
--[[--------------------------< S E T _ S T Y L E >------------------------------------------------------------
Establish basic style settings to be used when rendering the citation. Uses |mode= if set and valid or uses
config.CitationClass from the template's #invoke: to establish style.
]]
local function set_style (mode, ps, ref, cite_class)
local sep;
if 'cs2' == mode then -- if this template is to be rendered in CS2 (citation) style
sep, ps, ref = set_cs2_style (ps, ref);
elseif 'cs1' == mode then -- if this template is to be rendered in CS1 (cite xxx) style
sep, ps = set_cs1_style (ps);
else -- anything but cs1 or cs2
sep, ps, ref = get_settings_from_cite_class (ps, ref, cite_class); -- get settings based on the template's CitationClass
end
if cfg.keywords_xlate[ps:lower()] == 'none' then -- if assigned value is 'none' then
ps = ''; -- set to empty string
end
return sep, ps, ref
end
--[=[-------------------------< I S _ P D F >------------------------------------------------------------------
Determines if a URL has the file extension that is one of the PDF file extensions used by [[MediaWiki:Common.css]] when
applying the PDF icon to external links.
returns true if file extension is one of the recognized extensions, else false
]=]
local function is_pdf (url)
return url:match ('%.pdf$') or url:match ('%.PDF$') or
url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or
url:match ('%.PDF#') or url:match ('%.pdf#');
end
--[[--------------------------< S T Y L E _ F O R M A T >------------------------------------------------------
Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message if the format parameter does
not have a matching URL parameter. If the format parameter is not set and the URL contains a file extension that
is recognized as a PDF document by MediaWiki's commons.css, this code will set the format parameter to (PDF) with
the appropriate styling.
]]
local function style_format (format, url, fmt_param, url_param)
if utilities.is_set (format) then
format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize
if not utilities.is_set (url) then
format = format .. ' ' .. utilities.set_message ( 'err_format_missing_url', {fmt_param, url_param} ); -- add an error message
end
elseif is_pdf (url) then -- format is not set so if URL is a PDF file then
format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF
else
format = ''; -- empty string for concatenation
end
return format;
end
--[[--------------------------< G E T _ D I S P L A Y _ N A M E S >--------------------------------------------
Returns a number that defines the number of names displayed for author and editor name lists and a Boolean flag
to indicate when et al. should be appended to the name list.
When the value assigned to |display-xxxxors= is a number greater than or equal to zero, return the number and
the previous state of the 'etal' flag (false by default but may have been set to true if the name list contains
some variant of the text 'et al.').
When the value assigned to |display-xxxxors= is the keyword 'etal', return a number that is one greater than the
number of authors in the list and set the 'etal' flag true. This will cause the list_people() to display all of
the names in the name list followed by 'et al.'
In all other cases, returns nil and the previous state of the 'etal' flag.
inputs:
max: A['DisplayAuthors'] or A['DisplayEditors']; a number or some flavor of etal
count: #a or #e
list_name: 'authors' or 'editors'
etal: author_etal or editor_etal
]]
local function get_display_names (max, count, list_name, etal)
if utilities.is_set (max) then
if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
max = count + 1; -- number of authors + 1 so display all author name plus et al.
etal = true; -- overrides value set by extract_names()
elseif max:match ('^%d+$') then -- if is a string of numbers
max = tonumber (max); -- make it a number
if max >= count then -- if |display-xxxxors= value greater than or equal to number of authors/editors
table.insert( z.message_tail, {utilities.set_message ('err_disp_name', {cfg.special_case_translation [list_name], max}, true)}); -- add error message
max = nil;
end
else -- not a valid keyword or number
table.insert( z.message_tail, {utilities.set_message ('err_disp_name', {cfg.special_case_translation [list_name], max}, true)}); -- add error message
max = nil; -- unset; as if |display-xxxxors= had not been set
end
end
return max, etal;
end
--[[--------------------------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >------------------------------
Adds page to Category:CS1 maint: extra text if |page= or |pages= has what appears to be some form of p. or pp.
abbreviation in the first characters of the parameter content.
check Page and Pages for extraneous p, p., pp, and pp. at start of parameter value:
good pattern: '^P[^%.P%l]' matches when |page(s)= begins PX or P# but not Px where x and X are letters and # is a dgiit
bad pattern: '^[Pp][Pp]' matches matches when |page(s)= begins pp or pP or Pp or PP
]]
local function extra_text_in_page_check (page)
local good_pattern = '^P[^%.Pp]'; -- ok to begin with uppercase P: P7 (pg 7 of section P) but not p123 (page 123) TODO: add Gg for PG or Pg?
local bad_pattern = '^[Pp]?[Pp]%.?[ %d]';
if not page:match (good_pattern) and (page:match (bad_pattern) or page:match ('^[Pp]ages?')) then
utilities.set_message ('maint_extra_text'); -- add maint cat;
end
end
--[=[-------------------------< G E T _ V _ N A M E _ T A B L E >----------------------------------------------
split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled
parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the
rendered citation and in the metadata. Individual author names may be wikilinked
|vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.))
]=]
local function get_v_name_table (vparam, output_table, output_link_table)
local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas
local wl_type, label, link; -- wl_type not used here; just a place holder
local i = 1;
while name_table[i] do
if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses
local name = name_table[i];
i = i + 1; -- bump indexer to next segment
while name_table[i] do
name = name .. ', ' .. name_table[i]; -- concatenate with previous segments
if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses
break; -- and done reassembling so
end
i = i + 1; -- bump indexer
end
table.insert (output_table, name); -- and add corporate name to the output table
table.insert (output_link_table, ''); -- no wikilink
else
wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
table.insert (output_table, label); -- add this name
if 1 == wl_type then
table.insert (output_link_table, label); -- simple wikilink [[D]]
else
table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string
end
end
i = i + 1;
end
return output_table;
end
--[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >--------------------------------
This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and
|xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does.
Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names
may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance
tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests.
Supports generational suffixes Jr, 2nd, 3rd, 4th–6th.
This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials.
]]
local function parse_vauthors_veditors (args, vparam, list_name)
local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn=
local v_name_table = {};
local v_link_table = {}; -- when name is wikilinked, targets go in this table
local etal = false; -- return value set to true when we find some form of et al. vauthors parameter
local last, first, link, mask, suffix;
local corporate = false;
vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period)
v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas
for i, v_name in ipairs(v_name_table) do
first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor
local accept_name;
v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name>
-- if v_name:match ('^%(%(.+%)%)$') then -- corporate authors are wrapped in doubled parentheses to suppress vanc formatting and error detection
-- last = v_name:match ('^%(%((.+)%)%)$') -- remove doubled parentheses
if accept_name then
last = v_name;
corporate = true; -- flag used in list_people()
elseif string.find(v_name, "%s") then
if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters;
add_vanc_error (cfg.err_msg_supl.punctuation);
end
local lastfirstTable = {}
lastfirstTable = mw.text.split(v_name, "%s+")
first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix
if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters
suffix = first; -- not initials so assume that whatever we got is a generational suffix
first = table.remove(lastfirstTable); -- get what should be the initials from the table
end
last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix
if not utilities.is_set (last) then
first = ''; -- unset
last = v_name; -- last empty because something wrong with first
add_vanc_error (cfg.err_msg_supl.name);
end
if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then
add_vanc_error (cfg.err_msg_supl['missing comma']); -- matches last II last; the case when a comma is missing
end
if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test
add_vanc_error (cfg.err_msg_supl.name); -- matches a space between two initials
end
else
last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this?
end
if utilities.is_set (first) then
if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else
add_vanc_error (cfg.err_msg_supl.initials); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials
end
is_good_vanc_name (last, first, suffix); -- check first and last before restoring the suffix which may have a non-Latin digit
if utilities.is_set (suffix) then
first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials
suffix = ''; -- unset so we don't add this suffix to all subsequent names
end
else
if not corporate then
is_good_vanc_name (last, '');
end
end
link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i];
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list
end
return names, etal; -- all done, return our list of names
end
--[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or
select one of |editors=, |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list.
Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest and
similarly, |editorn= (and aliases) highest and |editors= lowest
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second
test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better
way to do this, I just haven't discovered what that way is.
Emits an error message when more than one xxxxor name source is provided.
In this function, vxxxxors = vauthors or veditors; xxxxors = authors or editors as appropriate.
]]
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)
local lastfirst = false;
if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ...
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors=
utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then
lastfirst = true;
end
if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions
(utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or
(true == lastfirst and utilities.is_set (xxxxors)) then
local err_name;
if 'AuthorList' == list_name then -- figure out which name should be used in error message
err_name = 'author';
else
err_name = 'editor';
end
table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters',
{err_name .. '-name-list parameters'}, true ) } ); -- add error message
end
if true == lastfirst then return 1 end; -- return a number indicating which author name source to use
if utilities.is_set (vxxxxors) then return 2 end;
if utilities.is_set (xxxxors) then return 3 end;
return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last
end
--[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------
This function is used to validate a parameter's assigned value for those parameters that have only a limited number
of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing
or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one
of the list of allowed values returns the translated value; else, emits an error message and returns the value
specified by ret_val.
]]
local function is_valid_parameter_value (value, name, possible, ret_val)
if not utilities.is_set (value) then
return ret_val; -- an empty parameter is ok
elseif utilities.in_array (value, possible) then
return cfg.keywords_xlate[value]; -- return translation of parameter keyword
else
table.insert( z.message_tail, { utilities.set_message ( 'err_invalid_param_val', {name, value}, true ) } ); -- not an allowed value so add error message
return ret_val;
end
end
--[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >----------------------------------------
This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space
when the last character is not a sepc character or when the last three characters are not sepc followed by two
closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a
single space character.
]]
local function terminate_name_list (name_list, sepc)
if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated
return name_list; -- just return the name list
elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char
return name_list .. " "; -- don't add another
else
return name_list .. sepc .. ' '; -- otherwise terminate the name list
end
end
--[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >----------------------------------------
returns the concatenation of the formatted volume and issue parameters as a single string; or formatted volume
or formatted issue, or an empty string if neither are set.
]]
local function format_volume_issue (volume, issue, cite_class, origin, sepc, lower)
if not utilities.is_set (volume) and not utilities.is_set (issue) then
return '';
end
if 'magazine' == cite_class or (utilities.in_array (cite_class, {'citation', 'map'}) and 'magazine' == origin) then
if utilities.is_set (volume) and utilities.is_set (issue) then
return wrap_msg ('vol-no', {sepc, volume, issue}, lower);
elseif utilities.is_set (volume) then
return wrap_msg ('vol', {sepc, volume}, lower);
else
return wrap_msg ('issue', {sepc, issue}, lower);
end
end
if 'podcast' == cite_class and utilities.is_set (issue) then
return wrap_msg ('issue', {sepc, issue}, lower);
end
local vol = ''; -- here for all cites except magazine
if utilities.is_set (volume) then
if volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$') then -- volume value is all digits or all uppercase Roman numerals
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, hyphen_to_dash(volume)}); -- render in bold face
elseif (4 < mw.ustring.len(volume)) then -- not all digits or Roman numerals and longer than 4 characters
vol = utilities.substitute (cfg.messages['j-vol'], {sepc, volume}); -- not bold
utilities.add_prop_cat ('long_vol');
else -- four or less characters
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, hyphen_to_dash(volume)}); -- bold
end
end
if utilities.is_set (issue) then
return vol .. utilities.substitute (cfg.messages['j-issue'], issue);
end
return vol;
end
--[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >-----------------------------------------
adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings.
The return order is:
page, pages, sheet, sheets
Singular has priority over plural when both are provided.
]]
local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower)
if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators
if utilities.is_set (sheet) then
if 'journal' == origin then
return '', '', wrap_msg ('j-sheet', sheet, lower), '';
else
return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), '';
end
elseif utilities.is_set (sheets) then
if 'journal' == origin then
return '', '', '', wrap_msg ('j-sheets', sheets, lower);
else
return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower);
end
end
end
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
if utilities.is_set (page) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', '';
elseif not nopp then
return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', '';
else
return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', '';
end
elseif utilities.is_set (pages) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', '';
elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number
return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', '';
elseif not nopp then
return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', '';
else
return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', '';
end
end
return '', '', '', ''; -- return empty strings
end
--[[--------------------------< I N S O U R C E _ L O C _ G E T >----------------------------------------------
returns one of the in-source locators: page, pages, or at.
If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text
for use in COinS. This COinS thing is done because here we convert an interwiki-link to and external link and
add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it?
TODO: add support for sheet and sheets?; streamline;
TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned
to a new name)?
]]
local function insource_loc_get (page, pages, at)
local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?)
if utilities.is_set (page) then
if utilities.is_set (pages) or utilities.is_set (at) then
pages = ''; -- unset the others
at = '';
end
extra_text_in_page_check (page); -- add this page to maint cat if |page= value begins with what looks like p. or pp.
ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label
if ws_url then
page = external_link (ws_url, ws_label .. ' ', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page});
coins_pages = ws_label;
end
elseif utilities.is_set (pages) then
if utilities.is_set (at) then
at = ''; -- unset
end
extra_text_in_page_check (pages); -- add this page to maint cat if |pages= value begins with what looks like p. or pp.
ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label
if ws_url then
pages = external_link (ws_url, ws_label .. ' ', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages});
coins_pages = ws_label;
end
elseif utilities.is_set (at) then
ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label
if ws_url then
at = external_link (ws_url, ws_label .. ' ', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at});
coins_pages = ws_label;
end
end
return page, pages, at, coins_pages;
end
--[=[-------------------------< A R C H I V E _ U R L _ C H E C K >--------------------------------------------
Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the
save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...)
archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow
unwitting readers to do.
When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own
algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results.
This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and
|archive-date= and an error message when:
|archive-url= holds an archive.org save command URL
|archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the
correct place
otherwise returns |archive-url= and |archive-date=
There are two mostly compatible archive.org URLs:
//web.archive.org/<timestamp>... -- the old form
//web.archive.org/web/<timestamp>... -- the new form
The old form does not support or map to the new form when it contains a display flag. There are four identified flags
('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore)
we don't check for these specific flags but we do check the form.
This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified
archive URL:
for save command errors, return undated wildcard (/*/)
for timestamp errors when the timestamp has a wildcard, return the URL unmodified
for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/)
]=]
local function archive_url_check (url, date)
local err_msg = ''; -- start with the error message empty
local path, timestamp, flag; -- portions of the archive.org URL
if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL
return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate
end
if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page
err_msg = cfg.err_msg_supl.save;
url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL
elseif url:match('//liveweb%.archive%.org/') then
err_msg = cfg.err_msg_supl.liveweb;
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation
if not utilities.is_set (timestamp) or 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
err_msg = cfg.err_msg_supl.timestamp;
if '*' ~= flag then
url=url:gsub ('(//web%.archive%.org/[^%d]*%d?%d?%d?%d?%d?%d?)[^/]*', '%1*', 1) -- for preview, modify ts to be yearmo* max (0-6 digits plus splat)
end
elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element
err_msg = cfg.err_msg_supl.path;
elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
else
return url, date; -- return ArchiveURL and ArchiveDate
end
end
-- if here, something not right so
table.insert( z.message_tail, { utilities.set_message ( 'err_archive_url', {err_msg}, true ) } ); -- add error message and
if utilities.is_set (Frame:preprocess('{{REVISIONID}}')) then
return '', ''; -- return empty strings for ArchiveURL and ArchiveDate
else
return url, date; -- preview mode so return ArchiveURL and ArchiveDate
end
end
--[[--------------------------< P L A C E _ C H E C K >--------------------------------------------------------
check |place=, |publication-place=, |location= to see if these params include digits. This function added because
many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that)
returns the original parameter value without modification; added maint cat when parameter value contains digits
]]
local function place_check (param_val)
if not utilities.is_set (param_val) then -- parameter empty or omitted
return param_val; -- return that empty state
end
if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value
utilities.set_message ('maint_location'); -- yep, add maint cat
end
return param_val; -- and done
end
--[[--------------------------< I S _ G E N E R I C _ T I T L E >----------------------------------------------
compares |title= value against list of known generic title patterns. Returns true when pattern matches; nil else
the k/v pairs in 'generic_titles' each contain two tables, one for English and one for another 'local' language
Each of those tables contain another table that holds the string or pattern (whole title or title fragment) in
index [1]. index [2] is a Boolean that tells string.find() or mw.ustring.find() to do plain-text search (true)
or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so
that we don't run out of processing time on very large articles.
]]
local function is_generic_title (title)
title = mw.ustring.lower(title); -- switch title to lower case
for _, generic_title in ipairs (cfg.special_case_translation['generic_titles']) do --spin through the list of known generic title fragments
if title:find (generic_title['en'][1], 1, generic_title['en'][2]) then
return true; -- found English generic title so done
elseif generic_title['local'] then -- to keep work load down, generic_title['local'] should be nil except when there is a local version of the generic title
if mw.ustring.find (title, generic_title['local'][1], 1, generic_title['local'][2]) then -- mw.ustring() because might not be Latin script
return true; -- found local generic title so done
end
end
end
end
--[[--------------------------< I S _ A R C H I V E D _ C O P Y >----------------------------------------------
compares |title= to 'Archived copy' (place holder added by bots that can't find proper title); if matches, return true; nil else
]]
local function is_archived_copy (title)
title = mw.ustring.lower(title); -- switch title to lower case
if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy'
return true;
elseif cfg.special_case_translation.archived_copy['local'] then
if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script
return true;
end
end
end
--[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------
This is the main function doing the majority of the citation formatting.
]]
local function citation0( config, args)
--[[
Load Input Parameters
The argument_wrapper facilitates the mapping of multiple aliases to single internal variable.
]]
local A = argument_wrapper ( args );
local i
-- Pick out the relevant fields from the arguments. Different citation templates
-- define different field names for the same underlying things.
local Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], '');
local author_etal;
local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors=
local Authors;
local NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], '');
local Collaboration = A['Collaboration'];
do -- to limit scope of selected
local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList');
if 1 == selected then
a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
a, author_etal = parse_vauthors_veditors (args, args.vauthors, 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn=
elseif 3 == selected then
Authors = A['Authors']; -- use content of |authors=
if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors=
utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO:
end
end
if utilities.is_set (Collaboration) then
author_etal = true; -- so that |display-authors=etal not required
end
end
local Others = A['Others'];
local editor_etal;
local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors=
local Editors;
do -- to limit scope of selected
local selected = select_author_editor_source (A['Veditors'], A['Editors'], args, 'EditorList');
if 1 == selected then
e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=
elseif 3 == selected then
Editors = A['Editors']; -- use content of |editors=
end
end
local translator_etal;
local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs
local Translators; -- assembled translators name list
t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn=
local interviewer_etal;
local interviewers_list = {};
local Interviewers; -- used later
interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters
local contributor_etal;
local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs
local Contributors; -- assembled contributors name list
local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases
local Chapter_origin = A:ORIGIN ('Chapter');
local Contribution; -- because contribution is required for contributor(s)
if 'contribution' == A:ORIGIN ('Chapter') then
Contribution = A['Chapter']; -- get the name of the contribution
end
if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites
c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=
if 0 < #c then
if not utilities.is_set (Contribution) then -- |contributor= requires |contribution=
table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_missing_required_param', 'contribution')}); -- add missing contribution error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
if 0 == #a then -- |contributor= requires |author=
table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_missing_required_param', 'author')}); -- add missing author error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
end
else -- if not a book cite
if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters?
table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_ignored')}); -- add contributor ignored error message
end
Contribution = nil; -- unset
end
if utilities.is_set (Others) then
if 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor=
utilities.set_message ('maint_others');
end
end
local Year = A['Year'];
local PublicationDate = A['PublicationDate'];
local OrigDate = A['OrigDate'];
local Date = A['Date'];
local LayDate = A['LayDate'];
------------------------------------------------- Get title data
local Title = A['Title'];
local ScriptTitle = A['ScriptTitle'];
local BookTitle = A['BookTitle'];
local Conference = A['Conference'];
local TransTitle = A['TransTitle'];
local TransTitle_origin = A:ORIGIN ('TransTitle');
local TitleNote = A['TitleNote'];
local TitleLink = A['TitleLink'];
local auto_select = ''; -- default is auto
local accept_link;
TitleLink, accept_link = utilities.has_accept_as_written(TitleLink, true); -- test for accept-this-as-written markup
if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords
auto_select = TitleLink; -- remember selection for later
TitleLink = ''; -- treat as if |title-link= would have been empty
end
TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set
local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used
if 'map' == config.CitationClass and 'section' == A:ORIGIN ('Chapter') then
Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}}
Chapter = ''; -- unset for now; will be reset later from |map= if present
end
local ScriptChapter = A['ScriptChapter'];
local ScriptChapter_origin = A:ORIGIN ('ScriptChapter');
local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode
local TransChapter = A['TransChapter'];
local TransChapter_origin = A:ORIGIN ('TransChapter');
local TitleType = A['TitleType'];
local Degree = A['Degree'];
local Docket = A['Docket'];
local ArchiveFormat = A['ArchiveFormat'];
local ArchiveDate;
local ArchiveURL;
ArchiveURL, ArchiveDate = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], '');
local URL = A['URL']
local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL
local ChapterURL = A['ChapterURL'];
local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL
local ConferenceFormat = A['ConferenceFormat'];
local ConferenceURL = A['ConferenceURL'];
local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
local Periodical = A['Periodical'];
local Periodical_origin = '';
if utilities.is_set (Periodical) then
Periodical_origin = A:ORIGIN('Periodical'); -- get the name of the periodical parameter
local i;
Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated
if i then -- non-zero when markup was stripped so emit an error message
table.insert( z.message_tail, {utilities.set_message ('err_apostrophe_markup', {Periodical_origin}, true)});
end
end
if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}}
if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error
table.insert( z.message_tail, {utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. ' and ' .. utilities.wrap_style ('parameter', 'mailinglist')}, true )});
end
Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}}
Periodical_origin = A:ORIGIN('MailingList');
end
local ScriptPeriodical = A['ScriptPeriodical'];
local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
-- web and news not tested for now because of
-- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors?
if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter
-- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message
local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message
if p[config.CitationClass] then
table.insert( z.message_tail, {utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]}, true)});
end
end
local TransPeriodical = A['TransPeriodical'];
local TransPeriodical_origin = A:ORIGIN ('TransPeriodical');
local Series = A['Series'];
local Volume;
local Issue;
local Page;
local Pages;
local At;
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) then
if not utilities.in_array (Periodical_origin, {'website', 'mailinglist'}) then -- {{citation}} does not render volume for these 'periodicals'
Volume = A['Volume']; -- but does for all other 'periodicals'
end
elseif utilities.is_set (ScriptPeriodical) then
if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website=
Volume = A['Volume']; -- but does for all other 'periodicals'
end
else
Volume = A['Volume']; -- and does for non-'periodical' cites
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings
Volume = A['Volume'];
end
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, {'journal', 'magazine', 'newspaper', 'periodical', 'work'}) or -- {{citation}} renders issue for these 'periodicals'
utilities.is_set (ScriptPeriodical) and utilities.in_array (ScriptPeriodical_origin, {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work'}) then -- and these 'script-periodicals'
Issue = hyphen_to_dash (A['Issue']);
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table
if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then
Issue = hyphen_to_dash (A['Issue']);
end
end
local Position = '';
if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then
Page = A['Page'];
Pages = hyphen_to_dash (A['Pages']);
At = A['At'];
end
local Edition = A['Edition'];
local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace'));
local Place = place_check (A['Place'], A:ORIGIN('Place'));
local PublisherName = A['PublisherName'];
local PublisherName_origin = A:ORIGIN('PublisherName');
if utilities.is_set (PublisherName) then
local i = 0;
PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized
if i then -- non-zero when markup was stripped so emit an error message
table.insert( z.message_tail, {utilities.set_message ('err_apostrophe_markup', {PublisherName_origin}, true)});
end
end
local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup?
local Newsgroup_origin = A:ORIGIN('Newsgroup');
if 'newsgroup' == config.CitationClass then
if utilities.is_set (PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup
local error_text, error_state = utilities.set_message ('err_parameter_ignored', {PublisherName_origin}, true);
if utilities.is_set (error_text) then
table.insert( z.message_tail, {error_text, error_state} );
end
end
PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS
end
local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then
UrlAccess = nil;
table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {'url'}, true ) } );
end
local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then
ChapterUrlAccess = nil;
table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')}, true ) } );
end
local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then
MapUrlAccess = nil;
table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {'map-url'}, true ) } );
end
local Via = A['Via'];
local AccessDate = A['AccessDate'];
local Agency = A['Agency'];
local Language = A['Language'];
local Format = A['Format'];
local ChapterFormat = A['ChapterFormat'];
local DoiBroken = A['DoiBroken'];
local ID = A['ID'];
local ASINTLD = A['ASINTLD'];
local IgnoreISBN = is_valid_parameter_value (A['IgnoreISBN'], A:ORIGIN('IgnoreISBN'), cfg.keywords_lists['yes_true_y'], nil);
local Embargo = A['Embargo'];
local Class = A['Class']; -- arxiv class identifier
local Quote = A['Quote'];
local QuotePage = A['QuotePage'];
local QuotePages = A['QuotePages'];
local ScriptQuote = A['ScriptQuote'];
local TransQuote = A['TransQuote'];
local LayFormat = A['LayFormat'];
local LayURL = A['LayURL'];
local LaySource = A['LaySource'];
local Transcript = A['Transcript'];
local TranscriptFormat = A['TranscriptFormat'];
local TranscriptURL = A['TranscriptURL']
local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
local LastAuthorAmp = is_valid_parameter_value (A['LastAuthorAmp'], A:ORIGIN('LastAuthorAmp'), cfg.keywords_lists['yes_true_y'], nil);
local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil);
if 'nocat' == A:ORIGIN('NoTracking') then
utilities.set_message ('maint_nocat'); -- this one so that we get the message; see main categorization at end of citation0()
end
--local variables that are not cs1 parameters
local use_lowercase; -- controls capitalization of certain static text
local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language
local anchor_year; -- used in the CITEREF identifier
local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification
local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], '');
if not utilities.is_set (DF) then
DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template
end
local sepc; -- separator between citation elements for CS1 a period, for CS2, a comma
local PostScript;
local Ref = A['Ref'];
if 'harv' == Ref then
utilities.set_message ('maint_ref_harv'); -- add maint cat to identify templates that have this now-extraneous param value
elseif not utilities.is_set (Ref) then
Ref = 'harv'; -- set as default when not set externally
end
sepc, PostScript, Ref = set_style (Mode:lower(), A['PostScript'], Ref, config.CitationClass);
use_lowercase = ( sepc == ',' ); -- used to control capitalization for certain static text
-- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories
if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page
if utilities.in_array (this_page.nsText, cfg.uncategorized_namespaces) then
no_tracking_cats = "true"; -- set no_tracking_cats
end
for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
no_tracking_cats = "true"; -- set no_tracking_cats
break; -- bail out if one is found
end
end
end
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it)
utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category
local coins_pages;
Page, Pages, At, coins_pages = insource_loc_get (Page, Pages, At);
local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil);
if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different
utilities.add_prop_cat ('location test'); -- add property cat to evaluate how often PublicationPlace and Place are used together
if PublicationPlace == Place then
Place = ''; -- unset; don't need both if they are the same
end
elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ...
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
--[[
Parameter remapping for cite encyclopedia:
When the citation has these parameters:
|encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title=
|encyclopedia= and |article= then map |encyclopedia= to |title=
|trans-title= maps to |trans-chapter= when |title= is re-mapped
|url= maps to |chapter-url= when |title= is remapped
All other combinations of |encyclopedia=, |title=, and |article= are not modified
]]
local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS
if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}}
if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then
table.insert (z.message_tail, {utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')}, true)});
Encyclopedia = nil; -- unset because not supported by this template
end
end
if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both set emit an error
table.insert (z.message_tail, {utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', A:ORIGIN ('Encyclopedia')) .. ' and ' .. utilities.wrap_style ('parameter', Periodical_origin)}, true )});
end
if utilities.is_set (Encyclopedia) then
Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia; allow periodical without encyclopedia
Periodical_origin = A:ORIGIN ('Encyclopedia');
end
if utilities.is_set (Periodical) then -- Periodical is set when |encyclopedia= is set
if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then
if not utilities.is_set (Chapter) then
Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title=
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle')
TransChapter = TransTitle;
ChapterURL = URL;
ChapterURL_origin = A:ORIGIN('URL')
ChapterUrlAccess = UrlAccess;
if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then
Chapter = utilities.make_wikilink (TitleLink, Chapter);
end
Title = Periodical;
ChapterFormat = Format;
Periodical = ''; -- redundant so unset
TransTitle = '';
URL = '';
Format = '';
TitleLink = '';
ScriptTitle = '';
end
elseif utilities.is_set (Chapter) then -- |title= not set
Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title=
Periodical = ''; -- redundant so unset
end
end
end
-- special case for cite techreport.
if (config.CitationClass == "techreport") then -- special case for cite techreport
if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue'
if not utilities.is_set (ID) then -- can we use ID for the "number"?
ID = A['Number']; -- yes, use it
else -- ID has a value so emit error message
table.insert( z.message_tail, { utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. ' and ' .. utilities.wrap_style ('parameter', 'number')}, true )});
end
end
end
-- Account for the oddity that is {{cite conference}}, before generation of COinS data.
if 'conference' == config.CitationClass then
if utilities.is_set (BookTitle) then
Chapter = Title;
Chapter_origin = 'title';
-- ChapterLink = TitleLink; -- |chapter-link= is deprecated
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
URL_origin = '';
ChapterFormat = Format;
TransChapter = TransTitle;
TransChapter_origin = TransTitle_origin;
Title = BookTitle;
Format = '';
-- TitleLink = '';
TransTitle = '';
URL = '';
end
elseif 'speech' ~= config.CitationClass then
Conference = ''; -- not cite conference or cite speech so make sure this is empty string
end
-- cite map oddities
local Cartography = "";
local Scale = "";
local Sheet = A['Sheet'] or '';
local Sheets = A['Sheets'] or '';
if config.CitationClass == "map" then
if utilities.is_set (Chapter) then
table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. ' and ' .. utilities.wrap_style ('parameter', Chapter_origin)}, true ) } ); -- add error message
end
Chapter = A['Map'];
Chapter_origin = A:ORIGIN('Map');
ChapterURL = A['MapURL'];
ChapterURL_origin = A:ORIGIN('MapURL');
TransChapter = A['TransMap'];
ScriptChapter = A['ScriptMap']
ScriptChapter_origin = A:ORIGIN('ScriptMap')
ChapterUrlAccess = MapUrlAccess;
ChapterFormat = A['MapFormat'];
Cartography = A['Cartography'];
if utilities.is_set ( Cartography ) then
Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase);
end
Scale = A['Scale'];
if utilities.is_set ( Scale ) then
Scale = sepc .. " " .. Scale;
end
end
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.
if 'episode' == config.CitationClass or 'serial' == config.CitationClass then
local SeriesLink = A['SeriesLink'];
SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set
local Network = A['Network'];
local Station = A['Station'];
local s, n = {}, {};
-- do common parameters first
if utilities.is_set (Network) then table.insert(n, Network); end
if utilities.is_set (Station) then table.insert(n, Station); end
ID = table.concat(n, sepc .. ' ');
if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}}
local Season = A['Season'];
local SeriesNumber = A['SeriesNumber'];
if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set
table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. ' and ' .. utilities.wrap_style ('parameter', 'seriesno')}, true ) } ); -- add error message
SeriesNumber = ''; -- unset; prefer |season= over |seriesno=
end
-- assemble a table of parts concatenated later into Series
if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end
if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end
if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end
Issue = ''; -- unset because this is not a unique parameter
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle');
ChapterLink = TitleLink; -- alias |episode-link=
TransChapter = TransTitle;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = A:ORIGIN('URL');
Title = Series; -- promote series to title
TitleLink = SeriesLink;
Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number
if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL
Chapter = utilities.make_wikilink (ChapterLink, Chapter);
elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode;
Series = utilities.make_wikilink (ChapterLink, Series);
end
URL = ''; -- unset
TransTitle = '';
ScriptTitle = '';
else -- now oddities that are cite serial
Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial
Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday?
if utilities.is_set (Series) and utilities.is_set (SeriesLink) then
Series = utilities.make_wikilink (SeriesLink, Series);
end
Series = utilities.wrap_style ('italic-title', Series); -- series is italicized
end
end
-- end of {{cite episode}} stuff
-- handle type parameter for those CS1 citations that have default values
if utilities.in_array (config.CitationClass, {"AV-media-notes", "interview", "mailinglist", "map", "podcast", "pressrelease", "report", "techreport", "thesis"}) then
TitleType = set_titletype (config.CitationClass, TitleType);
if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis
TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower();
end
end
if utilities.is_set (TitleType) then -- if type parameter is specified
TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses
-- TODO: Hack on TitleType to fix bunched parentheses problem
end
-- legacy: promote PublicationDate to Date if neither Date nor Year are set.
local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging
if not utilities.is_set (Date) then
Date = Year; -- promote Year to Date
Year = nil; -- make nil so Year as empty string isn't used for CITEREF
if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set
Date = PublicationDate; -- promote PublicationDate to Date
PublicationDate = ''; -- unset, no longer needed
Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter
else
Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter
end
else
Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging
end
if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation
--[[
Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where
we get the date used in the metadata.
Date validation supporting code is in Module:Citation/CS1/Date_validation
]]
do -- create defined block to contain local variables error_message, date_parameters_list, mismatch
local error_message = '';
-- AirDate has been promoted to Date so not necessary to check it
local date_parameters_list = {
['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')},
['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')},
['date'] = {val = Date, name = Date_origin},
['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')},
['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')},
['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')},
['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')},
['year'] = {val = Year, name = A:ORIGIN ('Year')},
};
local error_list = {};
anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list);
-- start temporary Julian / Gregorian calendar uncertainty categorization
if COinS_date.inter_cal_cat then
utilities.add_prop_cat ('jul_greg_uncertainty');
end
-- end temporary Julian / Gregorian calendar uncertainty categorization
if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed;
local mismatch = validation.year_date_check (Year, Date);
if 0 == mismatch then -- |year= does not match a year-value in |date=
table.insert (error_list, '<code class="cs1-code">|year= / |date= mismatch</code>');
elseif 1 == mismatch then -- |year= matches year-value in |date=
utilities.set_message ('maint_date_year'); -- add a maint cat
end
end
if 0 == #error_list then -- error free dates only; 0 when error_list is empty
local modified = false; -- flag
if utilities.is_set (DF) then -- if we need to reformat dates
modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate
end
if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate
modified = true;
utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category
end
-- for those wikis that can and want to have English date names translated to the local language,
-- uncomment the next three lines. Not supported by en.wiki (for obvious reasons)
-- set validation.date_name_xlate() second argument to true to translate English digits to local digits (will translate ymd dates)
-- if validation.date_name_xlate (date_parameters_list, false) then
-- modified = true;
-- end
if modified then -- if the date_parameters_list values were modified
AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values
ArchiveDate = date_parameters_list['archive-date'].val;
Date = date_parameters_list['date'].val;
DoiBroken = date_parameters_list['doi-broken-date'].val;
LayDate = date_parameters_list['lay-date'].val;
PublicationDate = date_parameters_list['publication-date'].val;
end
else
table.insert (z.message_tail, {utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}, true)}); -- add this error message
end
end -- end of do
local ID_list_coins = identifiers.extract_ids (args); -- gets identifiers and their values from args; this list used for COinS and source for build_id_list()
if utilities.is_set (DoiBroken) and not ID_list_coins['DOI'] then
table.insert (z.message_tail, {utilities.set_message ('err_doibroken_missing_doi', A:ORIGIN('DoiBroken'))});
end
local ID_access_levels = identifiers.extract_id_access_levels (args, ID_list_coins);
local ID_list = identifiers.build_id_list (ID_list_coins, {IdAccessLevels = ID_access_levels, DoiBroken = DoiBroken, ASINTLD = ASINTLD, IgnoreISBN = IgnoreISBN, Embargo = Embargo, Class = Class}); -- render identifiers
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite ssrn}}, before generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list) then
if not utilities.is_set (ID_list_coins[config.CitationClass:upper()]) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv= & |citeseerx= required for their templates
table.insert (z.message_tail, {utilities.set_message ('err_' .. config.CitationClass .. '_missing', {}, true)}); -- add error message
end
Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass];
end
-- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free
if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead
if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled
if identifiers.auto_link_urls[auto_select] then -- manual selection
URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link
URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC
URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed
URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI
URL = identifiers.auto_link_urls['doi'];
URL_origin = cfg.id_handlers['DOI'].parameters[1];
end
end
if utilities.is_set (URL) and utilities.is_set (AccessDate) then -- access date requires |url=; identifier-created URL is not |url=
table.insert( z.message_tail, { utilities.set_message ( 'err_accessdate_missing_url', {}, true ) } ); -- add an error message
AccessDate = ''; -- unset
end
end
-- At this point fields may be nil if they weren't specified in the template use. We can use that fact.
-- Test if citation has no title
if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode
table.insert( z.message_tail, { utilities.set_message ( 'err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'}, true ) } );
end
if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and
utilities.in_array (config.CitationClass, {'journal', 'citation'}) and
(utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and
('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites
Title = ''; -- set title to empty string
utilities.set_message ('maint_untitled'); -- add maint cat
end
check_for_url ({ -- add error message when any of these parameters hold a URL
['title']=Title,
[A:ORIGIN('Chapter')]=Chapter,
[Periodical_origin] = Periodical,
[PublisherName_origin] = PublisherName
});
-- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information.
-- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that
-- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title
-- is the article title, and Chapter is a section within the article. So, we remap
local coins_chapter = Chapter; -- default assuming that remapping not required
local coins_title = Title; -- et tu
if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then
coins_chapter = Title; -- remap
coins_title = Periodical;
end
end
local coins_author = a; -- default for coins rft.au
if 0 < #c then -- but if contributor list
coins_author = c; -- use that instead
end
-- this is the function call to COinS()
local OCinSoutput = metadata.COinS({
['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata
['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS
['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic wiki-markup
['Degree'] = Degree; -- cite thesis only
['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic wiki-markup
['PublicationPlace'] = PublicationPlace,
['Date'] = COinS_date.rftdate, -- COinS_date has correctly formatted date if Date is valid;
['Season'] = COinS_date.rftssn,
['Quarter'] = COinS_date.rftquarter,
['Chron'] = COinS_date.rftchron or (not COinS_date.rftdate and Date) or '', -- chron but if not set and invalid date format use Date; keep this last bit?
['Series'] = Series,
['Volume'] = Volume,
['Issue'] = Issue,
['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At}, 5)), -- pages stripped of external links
['Edition'] = Edition,
['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
['ID_list'] = ID_list_coins,
['RawPage'] = this_page.prefixedText,
}, config.CitationClass);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, and {{cite ssrn}} AFTER generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, or ssrn now unset so it isn't displayed
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
-- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text
if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then
PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil ));
end
-- Now perform various field substitutions.
-- We also add leading spaces and surrounding markup and punctuation to the
-- various parts of the citation, but only when they are non-nil.
local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list
do
local last_first_list;
local control = {
format = NameListStyle, -- empty string or 'vanc'
maximum = nil, -- as if display-authors or display-editors not set
lastauthoramp = LastAuthorAmp,
mode = Mode
};
do -- do editor name list first because the now unsupported coauthors used to modify control table
control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal);
last_first_list, EditorCount = list_people(control, e, editor_etal);
if utilities.is_set (Editors) then
Editors, editor_etal = name_has_etal (Editors, editor_etal, false, 'editors'); -- find and remove variations on et al.
if editor_etal then
Editors = Editors .. ' ' .. cfg.messages['et al']; -- add et al. to editors parameter beause |display-editors=etal
end
EditorCount = 2; -- we don't know but assume |editors= is multiple names; spoof to display (eds.) annotation
else
Editors = last_first_list; -- either an author name list or an empty string
end
if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then
EditorCount = 2; -- spoof to display (eds.) annotation
end
end
do -- now do interviewers
control.maximum , interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal);
Interviewers = list_people (control, interviewers_list, interviewer_etal);
end
do -- now do translators
control.maximum , translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal);
Translators = list_people (control, t, translator_etal);
end
do -- now do contributors
control.maximum , contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal);
Contributors = list_people (control, c, contributor_etal);
end
do -- now do authors
control.maximum , author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal);
last_first_list = list_people(control, a, author_etal);
if utilities.is_set (Authors) then
Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al.
if author_etal then
Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter
end
else
Authors = last_first_list; -- either an author name list or an empty string
end
end -- end of do
if utilities.is_set (Authors) and utilities.is_set (Collaboration) then
Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al.
end
end
-- apply |[xx-]format= styling; at the end, these parameters hold correctly styled format annotation,
-- an error message if the associated URL is not set, or an empty string for concatenation
ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url');
ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url');
Format = style_format (Format, URL, 'format', 'url');
LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url');
TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl');
-- special case for chapter format so no error message or cat when chapter not supported
if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then
ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url');
end
if not utilities.is_set (URL) then
if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist
('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website=
table.insert( z.message_tail, { utilities.set_message ( 'err_cite_web_url', {}, true ) } );
end
-- do we have |accessdate= without either |url= or |chapter-url=?
if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set;
table.insert( z.message_tail, { utilities.set_message ( 'err_accessdate_missing_url', {}, true ) } );
AccessDate = '';
end
end
local OriginalURL, OriginalURL_origin, OriginalFormat, OriginalAccess;
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if utilities.is_set ( ArchiveURL ) then
if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it
OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text
OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages
OriginalFormat = ChapterFormat; -- and original |chapter-format=
if 'live' ~= UrlStatus then
ChapterURL = ArchiveURL -- swap-in the archive's URL
ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages
ChapterFormat = ArchiveFormat or ''; -- swap in archive's format
ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
elseif utilities.is_set (URL) then
OriginalURL = URL; -- save copy of original source URL
OriginalURL_origin = URL_origin; -- name of URL parameter for error messages
OriginalFormat = Format; -- and original |format=
OriginalAccess = UrlAccess;
if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it
URL = ArchiveURL -- swap-in the archive's URL
URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages
Format = ArchiveFormat or ''; -- swap in archive's format
UrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
end
end
if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then
local chap_param;
if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters
chap_param = A:ORIGIN ('Chapter')
elseif utilities.is_set (TransChapter) then
chap_param = A:ORIGIN ('TransChapter')
elseif utilities.is_set (ChapterURL) then
chap_param = A:ORIGIN ('ChapterURL')
elseif utilities.is_set (ScriptChapter) then
chap_param = ScriptChapter_origin;
else utilities.is_set (ChapterFormat)
chap_param = A:ORIGIN ('ChapterFormat')
end
if utilities.is_set (chap_param) then -- if we found one
table.insert( z.message_tail, { utilities.set_message ( 'err_chapter_ignored', {chap_param}, true ) } ); -- add error message
Chapter = ''; -- and set them to empty string to be safe with concatenation
TransChapter = '';
ChapterURL = '';
ScriptChapter = '';
ChapterFormat = '';
end
else -- otherwise, format chapter / article title
local no_quotes = false; -- default assume that we will be quoting the chapter parameter value
if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s)
if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title
no_quotes = true; -- then render it unquoted
end
end
Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter
if utilities.is_set (Chapter) then
Chapter = Chapter .. ChapterFormat ;
if 'map' == config.CitationClass and utilities.is_set (TitleType) then
Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title
end
Chapter = Chapter .. sepc .. ' ';
elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ...
Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it
end
end
-- Format main title
local plain_title = false;
local accept_title;
Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title>
if accept_title and ('' == Title) then -- only support forced empty for now "(())"
Title = cfg.messages['notitle']; -- replace by predefined "No title" message
-- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting
ScriptTitle = ''; -- just mute for now
TransTitle = ''; -- just mute for now
plain_title = true; -- suppress text decoration for descriptive title
utilities.set_message ('maint_untitled'); -- add maint cat
end
if not accept_title then -- <Title> not wrapped in accept-as-written markup
if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title=
Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three
elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ...
not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.)
Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters
end
if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then
utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title
end
if is_generic_title (Title) then
table.insert (z.message_tail, {utilities.set_message ( 'err_generic_title', {}, true ) } ); -- set an error message
end
end
if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or
('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article
Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks
Title = utilities.wrap_style ('quoted-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle );
elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above)
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title
else
Title = utilities.wrap_style ('italic-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle);
end
local TransError = "";
if utilities.is_set (TransTitle) then
if utilities.is_set (Title) then
TransTitle = " " .. TransTitle;
else
TransError = " " .. utilities.set_message ( 'err_trans_missing_title', {'title'} );
end
end
if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs?
if utilities.is_set (TitleLink) and utilities.is_set (URL) then
table.insert( z.message_tail, { utilities.set_message ( 'err_wikilink_in_url', {}, true ) } ); -- set an error message because we can't have both
TitleLink = ''; -- unset
end
if not utilities.is_set (TitleLink) and utilities.is_set (URL) then
Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. TransError .. Format;
URL = ''; -- unset these because no longer needed
Format = "";
elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then
local ws_url;
ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here
if ws_url then
Title = external_link (ws_url, Title .. ' ', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title});
Title = Title .. TransTitle .. TransError;
else
Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle .. TransError;
end
else
local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink)
ws_url, ws_label, L = wikisource_url_make (Title:gsub('[\'"](.-)[\'"]', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Title = external_link (ws_url, Title .. ' ', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title});
Title = Title .. TransTitle .. TransError;
else
Title = Title .. TransTitle .. TransError;
end
end
else
Title = TransTitle .. TransError;
end
if utilities.is_set (Place) then
Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " ";
end
if utilities.is_set (Conference) then
if utilities.is_set (ConferenceURL) then
Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil );
end
Conference = sepc .. " " .. Conference .. ConferenceFormat;
elseif utilities.is_set (ConferenceURL) then
Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil );
end
if not utilities.is_set (Position) then
local Minutes = A['Minutes'];
local Time = A['Time'];
if utilities.is_set (Minutes) then
if utilities.is_set (Time) then
table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. ' and ' .. utilities.wrap_style ('parameter', 'time')}, true ) } );
end
Position = " " .. Minutes .. " " .. cfg.messages['minutes'];
else
if utilities.is_set (Time) then
local TimeCaption = A['TimeCaption']
if not utilities.is_set (TimeCaption) then
TimeCaption = cfg.messages['event'];
if sepc ~= '.' then
TimeCaption = TimeCaption:lower();
end
end
Position = " " .. TimeCaption .. " " .. Time;
end
end
else
Position = " " .. Position;
At = '';
end
Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase);
At = utilities.is_set (At) and (sepc .. " " .. At) or "";
Position = utilities.is_set (Position) and (sepc .. " " .. Position) or "";
if config.CitationClass == 'map' then
local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier
local Inset = A['Inset'];
if utilities.is_set ( Inset ) then
Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase);
end
if utilities.is_set ( Sections ) then
Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase);
elseif utilities.is_set ( Section ) then
Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase);
end
At = At .. Inset .. Section;
end
if utilities.is_set (Language) then
Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc.
else
Language=""; -- language not specified so make sure this is an empty string;
--[[ TODO: need to extract the wrap_msg from language_parameter
so that we can solve parentheses bunching problem with Format/Language/TitleType
]]
end
Others = utilities.is_set (Others) and (sepc .. " " .. Others) or "";
if utilities.is_set (Translators) then
Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc);
end
if utilities.is_set (Interviewers) then
Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc);
end
TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or "";
if utilities.is_set (Edition) then
if Edition:match ('%f[%a][Ee]d%.?$') or Edition:match ('%f[%a][Ee]dition$') then
utilities.set_message ('maint_extra_text', 'edition'); -- add maint cat
end
Edition = " " .. wrap_msg ('edition', Edition);
else
Edition = '';
end
Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum
OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or '';
Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or "";
Volume = format_volume_issue (Volume, Issue, config.CitationClass, Periodical_origin, sepc, use_lowercase);
------------------------------------ totally unrelated data
Via = utilities.is_set (Via) and wrap_msg ('via', Via) or '';
if utilities.is_set (AccessDate) then
local retrv_text = " " .. cfg.messages['retrieved']
AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format
if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case
AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text
AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates
end
if utilities.is_set (ID) then ID = sepc .. " " .. ID; end
if "thesis" == config.CitationClass and utilities.is_set (Docket) then
ID = sepc .. " Docket " .. Docket .. ID;
end
if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set
ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set
end
if utilities.is_set (URL) then
URL = " " .. external_link( URL, nil, URL_origin, UrlAccess );
end
if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then
if utilities.is_set (Quote) then
if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks
Quote = Quote:sub(2, -2); -- strip them off
end
end
Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags
if utilities.is_set (ScriptQuote) then
Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped
end
if utilities.is_set (TransQuote) then
if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks
TransQuote = TransQuote:sub(2, -2); -- strip them off
end
Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote );
end
if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix
local quote_prefix = '';
if utilities.is_set (QuotePage) then
if not NoPP then
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', '';
end
elseif utilities.is_set (QuotePages) then
if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', '';
elseif not NoPP then
quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', '';
end
end
Quote = quote_prefix .. ": " .. Quote;
else
Quote = sepc .. " " .. Quote;
end
PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set
end
local Archived
if utilities.is_set (ArchiveURL) then
local arch_text;
if not utilities.is_set (ArchiveDate) then
ArchiveDate = utilities.set_message ('err_archive_missing_date');
end
if "live" == UrlStatus then
arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. utilities.substitute ( cfg.messages['archived-live'],
{ external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil ) .. ArchiveFormat, ArchiveDate } );
if not utilities.is_set (OriginalURL) then
Archived = Archived .. " " .. utilities.set_message ('err_archive_missing_url');
end
elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown'
if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then
arch_text = cfg.messages['archived-unfit'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. arch_text .. ArchiveDate; -- format already styled
if 'bot: unknown' == UrlStatus then
utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added
else
utilities.set_message ('maint_unfit'); -- and add a category if not already added
end
else -- UrlStatus is empty, 'dead'
arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. utilities.substitute ( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
end
else -- OriginalUrl not set
arch_text = cfg.messages['archived-missing'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. " " .. utilities.substitute ( arch_text,
{ utilities.set_message ('err_archive_missing_url'), ArchiveDate } );
end
elseif utilities.is_set (ArchiveFormat) then
Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message
else
Archived = ""
end
local Lay = '';
if utilities.is_set (LayURL) then
if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end
if utilities.is_set (LaySource) then
LaySource = " – ''" .. utilities.safe_for_italics (LaySource) .. "''";
else
LaySource = "";
end
if sepc == '.' then
Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
else
Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
end
elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url=
Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message
end
if utilities.is_set (Transcript) then
if utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil );
end
Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat;
elseif utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil );
end
local Publisher;
if utilities.is_set (PublicationDate) then
PublicationDate = wrap_msg ('published', PublicationDate);
end
if utilities.is_set (PublisherName) then
if utilities.is_set (PublicationPlace) then
Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate;
else
Publisher = sepc .. " " .. PublisherName .. PublicationDate;
end
elseif utilities.is_set (PublicationPlace) then
Publisher= sepc .. " " .. PublicationPlace .. PublicationDate;
else
Publisher = PublicationDate;
end
-- Several of the above rely upon detecting this as nil, so do it last.
if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then
if utilities.is_set (Title) or utilities.is_set (TitleNote) then
Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
else
Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
end
end
--[[
Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).
]]
if "speech" == config.CitationClass then -- cite speech only
TitleNote = " (Speech)"; -- annotate the citation
if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter
if utilities.is_set (Conference) then -- and if |event= is set
Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering
end
end
end
-- Piece all bits together at last. Here, all should be non-nil.
-- We build things this way because it is more efficient in LUA
-- not to keep reassigning to the same string variable over and over.
local tcommon;
local tcommon2; -- used for book cite when |contributor= is set
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here?
tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc );
elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites
if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc.
tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2
tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
else
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
end
elseif 'map' == config.CitationClass then -- special cases for cite map
if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter
tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
elseif utilities.is_set (Periodical) then -- map in a periodical
tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
else -- a sheet or stand-alone map
tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc );
end
elseif 'episode' == config.CitationClass then -- special case for cite episode
tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc );
else -- all other CS1 templates
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language,
Volume, Others, Edition, Publisher, Agency}, sepc );
end
if #ID_list > 0 then
ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc );
else
ID_list = ID;
end
local idcommon;
if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript
idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc );
else
idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc );
end
local text;
local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At;
if utilities.is_set (Date) then
if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set
Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses
else -- neither of authors and editors set
if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc
Date = " " .. Date .. OrigDate; -- Date does not begin with sepc
else
Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc
end
end
end
if utilities.is_set (Authors) then
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination
Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Editors) then
local in_text = " ";
local post_text = "";
if utilities.is_set (Chapter) and 0 == #c then
in_text = in_text .. cfg.messages['in'] .. " "
if (sepc ~= '.') then
in_text = in_text:lower() -- lowercase for cs2
end
end
if EditorCount <= 1 then
post_text = " (" .. cfg.messages['editor'] .. ")"; -- be consistent with no-author, no-date case
else
post_text = " (" .. cfg.messages['editors'] .. ")";
end
Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc.
local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' ';
if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2
Authors = by_text .. Authors; -- author follows title so tweak it here
if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated
Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space
end
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination
Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space
end
text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc );
else
text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc );
end
elseif utilities.is_set (Editors) then
if utilities.is_set (Date) then
if EditorCount <= 1 then
Editors = Editors .. ", " .. cfg.messages['editor'];
else
Editors = Editors .. ", " .. cfg.messages['editors'];
end
else
if EditorCount <= 1 then
Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " "
else
Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " "
end
end
text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc );
else
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc );
else
text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc );
end
end
if utilities.is_set (PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc ); --Deals with italics, spaces, etc.
text = text:sub(1, -sepc:len() - 1);
end
text = safe_join( {text, PostScript}, sepc );
-- Now enclose the whole thing in a <cite/> element
local options = {};
if utilities.is_set (config.CitationClass) and config.CitationClass ~= "citation" then
options.class = string.format ('%s %s %s', 'citation', config.CitationClass, utilities.is_set (Mode) and Mode or 'cs1'); -- class=citation required for blue highlight when used with |ref=
else
options.class = string.format ('%s %s', 'citation', utilities.is_set (Mode) and Mode or 'cs2');
end
if utilities.is_set (Ref) and 'none' ~= cfg.keywords_xlate[Ref:lower()] then
local id = Ref
if ('harv' == Ref ) then
local namelist = {}; -- holds selected contributor, author, editor name list
local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation
if #c > 0 then -- if there is a contributor list
namelist = c; -- select it
elseif #a > 0 then -- or an author list
namelist = a;
elseif #e > 0 then -- or an editor list
namelist = e;
end
if #namelist > 0 then -- if there are names in namelist
id = anchor_id (namelist, year); -- go make the CITEREF anchor
else
id = ''; -- unset
end
end
options.id = id;
end
if string.len(text:gsub("<span[^>/]*>(.-)</span>", "%1"):gsub("%b<>", "")) <= 2 then -- remove <span> tags and other HTML-like markup; then get length of what remains
z.error_categories = {};
text = utilities.set_message ('err_empty_citation');
z.message_tail = {};
end
local render = {}; -- here we collect the final bits for concatenation into the rendered citation
if utilities.is_set (options.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags
table.insert (render, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options.id), mw.text.nowiki(options.class), text})); -- when |ref= is set
else
table.insert (render, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options.class), text})); -- all other cases
end
table.insert (render, utilities.substitute (cfg.presentation['ocins'], {OCinSoutput})); -- append metadata to the citation
if 0 ~= #z.message_tail then
table.insert (render, ' ');
for i,v in ipairs( z.message_tail ) do
if utilities.is_set (v[1]) then
if i == #z.message_tail then
table.insert (render, utilities.error_comment ( v[1], v[2] ));
else
table.insert (render, utilities.error_comment ( v[1] .. "; ", v[2] ));
end
end
end
end
if 0 ~= #z.maintenance_cats then
local maint_msgs = {}; -- here we collect all of the maint messages
for _, v in ipairs( z.maintenance_cats ) do -- append maintenance categories
local maint = {}; -- here we assemble a maintenence message
table.insert (maint, v); -- maint msg is the category name
table.insert (maint, ' ('); -- open the link text
table.insert (maint, utilities.make_wikilink (':Category:' .. v, 'link')); -- add the link
table.insert (maint, ')'); -- and close it
table.insert (maint_msgs, table.concat (maint)); -- assemble new maint message and add it to the maint_msgs table
end
table.insert (render, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs, ' '))); -- wrap the group of maint message with proper presentation and save
end
if not no_tracking_cats then
for _, v in ipairs( z.error_categories ) do
table.insert (render, utilities.make_wikilink ('Category:' .. v));
end
for _, v in ipairs( z.maintenance_cats ) do -- append maintenance categories
table.insert (render, utilities.make_wikilink ('Category:' .. v));
end
for _, v in ipairs( z.properties_cats ) do -- append properties categories
table.insert (render, utilities.make_wikilink ('Category:' .. v));
end
elseif 'nocat' == A:ORIGIN('NoTracking') then -- peculiar special case; can't track nocat without tracking nocat
table.insert (render, utilities.make_wikilink ('Category:CS1 maint: nocat')); -- hand-set this category because it is supposed to be temporary
end
return table.concat (render);
end
--[[--------------------------< V A L I D A T E >--------------------------------------------------------------
Looks for a parameter's name in one of several whitelists.
Parameters in the whitelist can have three values:
true - active, supported parameters
false - deprecated, supported parameters
nil - unsupported parameters
]]
local function validate (name, cite_class, empty)
local name = tostring (name);
local state;
local function state_test (state, name) -- local function to do testing of state values
if true == state then return true; end -- valid actively supported parameter
if false == state then
if empty then return nil; end -- deprecated empty parameters are treated as unknowns
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
return nil;
end
if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted
return nil;
end
if utilities.in_array (cite_class, whitelist.preprint_template_list ) then -- limited parameter sets allowed for these templates
state = whitelist.limited_basic_arguments[name];
if true == state_test (state, name) then return true; end
state = whitelist.preprint_arguments[cite_class][name]; -- look in the parameter-list for the template identified by cite_class
if true == state_test (state, name) then return true; end
-- limited enumerated parameters list
name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits)
state = whitelist.limited_numbered_arguments[name];
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end -- end limited parameter-set templates
if utilities.in_array (cite_class, whitelist.unique_param_template_list) then -- experiment for template-specific parameters for templates that accept parameters from the basic argument list
state = whitelist.unique_arguments[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class
if true == state_test (state, name) then return true; end
end -- if here, fall into general validation
state = whitelist.basic_arguments[name]; -- all other templates; all normal parameters allowed
if true == state_test (state, name) then return true; end
-- all enumerated parameters allowed
name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits)
state = whitelist.numbered_arguments[name];
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end
--[=[-------------------------< I N T E R _ W I K I _ C H E C K >----------------------------------------------
check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language
code. when these values have the form (without leading colon):
[[<prefix>:link|label]] return label as plain-text
[[<prefix>:link]] return <prefix>:link as plain-text
return value as is else
]=]
local function inter_wiki_check (parameter, value)
local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists
local _;
if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so
table.insert( z.message_tail, {utilities.set_message ('err_bad_paramlink', parameter)}); -- emit an error message
_, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink
end
return value;
end
--[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------
Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal
sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a
parameter that is missing its pipe. There are two tests made:
{{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name
{{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki)
cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML
tags are removed before the search.
If a missing pipe is detected, this function adds the missing pipe maintenance category.
]]
local function missing_pipe_check (parameter, value)
local capture;
value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc.
capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes
if capture and validate (capture) then -- if the capture is a valid parameter name
table.insert( z.message_tail, {utilities.set_message ('err_missing_pipe', parameter)});
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >--------------------------------------
look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_punc (param, value)
if 'number' == type (param) then
return;
end
param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize
if cfg.punct_skip[param] then
return; -- parameter name found in the skip table so done
end
if value:match ('[,;:]$') then
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
end
--[[--------------------------< C I T A T I O N >--------------------------------------------------------------
This is used by templates such as {{cite book}} to create the actual citation text.
]]
local function citation(frame)
Frame = frame; -- save a copy in case we need to display an error message in preview mode
local pframe = frame:getParent()
local styles;
if nil ~= string.find (frame:getTitle(), 'sandbox', 1, true) then -- did the {{#invoke:}} use sandbox version?
cfg = mw.loadData ('Module:Citation/CS1/Configuration/sandbox'); -- load sandbox versions of support modules
whitelist = mw.loadData ('Module:Citation/CS1/Whitelist/sandbox');
utilities = require ('Module:Citation/CS1/Utilities/sandbox');
validation = require ('Module:Citation/CS1/Date_validation/sandbox');
identifiers = require ('Module:Citation/CS1/Identifiers/sandbox');
metadata = require ('Module:Citation/CS1/COinS/sandbox');
styles = 'Module:Citation/CS1/sandbox/styles.css';
else -- otherwise
cfg = mw.loadData ('Module:Citation/CS1/Configuration'); -- load live versions of support modules
whitelist = mw.loadData ('Module:Citation/CS1/Whitelist');
utilities = require ('Module:Citation/CS1/Utilities');
validation = require ('Module:Citation/CS1/Date_validation');
identifiers = require ('Module:Citation/CS1/Identifiers');
metadata = require ('Module:Citation/CS1/COinS');
styles = 'Module:Citation/CS1/styles.css';
end
utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables
identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module
validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module
metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module
z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities
local args = {}; -- table where we store all of the template's arguments
local suggestions = {}; -- table where we store suggestions if we need to loadData them
local error_text, error_state;
local config = {}; -- table to store parameters from the module {{#invoke:}}
for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame
config[k] = v;
-- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep?
end
local capture; -- the single supported capture when matching unknown parameters using patterns
local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing
for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame
v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string
if v ~= '' then
if ('string' == type (k)) then
k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9
end
if not validate( k, config.CitationClass ) then
error_text = "";
if type( k ) ~= 'string' then
-- exclude empty numbered parameters
if v:match("%S+") ~= nil then
error_text, error_state = utilities.set_message ( 'err_text_ignored', {v}, true );
end
elseif validate( k:lower(), config.CitationClass ) then
error_text, error_state = utilities.set_message ( 'err_parameter_ignored_suggest', {k, k:lower()}, true ); -- suggest the lowercase version of the parameter
else
if nil == suggestions.suggestions then -- if this table is nil then we need to load it
if nil ~= string.find (frame:getTitle(), 'sandbox', 1, true) then -- did the {{#invoke:}} use sandbox version?
suggestions = mw.loadData( 'Module:Citation/CS1/Suggestions/sandbox' ); -- use the sandbox version
else
suggestions = mw.loadData( 'Module:Citation/CS1/Suggestions' ); -- use the live version
end
end
for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter
capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match
if capture then -- if the pattern matches
param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator)
if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists)
error_text, error_state = utilities.set_message ('err_parameter_ignored_suggest', {k, param}, true); -- set the suggestion error message
else
error_text, error_state = utilities.set_message ( 'err_parameter_ignored', {param}, true ); -- suggested param not supported by this template
v = ''; -- unset
end
end
end
if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an expicit suggestion?
if suggestions.suggestions[ k:lower() ] ~= nil then
error_text, error_state = utilities.set_message ( 'err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]}, true );
else
error_text, error_state = utilities.set_message ( 'err_parameter_ignored', {k}, true );
v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists)
end
end
end
if error_text ~= '' then
table.insert( z.message_tail, {error_text, error_state} );
end
end
args[k] = v; -- save this parameter and its value
elseif not utilities.is_set (v) then -- for empty parameters
if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter
k = ('' == k) and k:gsub ('^$', '(empty string)') or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text
table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list
end
-- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep?
-- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that)
-- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here
end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact?
end
if 0 ~= #empty_unknowns then -- create empty unknown error message
table.insert (z.message_tail, {utilities.set_message ('err_param_unknown_empty', {
1 == #empty_unknowns and '' or 's',
utilities.make_sep_list (#empty_unknowns, empty_unknowns)
}, true )});
end
for k, v in pairs( args ) do
if 'string' == type (k) then -- don't evaluate positional parameters
has_invisible_chars (k, v); -- look for invisible characters
end
has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values
missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe?
args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label
end
return table.concat ({citation0( config, args), frame:extensionTag ('templatestyles', '', {src=styles})});
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {citation = citation};
g5r1sj962yc8asv8dj793xw4dsaa7ak
Module:Citation/CS1/COinS
828
1461
3226
3225
2020-10-11T01:32:07Z
Chrisb
1
1 revision imported
3225
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< M A K E _ C O I N S _ T I T L E >----------------------------------------------
Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs)
Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings
of %27%27...
]]
local function make_coins_title (title, script)
if is_set (title) then
title = strip_apostrophe_markup (title); -- strip any apostrophe markup
else
title=''; -- if not set, make sure title is an empty string
end
if is_set (script) then
script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string)
script = strip_apostrophe_markup (script); -- strip any apostrophe markup
else
script=''; -- if not set, make sure script is an empty string
end
if is_set (title) and is_set (script) then
script = ' ' .. script; -- add a space before we concatenate
end
return title .. script; -- return the concatenation
end
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
]]
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters
return argument;
end
--[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------
Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS.
]]
local function get_coins_pages (pages)
local pattern;
if not is_set (pages) then return pages; end -- if no page numbers then we're done
while true do
pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the url and following space(s): "[url "
if nil == pattern then break; end -- no more urls
pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape lua's magic pattern characters
pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible
end
pages = pages:gsub("[%[%]]", ""); -- remove the brackets
pages = pages:gsub("–", "-" ); -- replace endashes with hyphens
pages = pages:gsub("&%w+;", "-" ); -- and replace html entities (– etc.) with hyphens; do we need to replace numerical entities like   and the like?
return pages;
end
--[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------
There are three options for math markup rendering that depend on the editor's math preference settings. These
settings are at [[Special:Preferences#mw-prefsection-rendering]] and are
PNG images
TeX source
MathML with SVG or PNG fallback
All three are heavy with html and css which doesn't belong in the metadata.
Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings
of the last editor to save the page.
This function gets the rendered form of an equation according to the editor's preference before the page is saved. It
then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so
that the page is saved without extraneous html/css markup and with a reasonably readable text form of the equation.
When a replacement is made, this function returns true and the value with replacement; otherwise false and the intital
value. To replace multipe equations it is necesary to call this function from within a loop.
]=]
local function coins_replace_math_stripmarker (value)
local stripmarker = cfg.stripmarkers['math'];
local rendering = value:match (stripmarker); -- is there a math stripmarker
if not rendering then -- when value doesn't have a math stripmarker, abandon this test
return false, value;
end
rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error)
if rendering:match ('alt="[^"]+"') then -- if PNG math option
rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text
elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$
rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text
elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option
rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text
else
return false, value; -- had math stripmarker but not one of the three defined forms
end
return true, value:gsub (stripmarker, rendering, 1);
end
--[[--------------------------< C O I N S _ C L E A N U P >----------------------------------------------------
Cleanup parameter values for the metadata by removing or replacing invisible characters and certain html entities.
2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content
when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29
TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible
characters table?
]]
local function coins_cleanup (value)
local replaced = true; -- default state to get the do loop running
while replaced do -- loop until all math stripmarkers replaced
replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation
end
value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message
value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">'(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s
value = value:gsub (' ', ' '); -- replace entity with plain space
value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space
if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero width joiner characters from indic script
value = value:gsub ('‍', ''); -- remove ‍ entities
value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen
end
value = value:gsub ('[\009\010\013]', ' '); -- replace horizontal tab, line feed, carriage return with plain space
return value;
end
--[[--------------------------< C O I N S >--------------------------------------------------------------------
COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information.
]]
local function COinS(data, class)
if 'table' ~= type(data) or nil == next(data) then
return '';
end
for k, v in pairs (data) do -- spin through all of the metadata parameter values
if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed)
data[k] = coins_cleanup (v);
end
end
local ctx_ver = "Z39.88-2004";
-- treat table strictly as an array with only set values.
local OCinSoutput = setmetatable( {}, {
__newindex = function(self, key, value)
if is_set(value) then
rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } );
end
end
});
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or
('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then -- set genre according to the type of citation template we are rendering
OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite ssrn
elseif 'conference' == class then
OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set)
elseif 'web' == class then
OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set)
else
OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles
end
OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only
OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles
-- these used only for periodicals
OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall
OCinSoutput["rft.chron"] = data.Chron; -- free-form date components
OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books
OCinSoutput["rft.issue"] = data.Issue;
OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata
elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier
if 'report' == class or 'techreport' == class then -- cite report and cite techreport
OCinSoutput["rft.genre"] = "report";
elseif 'conference' == class then -- cite conference when Periodical not set
OCinSoutput["rft.genre"] = "conference";
OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book)
elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then
if is_set (data.Chapter) then
OCinSoutput["rft.genre"] = "bookitem";
OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title
else
if 'map' == class or 'interview' == class then
OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview
else
OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia
end
end
else --{'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'}
OCinSoutput["rft.genre"] = "unknown";
end
OCinSoutput["rft.btitle"] = data.Title; -- book only
OCinSoutput["rft.place"] = data.PublicationPlace; -- book only
OCinSoutput["rft.series"] = data.Series; -- book only
OCinSoutput["rft.pages"] = data.Pages; -- book, journal
OCinSoutput["rft.edition"] = data.Edition; -- book only
OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation
else -- cite thesis
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier
OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported)
OCinSoutput["rft.degree"] = data.Degree; -- dissertation only
OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation
end
-- and now common parameters (as much as possible)
OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation
for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all?
if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end
local id = cfg.id_handlers[k].COinS;
if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry
OCinSoutput["rft_id"] = table.concat{ id, "/", v };
elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc that have defined COinS keywords
OCinSoutput[ id ] = v;
elseif id then -- when cfg.id_handlers[k].COinS is not nil
OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v }; -- others; provide a url
end
end
local last, first;
for k, v in ipairs( data.Authors ) do
last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki strip markers, non-printing or invisible characers
if k == 1 then -- for the first author name only
if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name
OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation
OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name
end
else -- for all other authors
if is_set(last) and is_set(first) then
OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation
end
end
end
OCinSoutput.rft_id = data.URL;
OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage };
OCinSoutput = setmetatable( OCinSoutput, nil );
-- sort with version string always first, and combine.
--table.sort( OCinSoutput );
table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004"
return table.concat(OCinSoutput, "&");
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
is_set = utilities_page_ptr.is_set; -- import functions from selected Module:Citation/CS1/Utilities module
in_array = utilities_page_ptr.in_array;
remove_wiki_link = utilities_page_ptr.remove_wiki_link;
strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup;
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
make_coins_title = make_coins_title,
get_coins_pages = get_coins_pages,
COinS = COinS,
set_selected_modules = set_selected_modules,
}
l8s94fpb0lbhviey5aqaamradc5q20u
Module:Citation/CS1/Configuration
828
1462
3228
3227
2020-10-11T01:32:08Z
Chrisb
1
1 revision imported
3227
Scribunto
text/plain
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces that should not be included in citation error categories. Same as setting notracking = true by default
Note: Namespace names should use underscores instead of spaces.
]]
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk', 'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk', 'Book_talk', 'Draft_talk', 'Education_Program_talk', 'Module_talk', 'MediaWiki_talk' };
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Archived from $1 on $2',
['archived-live'] = '$1 from the original on $2',
['archived-missing'] = 'Archived from the original$1 on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1 ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['lay summary'] = 'Lay summary',
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
-- ['nodate'] = 'n.d.', -- in the future for |date=none|n.d.|nd
['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Retrieved $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Translated by $1',
['type'] = ' ($1)', -- for titletype
['written'] = 'Written at $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2 no. $3', -- sepc, volume, issue
['issue'] = '$1 No. $2', -- $1 is sepc
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 p. $2", -- $1 is sepc
['pp-prefix'] = "$1 pp. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = 'minutes in',
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_manual_ID'] = 'Unrecognized manual ID mode',
['unknown_ID_mode'] = 'Unrecognized ID mode',
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", -- variations on the 'et alia' theme
"[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< E D I T O R _ M A R K U P _ P A T T E R N S >----------------------------------
This table provides Lua patterns for the phrase "ed" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the
'extra_text_names' message. (It is not the only series of patterns for this message.)
]]
local editor_markup_patterns = { -- these patterns match annotations at end of name
'%f[%(%[][%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]?$', -- (ed) or (eds): leading '(', case insensitive 'ed', optional 's', '.' and/or ')'
'[,%.%s]%f[e]eds?%.?$', -- ed or eds: without '('or ')'; case sensitive (ED could be initials Ed could be name)
'%f[%(%[][%(%[]%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?%s*[%)%]]?$', -- (editor) or (editors): leading '(', case insensitive, optional '.' and/or ')'
'[,%.%s]%f[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors: without '('or ')'; case insensitive
-- these patterns match annotations at beginning of name
'^eds?[%.,;]', -- ed. or eds.: lower case only, optional 's', requires '.'
'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', -- (ed) or (eds): also sqare brackets, case insensitive, optional 's', '.'
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%A', -- (editor or (editors: also square brackets, case insensitive, optional brackets, 's'
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Ee][Dd]%A', -- (edited: also square brackets, case insensitive, optional brackets
-- these patterns match annotations that are the 'name'
'^[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors; case insensitive
}
--[[--------------------------< P R E S E N T A T I O N >------------------------------------------------------
Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically
correct place.
]]
local presentation =
{
-- Error output
-- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when |ref= is set
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left">$1</span>$2', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right">$2</span>', -- spacing to use when title contains trailing single or double quote mark
-- these for simple wikilinked titles [["text]], [[text"]] and [["text"]]
-- span wraps entire wikilink
['kern-wl-left'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains leading single or double quote mark
['kern-wl-right'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains trailing single or double quote mark
['kern-wl-both'] = '<span class="cs1-kern-wl-left cs1-kern-wl-right">$1</span>', -- when title contains leading and trailing single or double quote marks
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items
['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >----------------------------------------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignements in this table must have been defined in the Whitelist
before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl', 'contributionurl', 'sectionurl'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifiers
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = {'conference-format', 'event-format'},
['ConferenceURL'] = {'conference-url', 'event-url', 'conferenceurl', 'eventurl'}, -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects', 'displayauthors'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = 'edition',
['Editors'] = 'editors',
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['IgnoreISBN'] = 'ignore-isbn-error',
['Inset'] = 'inset',
['Issue'] = {'issue', 'number'},
['Language'] = {'language', 'lang'},
['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'},
['LayDate'] = {'lay-date', 'laydate'},
['LayFormat'] = 'lay-format',
['LaySource'] = {'lay-source', 'laysource'},
['LayURL'] = {'lay-url', 'layurl'}, -- Used by InternetArchiveBot
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = {'name-list-style', 'name-list-format'},
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo', 'nocat'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no', 'seriesnumber', 'seriesno'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = {'time-caption', 'timecaption'},
['Title'] = 'title', -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = 'department',
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = {'transcript-url', 'transcripturl'}, -- Used by InternetArchiveBot
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "given#", "author-given#", "author#-given"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "surname#", "author-surname#", "author#-surname", "author#", "subject#", 'host#'},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link", "subjectlink#", "subject#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask", "authormask#", "author#mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link", "editorlink#", "editor#link"}, -- unhyphenated forms to be deprecated
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< P U N C T _ S K I P >----------------------------------------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_skip = {};
local meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- url-holding parameters
}
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
punct_skip[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
punct_skip[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
punct_skip[param] = 1; -- add param name without enumerator marker
end
end
end
end
--[[--------------------------< S P E C I A L C A S E T R A N S L A T I O N S >----------------------------
This table is primarily here to support internationalization. Translations in this table are used, for example,
when an error message, category name, etc., is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local special_case_translation = {
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base mainenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
['authors'] = 'authors', -- used to assemble maintenance category names
['contributors'] = 'contributors', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['editors'] = 'editors', -- must match the names of the actual categories
['interviewers'] = 'interviewers', -- this group of translations used by get_display_names()
['translators'] = 'translators',
-- Lua patterns to match pseudo-titles used by Internet Archive bot and others as place holder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots of reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
['generic_titles'] = {
{
['en'] = {'^wayback%s+machine$', false}, -- patterns in this table to be lowercase only
['local'] = nil, -- leave this nil except when there is a matching generic title in your language
},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains.com', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', true}, ['local'] = nil},
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names. The code in Date_validation
will look first in the local table for valid date names. If date names are not found in the local table, the code
will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation
function date_name_xlate() is used.
In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south
hemispere seasons but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which
should be out of the ISO 8601 (EDTF) range of uses for a while.
]]
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['inv_local_l'] = {}, -- used in date reformatting; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_s'] = {}, -- used in date reformatting; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
for name, i in pairs (date_names['local'].long) do -- this table is ['name'] = i
date_names['inv_local_l'][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
for name, i in pairs (date_names['local'].short) do -- this table is ['name'] = i
date_names['inv_local_s'][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local function get_date_format ()
local content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
content = content:match ('%b{}', start); -- get the whole template
if content:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. content:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df = get_date_format ();
--[[--------------------------< V O L U M E , I S S U E , P A G E S >----------------------------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[--------------------------< K E Y W O R D S >--------------------------------------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[--------------------------< K E Y W O R D S T A B L E >--------------------------------------------------
this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from
different languages.
for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English
keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |ignore-isbn-error=, |last-author-amp=, |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |url-access= -- Used by InternetArchiveBot
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[--------------------------< X L A T E _ K E Y W O R D S >--------------------------------------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[--------------------------< M A K E _ K E Y W O R D S _ L I S T >------------------------------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[--------------------------< K E Y W O R D S _ L I S T S >--------------------------------------------------
this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table
are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named
parameters: ['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< S T R I P M A R K E R S >------------------------------------------------------
Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when)
MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[--------------------------< I N V I S I B L E _ C H A R A C T E R S >--------------------------------------
This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal
representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns
table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at
the top of the table are also found in the ranges specified by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki
stripmarker is not an error but some others are because the parameter values that include them become part of the
template's metadata before stripmarker replacement.
]]
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '\226\128\141'}, -- U+200D, E2 80 8D
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '\127'}, -- U+007F (DEL), 7F; must be done after stripmarker test
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This
pattern covers all of the unicode characters for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
TODO: find a better place for this?
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
--[[--------------------------< L A N G U A G E S U P P O R T >----------------------------------------------
These tables and constants support various language-specific functionality.
]]
local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():preprocess('{{int:lang}}'); -- on Wikidata so use interface language setting instead
end
local languages = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a list of language names known to Wikimedia; used for |language= and interwiki tests
local inter_wiki_map = {}; -- map of inter-wiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base inter-wiki map (limited to local)
if languages[v["prefix"]] then -- if the prefix matches a known language code
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
local local_lang_cat_enable = false; -- set to true to categorize pages where |language=<local wiki's language>
--[[--------------------------< S C R I P T _ L A N G _ C O D E S >--------------------------------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only
to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa',
'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku',
'lo', 'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'or', 'ota', 'ps', 'ru',
'sd', 'si', 'sr', 'ta', 'tg', 'th', 'ug', 'uk', 'ur', 'uz', 'yi', 'zh'
};
--[[--------------------------< L A N G U A G E R E M A P P I N G >------------------------------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['code'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', 'code'} in lang_name_remap{}
lang_code_remap{}:
key is always lowercase ISO 639-1, -2, -3 language code or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with key
only one language name per key;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated code [2] (code must match a code key in lang_code_remap{})
may have multiple keys referring to a common preferred name and code; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_code_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['crh'] = 'Crimean Tatar', -- synonymous with Crimean Turkish (return value from {{#language:crh|en}})
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
local lang_name_remap = { -- used for |language=
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['crimean tatar'] = {'Crimean Tatar', 'crh'}, -- MediaWiki uses 'crh' as a subdomain name for Crimean Tatar Wikipedia: crh.wikipedia.org
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
-- ['siksika'] = {'Siksika', 'bla'}, -- MediaWiki/IANA/ISO 639 preferred name: Siksika
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-TW'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca'}, -- variant of Catalan; categorizes as Catalan
}
--[[--------------------------< P R O P E R T I E S _ C A T E G O R I E S >------------------------------------
Here we name properties categories
]]
local prop_cats = {
['foreign_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign_lang_source_2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['local_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location test'] = 'CS1 location test',
['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category
['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['jul_greg_uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['long_vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 charachters
['year_range_abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[--------------------------< T I T L E _ T Y P E S >--------------------------------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[=========================<< E R R O R M E S S A G I N G >>===============================================
]]
--[[--------------------------< E R R O R M E S S A G E S U P P L I M E N T S >----------------------------
I18N for those messages that are supplemented with additional specific text that describes the reason for
the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------------------< E R R O R _ C O N D I T I O N S >----------------------------------------------
Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging'
does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a
text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'Pages using citations with accessdate and no URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'Pages with archiveurl citation errors',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'Pages with archiveurl citation errors',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'Pages with archiveurl citation errors',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
-- message = 'Check date values in: <code class="cs1-code">$1</code>', -- $1 is parameter name
message = 'Check date values in: $1', -- $1 is parameter name
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
bad_s2cid_err = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'Pages with URL errors',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: ZBL',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'Pages with citations having bare URLs',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'Pages with citations lacking titles',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'Pages using web citations with no URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|display-$1=$2</code>', -- $1 is 'authors', 'contributors', 'editors', 'interviewers', 'translators'; gets value from special_case_translation table
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'Pages with empty citations',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'Pages using citations with format and no URL',
hidden = false
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = true
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'Pages with citations using unsupported parameters',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'Pages with citations using unsupported parameters',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'Pages with citations having redundant parameters',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: ssrn', -- same as bad arxiv
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'Pages with citations using unnamed parameters',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = true
},
err_vancouver = {
message = 'Vancouver style error: $1', -- $1 is error detail
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >--------------------------------------------------------------------
maint messages do not have a message (message = nil); otherwise the structure is the same as error messages
]]
maint_asin = {
message = nil,
anchor = 'ASIN',
category = 'CS1 maint: ASIN uses ISBN',
hidden = true,
},
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_authors = {
message = nil,
anchor = 'authors',
category = 'CS1 maint: uses authors parameter',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: BOT: original-url status unknown',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI inactive',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_extra_text = {
message = nil,
anchor = 'extra_text',
category = 'CS1 maint: extra text',
hidden = true,
},
maint_extra_text_names = {
message = nil,
anchor = 'extra_text_names',
category = 'CS1 maint: extra text: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_nocat = {
message = nil,
anchor = 'maint_nocat',
category = 'CS1 maint: nocat',
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_ref_harv = {
message = nil,
anchor = 'ref_harv',
category = 'CS1 maint: ref=harv',
hidden = true,
},
maint_unfit = {
message = nil,
anchor = 'unfit',
category = 'CS1 maint: unfit url',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: unrecognized language',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: ZBL',
hidden = true,
},
}
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each identifier we specify a
variety of information necessary to properly render the identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: wikidata q number for the identifier
label: the label preceeding the identifier; label is linked to a wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
mode: 'manual' when there is a specific function in the code to handle the identifier;
'external' for identifiers that link outside of Wikipedia;
prefix: the first part of a url that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if uri should be percent encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:....
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for others make a url using the value in prefix, use the keyword: pre (not checked; any text other than 'info' or 'rft' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
mode = 'manual',
prefix = '//arxiv.org/abs/', -- protocol relative tested 2013-09-04
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
mode = 'manual',
prefix = '//www.amazon.',
COinS = nil, -- no COinS for this id (needs thinking on implementation because |asin-tld=)
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
mode = 'manual',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
mode = 'manual',
prefix = '//doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
mode = 'manual', -- manual for custom validation of the "doi"
prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
mode = 'manual',
prefix = '//doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International_Standard_Serial_Number#Electronic_ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
mode = 'manual',
prefix = '//www.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
mode = 'manual',
prefix = '//hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
mode = 'manual',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
mode = 'manual',
prefix = '', -- not currently used;
COinS = 'nil', -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
mode = 'manual',
prefix = '//www.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
mode = 'manual',
prefix = '//zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
mode = 'external',
prefix = '//www.jstor.org/stable/', -- protocol relative tested 2013-09-04
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
mode = 'manual',
prefix = '//lccn.loc.gov/', -- protocol relative tested 2015-12-28
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
mode = 'manual',
prefix = '//www.ams.org/mathscinet-getitem?mr=', -- protocol relative tested 2013-09-04
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
mode = 'manual',
prefix = '//www.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
mode = 'manual',
prefix = '//openlibrary.org/',
COinS = nil, -- no COinS for this id (needs thinking on implementation because /authors/books/works/OL)
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
mode = 'external',
prefix = '//www.osti.gov/biblio/', -- protocol relative tested 2018-09-12
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
mode = 'manual',
prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = " ",
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 8000000,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = '',
label = 'PMID',
mode = 'manual',
prefix = '//pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = 33000000,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
mode = 'external',
prefix = '//tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
mode = 'manual',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
mode = 'manual',
prefix = '//ssrn.com/abstract=', -- protocol relative tested 2013-09-04
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 4000000,
access = 'free', -- always free to read
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
mode = 'manual',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 230000000,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
mode = 'manual',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
mode = 'manual',
prefix = '//zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
use_identifier_redirects = true, -- when true use redirect name for identifier label links
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
global_df = global_df,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers=stripmarkers,
invisible_chars = invisible_chars,
indic_script = indic_script,
local_lang_cat_enable = local_lang_cat_enable,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
punct_skip = punct_skip,
script_lang_codes = script_lang_codes,
lang_code_remap = lang_code_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
inter_wiki_map = inter_wiki_map,
languages = languages,
}
f1nf05t6bptppz44xfdcftt1r2ghqbi
Module:Citation/CS1/Date validation
828
1463
3230
3229
2020-10-11T01:32:08Z
Chrisb
1
1 revision imported
3229
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local add_prop_cat, is_set, in_array, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >--------------------------------
File-scope variables are declared here
]]
local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration?
local year_limit; -- used by is_valid_year()
--[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >----------------------------------------
returns true if:
Wikipedia start date <= accessdate < today + 2 days
Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time)
accessdate is the date provided in |access-date= at time 00:00:00 UTC
today is the current date at time 00:00:00 UTC plus 48 hours
if today is 2015-01-01T00:00:00 then
adding 24 hours gives 2015-01-02T00:00:00 – one second more than today
adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow
This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser
apparently doesn't understand non-English date month names. This function will always return false when the date
contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that
call this function with YYYY-MM-DD format dates.
]=]
local function is_valid_accessdate (accessdate)
local good1, good2;
local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates
good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand
access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix time stamp
end
if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date
return true;
else
return false; -- accessdate out of range
end
end
--[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------
returns true and date value if that value has proper dmy, mdy, ymd format.
returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is
set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date.
]]
local function is_valid_embargo_date (v)
if v:match ('^%d%d%d%d%-%d%d%-%d%d$') or -- ymd
v:match ('^%d%d?%s+%a+%s+%d%d%d%d$') or -- dmy
v:match ('^%a+%s+%d%d?%s*,%s*%d%d%d%d$') then -- mdy
return true, v;
end
return false, '9999'; -- if here not good date so return false and set embargo date to long time in future
end
--[[--------------------------< G E T _ M O N T H _ N U M B E R >----------------------------------------------
returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct.
If not a valid month, returns 0
]]
local function get_month_number (month)
return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first
cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names
0; -- not a recognized month name
end
--[[--------------------------< G E T _ S E A S O N _ N U M B E R >--------------------------------------------
returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling
must be correct. If not a valid season, returns 0.
21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere”
returns 0 when <param> is not |date=
Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south
hemispere seasons but cs1|2 has no way to make that distinction.
These additional divisions not currently supported:
25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere
29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_season_number (season, param)
if 'date' ~= param then
return 0; -- season dates only supported by |date=
end
return cfg.date_names['local'].season[season] or -- look for local names first
cfg.date_names['en'].season[season] or -- failing that, look for English names
0; -- not a recognized season name
end
--[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------
returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling
must be correct. If not a valid quarter, returns 0.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
returns 0 when <param> is not |date=
Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons and quarters.
These additional divisions not currently supported:
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_quarter_number (quarter, param)
if 'date' ~= param then
return 0; -- quarter dates only supported by |date=
end
quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char
return cfg.date_names['local'].quarter[quarter] or -- look for local names first
cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names
0; -- not a recognized quarter name
end
--[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >----------------------------------
returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct.
returns 0 when <param> is not |date=
]]
local function get_proper_name_number (name, param)
if 'date' ~= param then
return 0; -- proper-name dates only supported by |date=
end
return cfg.date_names['local'].named[name] or -- look for local names dates first
cfg.date_names['en'].named[name] or -- failing that, look for English names
0; -- not a recognized named date
end
--[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------
returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated)
]]
local function get_element_number (element, param)
local num;
local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order
for _, func in ipairs (funcs) do -- spin through the function list
num = func (element, param); -- call the function and get the returned number
if 0 ~= num then -- non-zero when valid month season quarter
return num; -- return that number
end
end
return nil; -- not valid
end
--[[--------------------------< I S _ V A L I D _ Y E A R >----------------------------------------------------
Function gets current year from the server and compares it to year from a citation parameter. Years more than one
year in the future are not acceptable.
]]
local function is_valid_year (year)
if not is_set(year_limit) then
year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once
end
year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to numbers for the comparison;
return year and (year <= year_limit) or false;
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if day is less than or equal to the number of days in month and year is no farther into the future
than next year; else returns false.
Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap
years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately
1923) dates are assumed to be Gregorian.
]]
local function is_valid_date (year, month, day)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
if not is_valid_year(year) then -- no farther into the future than next year
return false;
end
month = tonumber(month); -- required for YYYY-MM-DD dates
if (2 == month) then -- if February
month_length = 28; -- then 28 days unless
if 1582 > tonumber(year) then -- Julian calendar
if 0 == (year%4) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else -- Gregorian calendar
if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
end
else
month_length = days_in_month[month];
end
if tonumber (day) > month_length then
return false;
end
return true;
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >--------------------------
Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August.
There is a special test for May because it can be either short or long form.
Returns true when style for both months is the same
]]
local function is_valid_month_range_style (month1, month2)
local len1 = month1:len();
local len2 = month2:len();
if len1 == len2 then
return true; -- both months are short form so return true
elseif 'May' == month1 or 'May'== month2 then -- ToDo: I18N
return true; -- both months are long form so return true
elseif 3 == len1 or 3 == len2 then
return false; -- months are mixed form so return false
else
return true; -- both months are long form so return true
end
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------
Check a pair of months or seasons to see if both are valid members of a month or season pair.
Month pairs are expected to be left to right, earliest to latest in time.
All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok
]]
local function is_valid_month_season_range(range_start, range_end, param)
local range_start_number = get_month_number (range_start);
local range_end_number;
if 0 == range_start_number then -- is this a month range?
range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number
range_end_number = get_season_number (range_end, param); -- get end season number
if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then
return true; -- any season pairing is accepted except when both are the same
end
return false; -- range_start and/or range_end is not a season
end
-- here when range_start is a month
range_end_number = get_month_number (range_end); -- get end month number
if range_start_number < range_end_number then -- range_start is a month; does range_start precede range_end?
if is_valid_month_range_style (range_start, range_end) then -- do months have the same style?
return true; -- proper order and same style
end
end
return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month
end
--[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------
This function receives a table of date parts for one or two dates and an empty table reference declared in
Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is
determined to be a valid date format. The question of what to do with invalid date formats is not answered here.
The date parts in the input table are converted to an ISO 8601 conforming date string:
single whole dates: yyyy-mm-dd
month and year dates: yyyy-mm
year dates: yyyy
ranges: yyyy-mm-dd/yyyy-mm-dd
yyyy-mm/yyyy-mm
yyyy/yyyy
Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from
Julian to Proleptic Gregorian.
The input table has:
year, year2 – always present; if before 1582, ignore months and days if present
month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas
day, day2 – 0 if not provided, 1-31 for days
the output table receives:
rftdate: an ISO 8601 formatted date
rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates)
rftssn: one of four season keywords: winter, spring, summer, fall (lowercase)
rftquarter: one of four values: 1, 2, 3, 4
]]
local function make_COinS_date (input, tCOinS_date)
local date; -- one date or first date in a range
local date2 = ''; -- end of range date
-- start temporary Julian / Gregorian calendar uncertainty detection
local year = tonumber(input.year); -- this temporary code to determine the extent of sources dated to the Julian/Gregorian
local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926
local day = tonumber (input.day);
if (0 ~= day) and -- day must have a value for this to be a whole date
(((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or
((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or
((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925
tCOinS_date.inter_cal_cat = true; -- set category flag true
end
-- end temporary Julian / Gregorian calendar uncertainty detection
if 1582 > tonumber(input.year) or 20 < tonumber(input.month) then -- Julian calendar or season so &rft.date gets year only
date = input.year;
if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year
date = string.format ('%.4d/%.4d', tonumber(input.year), tonumber(input.year2)) -- assemble the date range
end
if 20 < tonumber(input.month) then -- if season or proper-name date
local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case
if 0 == input.month2 then -- single season date
if 40 < tonumber(input.month) then
tCOinS_date.rftchron = season[input.month]; -- proper-name dates
elseif 30 < tonumber(input.month) then
tCOinS_date.rftquarter = season[input.month]; -- quarters
else
tCOinS_date.rftssn = season[input.month]; -- seasons
end
else -- season range with a second season specified
if input.year ~= input.year2 then -- season year – season year range or season year–year
tCOinS_date.rftssn = season[input.month]; -- start of range season; keep this?
if 0~= input.month2 then
tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2);
end
else -- season–season year range
tCOinS_date.rftssn = season[input.month]; -- start of range season; keep this?
tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range
end
end
end
tCOinS_date.rftdate = date;
return; -- done
end
if 0 ~= input.day then
date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date
elseif 0 ~= input.month then
date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month
else
date = string.format ('%s', input.year); -- just year
end
if 0 ~= input.year2 then
if 0 ~= input.day2 then
date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date
elseif 0 ~= input.month2 then
date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month
else
date2 = string.format ('/%s', input.year2); -- just year
end
end
tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator
return;
end
--[[--------------------------< P A T T E R N S >--------------------------------------------------------------
this is the list of patterns for date formats that this module recognizes. Approximately the first half of these
patterns represent formats that might be reformatted into another format. Those that might be reformatted have
'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year),
'y' (year); second day, month, year have a '2' suffix.
These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration
because changes to this table require changes to check_date() and to reformatter() and reformat_date()
]]
local patterns = {
-- year-initial numerical year-month-day
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'},
-- month-initial: month day, year
['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'},
-- month-initial day range: month day–day, year; days are separated by endash
['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'},
-- day-initial: day month year
['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'},
-- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki
-- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'},
-- day-range-initial: day–day month year; days are separated by endash
['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'},
-- day initial month-day-range: day month - day month year; uses spaced endash
['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'},
-- month initial month-day-range: month day – month day, year; uses spaced endash
['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'},
-- day initial month-day-year-range: day month year - day month year; uses spaced endash
['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'},
-- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'},
-- these date formats cannot be converted, per se, but month name can be rendered short or long
-- month/season year - month/season year; separated by spaced endash
['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'},
-- month/season range year; months separated by endash
['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'},
-- month/season year or proper-name year; quarter year when First Quarter YYYY etc.
['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't
-- these date formats cannot be converted
['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash
['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash
['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY
}
--[[--------------------------< C H E C K _ D A T E >----------------------------------------------------------
Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only
allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day
months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons
must be spelled correctly. Future years beyond next year are not allowed.
If the date fails the format tests, this function returns false and does not return values for anchor_year and
COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets
its year from the year parameter if present otherwise CITEREF does not get a date value.
Inputs:
date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date)
Returns:
false if date string is not a real date; else
true, anchor_year, COinS_date
anchor_year can be used in CITEREF anchors
COinS_date is ISO 8601 format date; see make_COInS_date()
]]
local function check_date (date_string, param, tCOinS_date)
local year; -- assume that year2, months, and days are not used;
local year2 = 0; -- second year in a year range
local month = 0;
local month2 = 0; -- second month in a month range
local day = 0;
local day2 = 0; -- second day in a day range
local anchor_year;
local coins_date;
if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format
year, month, day = date_string:match (patterns['ymd'][1]);
if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar
anchor_year = year;
elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year
month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash
month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2=month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year
day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
--[[ NOT supported at en.wiki
elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed
anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
-- end NOT supported at en.wiki ]]
elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash
day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2 = month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash
day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]);
if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later;
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash
month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]);
if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash
day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
local century;
month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]);
if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
year2 = century..year2; -- add the century to year2 for comparisons
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
month = get_season_number(month, param);
elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash
month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]);
if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
month = get_season_number (month, param); -- for metadata
elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash
month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style
month = get_month_number(month);
month2 = get_month_number(month2);
elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
else
return false;
end
elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash
month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]);
if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end
if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season
month = get_month_number(month);
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end
else
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
end
year2 = year;
elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year
month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]);
if not is_valid_year(year) then return false; end
month = get_element_number(month, param); -- get month season quarter proper-name number or nil
if not month then return false; end -- not valid whatever it is
elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash
local century;
year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if in_array (param, {'date', 'publication-date', 'year'}) then
add_prop_cat ('year_range_abbreviated');
end
if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003
year2 = century .. year2; -- add the century to year2 for comparisons
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY
anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]);
if false == is_valid_year(year) then
return false;
end
else
return false; -- date format not one of the MOS:DATE approved formats
end
if 'access-date' == param then -- test accessdate here because we have numerical date parts
if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required
0 == year2 and 0 == month2 and 0 == day2 then -- none of these; accessdate must not be a range
if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then
return false; -- return false when accessdate out of bounds
end
else
return false; -- return false when accessdate is a range of two dates
end
end
local result=true; -- check whole dates for validity; assume true because not all dates will go through this test
if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date)
result = is_valid_date(year, month, day);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range)
result = is_valid_date(year, month, day);
result = result and is_valid_date(year, month, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range)
result = is_valid_date(year, month, day);
result = result and is_valid_date(year, month2, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range)
result = is_valid_date(year, month, day);
result = result and is_valid_date(year2, month2, day2);
end
if false == result then return false; end
if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values
make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS
end
return true, anchor_year; -- format is good and date string represents a real date
end
--[[--------------------------< D A T E S >--------------------------------------------------------------------
Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns
true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in
the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes).
Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially,
parameters with errors are added to the <error_list> sequence table as the dates are tested.
]]
local function dates(date_parameters_list, tCOinS_date, error_list)
local anchor_year; -- will return as nil if the date being tested is not |date=
local COinS_date; -- will return as nil if the date being tested is not |date=
local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999
local good_date = false;
for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(v.val) then -- if the parameter has a value
v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year=
local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested
if 'date' == k then
anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter
good_date = is_valid_year(year);
elseif 'year' == k then
good_date = is_valid_year(year);
end
elseif 'date' == k then -- if the parameter is |date=
if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date
elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date
else
good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date
end
elseif 'year' == k then -- if the parameter is |year= it should hold only a year value
if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)");
end
elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date=
good_date = check_date (v.val, k); -- go test the date
if true == good_date then -- if the date is a valid date
good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo; no: returns 9999
end
else -- any other date-holding parameter
good_date = check_date (v.val, k); -- go test the date
end
if false == good_date then -- assemble one error message so we don't add the tracking category multiple times
table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list
end
end
end
return anchor_year, embargo_date; -- and done
end
--[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------
Compare the value provided in |year= with the year value(s) provided in |date=. This function returns a numeric value:
0 - year value does not match the year value in date
1 - (default) year value matches the year value in date or one of the year values when date contains two years
2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx)
]]
local function year_date_check (year_string, date_string)
local year;
local date1;
local date2;
local result = 1; -- result of the test; assume that the test passes
year = year_string:match ('(%d%d%d%d?)');
if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx
date1 = date_string:match ('(%d%d%d%d)');
year = year_string:match ('(%d%d%d%d)');
if year ~= date1 then
result = 0; -- years don't match
else
result = 2; -- years match; but because disambiguated, don't add to maint cat
end
elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years
date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)");
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges
local century;
date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)");
date2 = century..date2; -- convert YY to YYYY
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year
date1 = date_string:match ("(%d%d%d%d?)");
if year ~= date1 then
result = 0;
end
else
result = 0; -- no recognizable year in date
end
return result;
end
--[[--------------------------< R E F O R M A T T E R >--------------------------------------------------------
reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be
reformatted. Does the grunt work for reformat_dates().
The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds:
format string used by string.format()
identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures
from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1]
Items in patterns{} have the general form:
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where:
['ymd'] is pattern_idx
patterns['ymd'][1] is the match pattern with captures for mw.ustring.match()
patterns['ymd'][2] is an indicator letter identifying the content of the first capture
patterns['ymd'][3] ... the second capture etc.
when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier
characters as indexes into t{} For the above, a ymd date is in t{} as:
t.y = first capture (year), t.m = second capture (month), t.d = third capture (day)
To reformat, this function is called with the pattern_idx that matches the current format of the date and with
format_param set to the desired format. This function loads table t{} as described and then calls string.format()
with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according
to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2..
]]
local re_formats = {
['ymd'] = { -- date format is ymd; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Mdy'] = { -- date format is Mdy; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['dMy'] = { -- date format is dMy; reformat to:
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Md-dy'] = { -- date format is Md-dy; reformat to:
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy
},
['d-dMy'] = { -- date format is d-d>y; reformat to:
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy
},
['dM-dMy'] = { -- date format is dM-dMy; reformat to:
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy
},
['Md-Mdy'] = { -- date format is Md-Mdy; reformat to:
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy
},
['dMy-dMy'] = { -- date format is dMy-dMy; reformat to:
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy
},
['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to:
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy
},
['My-My'] = { -- these for long/short reformatting
['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic
},
['M-My'] = { -- these for long/short reformatting
['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic
},
['My'] = { -- these for long/short reformatting
['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic
},
-- ['yMd'] = { -- not supported at en.wiki
-- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
-- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- },
}
local function reformatter (date, pattern_idx, format_param, mon_len)
if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- not in this set of date format patterns then not a reformattable date
end
if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd
end
if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either
format_param = 'any'; -- so format-agnostic
end
-- yMd is not supported at en.wiki
-- if yMd is supported at your wiki, uncomment the next line
-- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki
-- if yMd is supported at your wiki, remove or comment-out the next line
if 'yMd' == format_param then -- yMd not supported at en.wiki
return; -- not a reformattable date
end
local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1]
c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures
local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..]
[patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter
[patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter;
[patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil;
[patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error
[patterns[pattern_idx][6] or 'x'] = c5;
[patterns[pattern_idx][7] or 'x'] = c6;
[patterns[pattern_idx][8] or 'x'] = c7;
};
if t.a then -- if this date has an anchor year capture
t.y = t.a; -- use the anchor year capture when reassembling the date
end
if tonumber(t.m) then -- if raw month is a number (converting from ymd)
if 's' == mon_len then -- if we are to use abbreviated month names
t.m = cfg.date_names['inv_local_s'][tonumber(t.m)]; -- convert it to a month name
else
t.m = cfg.date_names['inv_local_l'][tonumber(t.m)]; -- convert it to a month name
end
t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present
elseif 'ymd' == format_param then -- when converting to ymd
if 1582 > tonumber(t.y) then -- ymd format dates not allowed before 1582
return;
end
t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits
t.d = string.format ('%02d', t.d);
elseif mon_len then -- if mon_len is set to either 'short' or 'long'
for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both
if t[mon] then
t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic)
if 0 == t[mon] then return; end -- seasons and named dates can't be converted
t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_s'][t[mon]]) or cfg.date_names['inv_local_l'][t[mon]]; -- fetch month name according to length
end
end
end
local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string
t[re_formats[pattern_idx][format_param][2]], -- named captures from t{}
t[re_formats[pattern_idx][format_param][3]],
t[re_formats[pattern_idx][format_param][4]],
t[re_formats[pattern_idx][format_param][5]],
t[re_formats[pattern_idx][format_param][6]],
t[re_formats[pattern_idx][format_param][7]],
t[re_formats[pattern_idx][format_param][8]]
);
return new_date;
end
--[[-------------------------< R E F O R M A T _ D A T E S >--------------------------------------------------
Reformats existing dates into the format specified by format.
format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes
access- and archive-dates; otherwise these dates are not reformatted.
This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of
the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in
{{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate
values for |cs1-dates= are:
l - all dates are rendered with long month names
ls - publication dates use long month names; access-/archive-dates use abbreviated month names
ly - publication dates use long month names; access-/archive-dates rendered in ymd format
s - all dates are rendered with abbreviated (short) month names
sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format
y - all dates are rendered in ymd format
the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the
value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates=
empty, omitted, or invalid) where xxx shall be either of dmy or mdy.
dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the
list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function
returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter().
]]
local function reformat_dates (date_parameters_list, format)
local all = false; -- set to false to skip access- and archive-dates
local len_p = 'l'; -- default publication date length shall be long
local len_a = 'l'; -- default access-/archive-date length shall be long
local result = false;
local new_date;
if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}};
format = format:match('(%a+)%-all'); -- extract the format
all = true; -- all dates are long format dates because this keyword doesn't specify length
elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only
all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates
format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords
if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted
format = 'ymd'; -- override {{use xxx dates}}
elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then
len_a = len_p; -- in case len_a not set
end
end -- else only publication dates and they are long
for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) then -- if the parameter has a value
if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way
for pattern_idx, pattern in pairs (patterns) do
if mw.ustring.match (param_val.val, pattern[1]) then
if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date
new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting
else -- all other dates
new_date = reformatter (param_val.val, pattern_idx, format, len_p);
end
if new_date then -- set when date was reformatted
date_parameters_list[param_name].val = new_date; -- update date in date list
result = true; -- and announce that changes have been made
end
end -- if
end -- for
end -- if
end -- if
end -- for
return result; -- declare boolean result and done
end
--[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >----------------------------------------
Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2
template has any date errors.
Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false.
]]
local function date_hyphen_to_dash (date_parameters_list)
local result = false;
local n;
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) then
if not mw.ustring.match (param_val.val, '%d%d%d%d%-%d%d%-%d%d') then -- for those that are not ymd dates (ustring because here digits may not be Western)
param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash
if 0 ~= n then
date_parameters_list[param_name].val = param_val.val; -- update the list
result = true;
end
end
end
end
return result; -- so we know if any hyphens were replaced
end
--[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------
Attempts to translate English month names to local-language month names using names supplied by MediaWiki's
date parser function. This is simple name-for-name replacement and may not work for all languages.
if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits.
This will also translate ymd dates.
]]
local function date_name_xlate (date_parameters_list, xlt_dig)
local xlate;
local mode; -- long or short month names
local modified = false;
local date;
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(param_val.val) then -- if the parameter has a value
date = param_val.val;
for month in mw.ustring.gmatch (date, '%a+') do -- iterate through all dates in the date (single date or date range)
if cfg.date_names.en.long[month] then
mode = 'F'; -- English name is long so use long local name
elseif cfg.date_names.en.short[month] then
mode = 'M'; -- English name is short so use short local name
else
mode = nil; -- not an English month name; could be local language month name or an English season name
end
if mode then -- might be a season
xlate = lang_object:formatDate(mode, '1' .. month); -- translate the month name to this local language
date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
if xlt_dig then -- shall we also translate digits?
date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits'
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
end
return modified;
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
-- set_message = utilities_page_ptr.set_message;
wrap_style = utilities_page_ptr.wrap_style;
cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return { -- return exported functions
dates = dates,
year_date_check = year_date_check,
reformat_dates = reformat_dates,
date_hyphen_to_dash = date_hyphen_to_dash,
date_name_xlate = date_name_xlate,
set_selected_modules = set_selected_modules
}
ds0l4tghd9b1ze47i4ysqzmmocnzkhm
Module:Citation/CS1/Identifiers
828
1464
3232
3231
2020-10-11T01:32:08Z
Chrisb
1
1 revision imported
3231
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities
substitute, make_wikilink;
local z; -- table of tables defined in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< P A G E S C O P E V A R I A B L E S >--------------------------------------
declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here
]]
local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title=
--============================<< H E L P E R F U N C T I O N S >>============================================
--[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >----------------------------
as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata.
returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else
for identifiers that do not have q, returns nil
for wikis that do not have mw.wikibase installed, returns nil
]]
local function wikidata_article_name_get (q)
if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki
return nil; -- abandon
end
local wd_article;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki
if wd_article then
wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required
end
return wd_article; -- article title from WD; nil else
end
--[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------
common function to create identifier link label from handler table or from Wikidata
returns the first available of
1. redirect from local wiki's handler table (if enabled)
2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language)
3. label specified in the local wiki's handler table
]]
local function link_label_make (handler)
local wd_article;
if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive
wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it;
end
return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link;
end
--[[--------------------------< E X T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style external link
NB. Wikidata P1630 has a formatter URL with $1 placeholder for the ID which could be worked into our prefix/id/suffix
string, either overriding local definitions (auto-update) or as fallback for identifiers without local definitions.
But is expensive and could be risky if WD gets vandalized.
See Template_talk:Authority_control/Archive_8#Use_Wikidata_as_the_source_for_the_external_link
]]
local function external_link_id (options)
local url_string = options.id;
local ext_link;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
local wd_article; -- article title from Wikidata
if options.encode == true or options.encode == nil then
url_string = mw.uri.encode( url_string );
end
if options.auto_link and is_set (options.access) then
auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix});
end
ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki(options.id));
if is_set(options.access) then
ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock
end
return table.concat ({
make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order)
options.separator or ' ',
ext_link
});
end
--[[--------------------------< I N T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style internal link
]]
local function internal_link_id(options)
local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
return table.concat (
{
make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label
options.separator or ' ', -- add the separator
make_wikilink (
table.concat (
{
options.prefix,
id, -- translated to Western digits
options.suffix or ''
}),
substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis
); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required?
});
end
--[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------
Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against today's date. If embargo date is
in the future, returns the content of |pmc-embargo-date=; otherwise, returns an empty string because the embargo has expired or because
|pmc-embargo-date= was not set in this cite.
]]
local function is_embargoed (embargo)
if is_set (embargo) then
local lang = mw.getContentLanguage();
local good1, embargo_date, todays_date;
good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo);
todays_date = lang:formatDate ('U');
if good1 then -- if embargo date is a good date
if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future?
return embargo; -- still embargoed
else
set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat
return ''; -- unset because embargo has expired
end
end
end
return ''; -- |pmc-embargo-date= not set return empty string
end
--[=[-------------------------< I S _ V A L I D _ B I O R X I V _ D A T E >------------------------------------
returns true if:
2019-12-11T00:00Z <= biorxiv_date < today + 2 days
The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400
biorxiv_date is the date provided in those |biorxiv= parameter values that are dated at time 00:00:00 UTC
today is the current date at time 00:00:00 UTC plus 48 hours
if today is 2015-01-01T00:00:00 then
adding 24 hours gives 2015-01-02T00:00:00 – one second more than today
adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow
This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser
apparently doesn't understand non-English date month names. This function will always return false when the date
contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that
call this function with YYYY-MM-DD format dates.
]=]
local function is_valid_biorxiv_date (biorxiv_date)
local good1, good2;
local biorxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates
local lang_object = mw.getContentLanguage();
good1, biorxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', biorxiv_date ); -- convert biorxiv_date value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand
biorxiv_ts = tonumber (biorxiv_ts) or lang_object:parseFormattedNumber (biorxiv_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix timestamp
end
return ((1576022400 <= biorxiv_ts) and (biorxiv_ts < tomorrow_ts)) -- 2012-12-11T00:00Z <= biorxiv_date < tomorrow's date
end
--[[--------------------------< IS _ V A L I D _ I S X N >-----------------------------------------------------
ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit.
ISBN-13 is checked in isbn().
If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length
and stripped of dashes, spaces and other non-ISxN characters.
]]
local function is_valid_isxn (isxn_str, len)
local temp = 0;
isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58
len = len + 1; -- adjust to be a loop counter
for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum
if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58)
temp = temp + 10*( len - i ); -- it represents 10 decimal
else
temp = temp + tonumber( string.char(v) )*(len-i);
end
end
return temp % 11 == 0; -- returns true if calculation result is zero
end
--[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >-----------------------------------------------
ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit.
If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length
and stripped of dashes, spaces and other non-ISxN-13 characters.
]]
local function is_valid_isxn_13 (isxn_str)
local temp=0;
isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39
for i, v in ipairs( isxn_str ) do
temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit
end
return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct
end
--[[--------------------------< N O R M A L I Z E _ L C C N >--------------------------------------------------
LCCN normalization (http://www.loc.gov/marc/lccn-namespace.html#normalization)
1. Remove all blanks.
2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash.
3. If there is a hyphen in the string:
a. Remove it.
b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out):
1. All these characters should be digits, and there should be six or less. (not done in this function)
2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six.
Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function.
]]
local function normalize_lccn (lccn)
lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace
if nil ~= string.find (lccn, '/') then
lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it
end
local prefix
local suffix
prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix
if nil ~= suffix then -- if there was a hyphen
suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6
lccn = prefix..suffix; -- reassemble the LCCN
end
return lccn;
end
--============================<< I D E N T I F I E R F U N C T I O N S >>====================================
--[[--------------------------< A R X I V >--------------------------------------------------------------------
See: http://arxiv.org/help/arxiv_identifier
format and error check arXiv identifier. There are three valid forms of the identifier:
the first form, valid only between date codes 9107 and 0703, is:
arXiv:<archive>.<class>/<date code><number><version>
where:
<archive> is a string of alpha characters - may be hyphenated; no other punctuation
<class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
first digit of YY for this form can only 9 and 0
<number> is a three-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented)
the second form, valid from April 2007 through December 2014 is:
arXiv:<date code>.<number><version>
where:
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
<number> is a four-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces
the third form, valid from January 2015 is:
arXiv:<date code>.<number><version>
where:
<date code> and <version> are as defined for 0704-1412
<number> is a five-digit number
]]
local function arxiv (id, class)
local handler = cfg.id_handlers['ARXIV'];
local year, month, version;
local err_cat = false; -- assume no error message
local text; -- output text
if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version
year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$");
year = tonumber(year);
month = tonumber(month);
if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month
((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok?
err_cat = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$");
year = tonumber(year);
month = tonumber(month);
if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years)
((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)?
err_cat = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$");
year = tonumber(year);
month = tonumber(month);
if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years)
err_cat = true; -- flag for error message
end
else
err_cat = true; -- not a recognized format; flag for error message
end
err_cat = err_cat and table.concat ({' ', set_message ('err_bad_arxiv')}) or ''; -- set error message if flag is true
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}) .. err_cat;
if is_set (class) then
if id:match ('^%d+') then
text = table.concat ({text, ' [[//arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink
else
text = table.concat ({text, ' ', set_message ('err_class_ignored')});
end
end
return text;
end
--[[--------------------------< B I B C O D E >--------------------------------------------------------------------
Validates (sort of) and formats a bibcode ID.
Format for bibcodes is specified here: http://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes
But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters
and first four digits must be a year. This function makes these tests:
length must be 19 characters
characters in position
1–4 must be digits and must represent a year in the range of 1000 – next year
5 must be a letter
6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. )
9–18 must be letter, digit, or dot
19 must be a letter or dot
]]
local function bibcode (id, access)
local handler = cfg.id_handlers['BIBCODE'];
local err_type;
local year;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = access});
if 19 ~= id:len() then
err_type = cfg.err_msg_supl.length;
else
year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$");
if not year then -- if nil then no pattern match
err_type = cfg.err_msg_supl.value; -- so value error
else
local next_year = tonumber(os.date ('%Y')) + 1; -- get the current year as a number and add one for next year
year = tonumber (year); -- convert year portion of bibcode to a number
if (1000 > year) or (year > next_year) then
err_type = cfg.err_msg_supl.year; -- year out of bounds
end
if id:find('&%.') then
err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter)
end
end
end
if is_set (err_type) then -- if there was an error detected
text = text .. ' ' .. set_message( 'err_bad_bibcode', {err_type});
end
return text;
end
--[[--------------------------< B I O R X I V >-----------------------------------------------------------------
Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly
6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd.
date and suffixed with an optional version identifier.
The bioRxiv ID is the string of characters:
https://doi.org/10.1101/078733 -> 10.1101/078733
or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits:
https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2
see https://www.biorxiv.org/about-biorxiv
]]
local function biorxiv(id)
local handler = cfg.id_handlers['BIORXIV'];
local err_cat = true; -- flag; assume that there will be an error
local patterns = {
'^10.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11)
'^10.1101/(20[1-9]%d)%.([01]%d)%.([0-3]%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11)
'^10.1101/(20[1-9]%d)%.([01]%d)%.([0-3]%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11)
}
for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match
if id:match (pattern) then
local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier
if m then -- m is nil when id is the six-digit form
if not is_valid_biorxiv_date (y .. '-' .. m .. '-' .. d) then -- validate the encoded date; TODO: don't ignore leap-year and actual month lengths ({{#time:}} is a poor date validator)
break; -- date fail; break out early so we don't unset the error message
end
end
err_cat = nil; -- we found a match so unset the error message
break; -- and done
end
end -- err_cat remains set here when no match
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator,
encode = handler.encode, access = handler.access}) .. (err_cat and (' ' .. set_message( 'err_bad_biorxiv')) or '');
end
--[[--------------------------< C I T E S E E R X >------------------------------------------------------------
CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org).
The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure
]]
local function citeseerx (id)
local handler = cfg.id_handlers['CITESEERX'];
local matched;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = handler.access});
matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$");
if not matched then
text = text .. ' ' .. set_message( 'err_bad_citeseerx' );
end
return text;
end
--[[--------------------------< D O I >------------------------------------------------------------------------
Formats a DOI and checks for DOI errors.
DOI names contain two parts: prefix and suffix separated by a forward slash.
Prefix: directory indicator '10.' followed by a registrant code
Suffix: character string of any length chosen by the registrant
This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends
with a period or a comma, this function will emit a bad_doi error message.
DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash,
and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in DOI names.
]]
local function doi (id, inactive, access, ignore_invalid)
local err_cat;
local handler = cfg.id_handlers['DOI'];
local text;
if is_set (inactive) then
local inactive_year = inactive:match("%d%d%d%d") or ''; -- try to get the year portion from the inactive date
local inactive_month, good;
if is_set (inactive_year) then
if 4 < inactive:len() then -- inactive date has more than just a year (could be anything)
local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki
good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date
if not good then
inactive_month = nil; -- something went wrong so make sure this is unset
end
end
else
inactive_year = nil; -- |doi-broken-date= has something but it isn't a date
end
if is_set(inactive_year) and is_set (inactive_month) then
set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '});
elseif is_set(inactive_year) then
set_message ('maint_doi_inactive_dated', {inactive_year, '', ''});
else
set_message ('maint_doi_inactive');
end
inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')';
end
local registrant = id:match ('^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form
local registrant_err_patterns = { -- these patterns are for code ranges that are not supported
'^[^1-3]%d%d%d%d%.%d%d*$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999
'^[^1-4]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 40000+); accepts: 10000–49999
'^[^1-9]%d%d%d%.%d%d*$', -- 4 digits with subcode (0xxx); accepts: 1000–9999
'^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999
'^%d%d%d%d%d%d+', -- 6 or more digits
'^%d%d?%d?$', -- less than 4 digits without subcode (with subcode is legitimate)
'^5555$', -- test registrant will never resolve
'%s', -- any space character in registrant
}
if not ignore_invalid then
if registrant then -- when DOI has proper form
for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns
if registrant:match (pattern) then -- to validate registrant codes
err_cat = ' ' .. set_message ('err_bad_doi'); -- when found, mark this DOI as bad
break; -- and done
end
end
else
err_cat = ' ' .. set_message ('err_bad_doi'); -- invalid directory or malformed
end
else
set_message ('maint_doi_ignore');
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access,
auto_link = not (err_cat or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored
}) .. (inactive or '');
return text .. (err_cat and err_cat or ''); -- parentheses required
end
--[[--------------------------< H D L >------------------------------------------------------------------------
Formats an HDL with minor error checking.
HDL names contain two parts: prefix and suffix separated by a forward slash.
Prefix: character string using any character in the UCS-2 character set except '/'
Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant
This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends
with a period or a comma, this function will emit a bad_hdl error message.
HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and
terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in HDLs.
Query string parameters are named here: http://www.handle.net/proxy_servlet.html. query strings are not displayed
but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we
have to detect the query string so that it isn't URL-encoded with the rest of the identifier.
]]
local function hdl(id, access)
local handler = cfg.id_handlers['HDL'];
local query_params = { -- list of known query parameters from http://www.handle.net/proxy_servlet.html
'noredirect',
'ignore_aliases',
'auth',
'cert',
'index',
'type',
'urlappend',
'locatt',
'action',
}
local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string
local found;
if hdl then -- when there are query strings, this is the handle identifier portion
for _, q in ipairs (query_params) do -- spin through the list of query parameters
if param:match ('^' .. q) then -- if the query string begins with one of the parameters
found = true; -- announce a find
break; -- and stop looking
end
end
end
if found then
id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not
else
suffix = ''; -- make sure suffix is empty string for concatenation else
end
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access})
if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma
text = text .. ' ' .. set_message( 'err_bad_hdl' );
end
return text;
end
--[[--------------------------< I S B N >----------------------------------------------------------------------
Determines whether an ISBN string is valid
]]
local function isbn (isbn_str, ignore_invalid)
local handler = cfg.id_handlers['ISBN'];
local function return_result (check, err_type) -- local function to handle the various returns
local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = isbn_str, separator = handler.separator});
if ignore_invalid then -- if ignoring ISBN errors
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error
else -- here when not ignoring
if not check then -- and there is an error
return ISBN .. set_message ('err_bad_isbn', {err_type}, false, ' '); -- display an error message
end
end
return ISBN;
end
if nil ~= isbn_str:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X
end
local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace
local len = id:len();
if len ~= 10 and len ~= 13 then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if len == 10 then
if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position
return return_result (false, cfg.err_msg_supl.form);
end
return return_result (is_valid_isxn(id, 10), cfg.err_msg_supl.check);
else
if id:match ('^%d+$') == nil then
return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits
end
if id:match ('^97[89]%d*$') == nil then
return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979
end
if id:match ('^9790') then
return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN
end
return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check);
end
end
--[[--------------------------< A S I N >----------------------------------------------------------------------
Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha
characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit
ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=.
Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit.
|asin=630....... is (apparently) not a legitimate ISBN though it checksums as one; these do not cause this
function to emit the maint_asin message
This function is positioned here because it calls isbn()
]]
local function asin (id, domain)
local err_cat = ""
if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then
err_cat = ' ' .. set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters
else
if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X)
if isbn (id) then -- see if ASIN value is or validates as ISBN-10
if not id:find ('^630') then -- 630xxxxxxx is (apparently) not a valid isbn prefix but is used by amazon as a numeric identifier
set_message ('maint_asin'); -- begins with something other than 630 so possibly an isbn
end
elseif not is_set (err_cat) then
err_cat = ' ' .. set_message ('err_bad_asin'); -- ASIN is not ISBN-10
end
elseif not id:match("^%u[%d%u]+$") then
err_cat = ' ' .. set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha
end
end
if not is_set(domain) then
domain = "com";
elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom
domain = "co." .. domain;
elseif in_array (domain, {'au', 'br', 'mx'}) then -- Australia, Brazil, Mexico
domain = "com." .. domain;
end
local handler = cfg.id_handlers['ASIN'];
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. domain .. "/dp/",
id = id, encode = handler.encode, separator = handler.separator}) .. err_cat;
end
--[[--------------------------< I S M N >----------------------------------------------------------------------
Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the
same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf
section 2, pages 9–12.
]]
local function ismn (id)
local handler = cfg.id_handlers['ISMN'];
local text;
local valid_ismn = true;
local id_copy;
id_copy = id; -- save a copy because this testing is destructive
id = id:gsub ('[%s-]', ''); -- remove hyphens and white space
if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790
valid_ismn = false;
else
valid_ismn=is_valid_isxn_13 (id); -- validate ISMN
end
-- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to
-- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode})
text = table.concat ( -- because no place to link to yet
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id_copy
});
if false == valid_ismn then
text = text .. ' ' .. set_message( 'err_bad_ismn' ) -- add an error message if the ISMN is invalid
end
return text;
end
--[[--------------------------< I S S N >----------------------------------------------------------------------
Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but
has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked
like this:
|issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link
This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length
and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters
other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The
ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits.
]]
local function issn (id, e, ignore_invalid)
local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate
local handler;
local text;
local valid_issn = true;
handler = cfg.id_handlers[e and 'EISSN' or 'ISSN'];
id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace
if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position
valid_issn = false; -- wrong length or improper character
else
valid_issn = is_valid_isxn(id, 8); -- validate ISSN
end
if true == valid_issn then
id = string.sub( id, 1, 4 ) .. "-" .. string.sub( id, 5 ); -- if valid, display correctly formatted version
else
id = issn_copy; -- if not valid, show the invalid ISSN with error message
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if ignore_invalid then
set_message ('maint_issn_ignore');
else
if false == valid_issn then
text = text .. ' ' .. set_message ('err_bad_issn', e and 'e' or ''); -- add an error message if the ISSN is invalid
end
end
return text
end
--[[--------------------------< J F M >-----------------------------------------------------------------------
A numerical identifier in the form nn.nnnn.nn
]]
local function jfm (id)
local handler = cfg.id_handlers['JFM'];
local id_num;
local err_cat = '';
id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier
if is_set (id_num) then
set_message ('maint_jfm_format');
else -- plain number without mr prefix
id_num = id; -- if here id does not have prefix
end
if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then
id = id_num; -- jfm matches pattern
else
err_cat = ' ' .. set_message( 'err_bad_jfm' ); -- set an error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat;
end
--[[--------------------------< L C C N >----------------------------------------------------------------------
Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of
the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits.
http://info-uri.info/registry/OAIHandler?verb=GetRecord&metadataPrefix=reg&identifier=info:lccn/
length = 8 then all digits
length = 9 then lccn[1] is lowercase alpha
length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits
length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits
length = 12 then lccn[1] and lccn[2] are both lowercase alpha
]]
local function lccn(lccn)
local handler = cfg.id_handlers['LCCN'];
local err_cat = ''; -- presume that LCCN is valid
local id = lccn; -- local copy of the LCCN
id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes)
local len = id:len(); -- get the length of the LCCN
if 8 == len then
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits)
err_cat = ' ' .. set_message ('err_bad_lccn'); -- set an error message
end
elseif 9 == len then -- LCCN should be adddddddd
if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern?
err_cat = ' ' .. set_message ('err_bad_lccn'); -- set an error message
end
elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ...
if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern
err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message
end
end
elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd
if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns
err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message
end
elseif 12 == len then -- LCCN should be aadddddddddd
if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern
err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message
end
else
err_cat = ' ' .. set_message ('err_bad_lccn'); -- wrong length, set an error message
end
if not is_set (err_cat) and nil ~= lccn:find ('%s') then
err_cat = ' ' .. set_message ('err_bad_lccn'); -- lccn contains a space, set an error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode}) .. err_cat;
end
--[[--------------------------< M R >--------------------------------------------------------------------------
A seven digit number; if not seven digits, zero-fill leading digits to make seven digits.
]]
local function mr (id)
local handler = cfg.id_handlers['MR'];
local id_num;
local id_len;
local err_cat = '';
id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix
if is_set (id_num) then
set_message ('maint_mr_format'); -- add maint cat
else -- plain number without mr prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
id_len = id_num and id_num:len() or 0;
if (7 >= id_len) and (0 ~= id_len) then
id = string.rep ('0', 7-id_len ) .. id_num; -- zero-fill leading digits
else
err_cat = ' ' .. set_message ('err_bad_mr'); -- set an error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat;
end
--[[--------------------------< O C L C >----------------------------------------------------------------------
Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}}
archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html
]]
local function oclc (id)
local handler = cfg.id_handlers['OCLC'];
local number;
local err_msg = ''; -- empty string for concatenation
if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters)
number = id:match('ocm(%d+)'); -- get the number
elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters)
number = id:match('ocn(%d+)'); -- get the number
elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters)
number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number
elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field
number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number
if 9 < number:len() then
number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers
end
elseif id:match('^%d+$') then -- no prefix
number = id; -- get the number
if 10 < number:len() then
number = nil; -- constrain to 1 to 10 digits; change this when OCLC issues 11-digit numbers
end
end
if number then -- proper format
id = number; -- exclude prefix, if any, from external link
else
err_msg = ' ' .. set_message ('err_bad_oclc') -- add an error message if the id is malformed
end
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_msg;
return text;
end
--[[--------------------------< O P E N L I B R A R Y >--------------------------------------------------------
Formats an OpenLibrary link, and checks for associated errors.
]]
local function openlibrary(id, access)
local handler = cfg.id_handlers['OL'];
local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W';
local error_msg = '';
local prefix = { -- these are appended to the handler.prefix according to code
['A']='authors/OL',
['M']='books/OL',
['W']='works/OL',
['X']='OL' -- not a code; spoof when 'code' in id is invalid
};
if not ident then
code = 'X'; -- no code or id completely invalid
ident = id; -- copy id to ident so that we display the flawed identifier
error_msg = ' ' .. set_message ('err_bad_ol');
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. prefix[code],
id = ident, separator = handler.separator, encode = handler.encode,
access = access}) .. error_msg;
end
--[[--------------------------< P M C >------------------------------------------------------------------------
Format a PMC, do simple error checking, and check for embargoed articles.
The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not
be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the
PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix.
PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation
has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed ()
returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string.
PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less
than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued.
]]
local function pmc (id, embargo)
local handler = cfg.id_handlers['PMC'];
local err_cat;
local id_num;
local text;
id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix
if is_set (id_num) then
set_message ('maint_pmc_format');
else -- plain number without PMC prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber(id_num); -- convert id_num to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries
err_cat = ' ' .. set_message ('err_bad_pmc'); -- set an error message
else
id = tostring (id_num); -- make sure id is a string
end
else -- when id format incorrect
err_cat = ' ' .. set_message ('err_bad_pmc'); -- set an error message
end
if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed?
text = table.concat ( -- still embargoed so no external link
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id,
(err_cat and err_cat or '') -- parens required
});
else
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access,
auto_link = not err_cat and 'pmc' or nil -- do not auto-link when PMC has error
}) .. (err_cat and err_cat or ''); -- parentheses required
end
return text;
end
--[[--------------------------< P M I D >----------------------------------------------------------------------
Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This
code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable
test_limit will need to be updated periodically as more PMIDs are issued.
]]
local function pmid(id)
local handler = cfg.id_handlers['PMID'];
local err_cat = ''; -- presume that PMID is valid
if id:match("[^%d]") then -- if PMID has anything but digits
err_cat = ' ' .. set_message ('err_bad_pmid'); -- set an error message
else -- PMID is only digits
local id_num = tonumber(id); -- convert id to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries
err_cat = ' ' .. set_message ('err_bad_pmid'); -- set an error message
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat;
end
--[[--------------------------< S 2 C I D >--------------------------------------------------------------------
Format an S2CID, do simple error checking
S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only
digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically
as more S2CIDs are issued.
]]
local function s2cid (id, access)
local handler = cfg.id_handlers['S2CID'];
local err_cat = ''; -- presume that S2CID is valid
local id_num;
local text;
id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber(id_num); -- convert id_num to a number for range testing
if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries
err_cat = ' ' .. set_message ('bad_s2cid_err'); -- set an error message
end
else -- when id format incorrect
err_cat = ' ' .. set_message ('bad_s2cid_err'); -- set an error message
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id:gsub ('%.%a%a', ''), separator = handler.separator, encode = handler.encode, access = access}) .. err_cat;
return text;
end
--[[--------------------------< S B N >------------------------------------------------------------------------
9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits
]]
local function sbn (id, ignore_invalid)
local handler = cfg.id_handlers['SBN'];
local function return_result (check, err_type) -- local function to handle the various returns
local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator});
if not ignore_invalid then -- if not ignoring SBN errors
if not check then
return SBN .. set_message ('err_bad_sbn', {err_type}, false, ' '); -- display an error message
end
else
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only)
end
return SBN;
end
if id:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X
end
local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests
if 9 ~= ident:len() then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if ident:match ('^%d*X?$') == nil then
return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position
end
return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check);
end
--[[--------------------------< S S R N >----------------------------------------------------------------------
Format an SSRN, do simple error checking
SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is
only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need
to be updated periodically as more SSRNs are issued.
]]
local function ssrn (id)
local handler = cfg.id_handlers['SSRN'];
local err_cat = ''; -- presume that SSRN is valid
local id_num;
local text;
id_num = id:match ('^%d+$'); -- id must be all digits
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber(id_num); -- convert id_num to a number for range testing
if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries
err_cat = ' ' .. set_message ('err_bad_ssrn'); -- set an error message
end
else -- when id format incorrect
err_cat = ' ' .. set_message ('err_bad_ssrn'); -- set an error message
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}) .. err_cat;
return text;
end
--[[--------------------------< U S E N E T _ I D >------------------------------------------------------------
Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in
'<' and/or '>' angle brackets.
]]
local function usenet_id (id)
local handler = cfg.id_handlers['USENETID'];
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>'
text = text .. ' ' .. set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid
end
return text
end
--[[--------------------------< Z B L >-----------------------------------------------------------------------
A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional
format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/
temporary format is apparently eight digits. Anything else is an error
]]
local function zbl (id)
local handler = cfg.id_handlers['ZBL'];
local err_cat = '';
if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format?
set_message ('maint_zbl'); -- yes, add maint cat
elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format?
err_cat = ' ' .. set_message ('err_bad_zbl'); -- no, set an error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat;
end
--============================<< I N T E R F A C E F U N C T I O N S >>==========================================
--[[--------------------------< B U I L D _ I D _ L I S T >--------------------------------------------------------
Takes a table of IDs created by extract_ids() and turns it into a table of formatted ID outputs.
inputs:
id_list – table of identifiers built by extract_ids()
options – table of various template parameter values used to modify some manually handled identifiers
]]
local function build_id_list( id_list, options )
local new_list, handler = {};
local accept;
local function fallback(k) return { __index = function(t,i) return cfg.id_handlers[k][i] end } end;
for k, v in pairs( id_list ) do
v, accept = has_accept_as_written (v); -- remove and note accept-as-written markup if present
-- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table
-- fallback to read-only cfg
handler = setmetatable( { ['id'] = v, ['access'] = options.IdAccessLevels[k] }, fallback(k) );
if handler.mode == 'external' then
table.insert( new_list, {handler.label, external_link_id( handler ) } );
elseif handler.mode == 'internal' then
table.insert( new_list, {handler.label, internal_link_id( handler ) } );
elseif handler.mode ~= 'manual' then
error( cfg.messages['unknown_ID_mode'] );
elseif k == 'ARXIV' then
table.insert( new_list, {handler.label, arxiv( v, options.Class ) } );
elseif k == 'ASIN' then
table.insert( new_list, {handler.label, asin( v, options.ASINTLD ) } );
elseif k == 'BIBCODE' then
table.insert( new_list, {handler.label, bibcode( v, handler.access ) } );
elseif k == 'BIORXIV' then
table.insert( new_list, {handler.label, biorxiv( v ) } );
elseif k == 'CITESEERX' then
table.insert( new_list, {handler.label, citeseerx( v ) } );
elseif k == 'DOI' then
table.insert( new_list, {handler.label, doi( v, options.DoiBroken, handler.access, accept) } );
elseif k == 'EISSN' then
table.insert( new_list, {handler.label, issn( v, true, accept) } ); -- true distinguishes EISSN from ISSN
elseif k == 'HDL' then
table.insert( new_list, {handler.label, hdl( v, handler.access ) } );
elseif k == 'ISBN' then
table.insert( new_list, {handler.label, isbn (v, (accept or options.IgnoreISBN)) } );
elseif k == 'ISMN' then
table.insert( new_list, {handler.label, ismn( v ) } );
elseif k == 'ISSN' then
table.insert( new_list, {handler.label, issn( v, false, accept) } );
elseif k == 'JFM' then
table.insert( new_list, {handler.label, jfm( v ) } );
elseif k == 'LCCN' then
table.insert( new_list, {handler.label, lccn( v ) } );
elseif k == 'MR' then
table.insert( new_list, {handler.label, mr( v ) } );
elseif k == 'OCLC' then
table.insert( new_list, {handler.label, oclc( v ) } );
elseif k == 'OL' or k == 'OLA' then
table.insert( new_list, {handler.label, openlibrary( v, handler.access ) } );
elseif k == 'PMC' then
table.insert( new_list, {handler.label, pmc( v, options.Embargo ) } );
elseif k == 'PMID' then
table.insert( new_list, {handler.label, pmid( v ) } );
elseif k == 'S2CID' then
table.insert( new_list, {handler.label, s2cid( v, handler.access ) } );
elseif k == 'SBN' then
table.insert( new_list, {handler.label, sbn (v, accept) } );
elseif k == 'SSRN' then
table.insert( new_list, {handler.label, ssrn( v ) } );
elseif k == 'USENETID' then
table.insert( new_list, {handler.label, usenet_id( v ) } );
elseif k == 'ZBL' then
table.insert( new_list, {handler.label, zbl( v ) } );
else
error( cfg.messages['unknown_manual_ID'] );
end
end
local function comp( a, b ) -- used in following table.sort()
return a[1]:lower() < b[1]:lower();
end
table.sort( new_list, comp );
for k, v in ipairs( new_list ) do
new_list[k] = v[2];
end
return new_list;
end
--[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------
Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for
any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to
the identifier list. Emits redundant error message if more than one alias exists in args
]]
local function extract_ids( args )
local id_list = {}; -- list of identifiers found in args
for k, v in pairs( cfg.id_handlers ) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table
v = select_one( args, v.parameters, 'redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present
if is_set(v) then id_list[k] = v; end -- if found in args, add identifier to our list
end
return id_list;
end
--[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >--------------------------------------
Fetches custom id access levels from arguments using configuration settings.
Parameters which have a predefined access level (e.g. arxiv) do not use this
function as they are directly rendered as free without using an additional parameter.
access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else)
]]
local function extract_id_access_levels( args, id_list )
local id_accesses_list = {};
for k, v in pairs( cfg.id_handlers ) do
local access_param = v.custom_access; -- name of identifier's access-level parameter
if is_set(access_param) then
local access_level = args[access_param]; -- get the assigned value if there is one
if is_set (access_level) then
if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required
table.insert( z.message_tail, { set_message( 'invalid_param_val', {access_param, access_level}, true ) } );
access_level = nil; -- invalid so unset
end
if not is_set(id_list[k]) then -- identifier access-level must have a matching identifier
table.insert( z.message_tail, { set_message( 'err_param_access_requires_param', {k:lower()}, true ) } ); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message
end
id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword
end
end
end
return id_accesses_list;
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
set_message = utilities_page_ptr.set_message;
select_one = utilities_page_ptr.select_one;
substitute = utilities_page_ptr.substitute;
make_wikilink = utilities_page_ptr.make_wikilink;
z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title=
build_id_list = build_id_list,
extract_ids = extract_ids,
extract_id_access_levels = extract_id_access_levels,
is_embargoed = is_embargoed;
set_selected_modules = set_selected_modules;
}
3f3nkfekbg2minwt6n6biny31ech649
Module:Citation/CS1/Utilities
828
1465
3234
3233
2020-10-11T01:32:09Z
Chrisb
1
1 revision imported
3233
Scribunto
text/plain
local z = {
error_categories = {}; -- for categorizing citations that contain errors
error_ids = {};
message_tail = {};
maintenance_cats = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work
properties_cats = {}; -- for categorizing citations based on certain properties, language of source for instance
};
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
when <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else
with allow_empty = false, <str> must have at least one character inside the markup
with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context.
After futher evaluation the two cases might be merged at a later stage, but should be kept separated for now.
]]
local function has_accept_as_written (str, allow_empty)
local count;
if true == allow_empty then
str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set
else
str, count = str:gsub ('^%(%((.+)%)%)$', '%1');
end
return str, 0 ~= count;
end
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table.
]]
local function substitute( msg, args )
return args and mw.message.newRawMessage( msg, args ):plain() or msg;
end
--[[--------------------------< E R R O R _ C O M M E N T >----------------------------------------------------
Wraps error messages with CSS markup according to the state of hidden.
]]
local function error_comment( content, hidden )
return substitute( hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content );
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< S E T _ M E S S A G E >----------------------------------------------------------
Sets an error condition and returns the appropriate error message. The actual placement of the error message in the output is
the responsibility of the calling function.
TODO: change z.error_categories and z.maintenance_cats to have the form cat_name = true; to avoid dups without having to have an extra cat
]]
local added_maint_cats = {} -- list of maintenance categories that have been added to z.maintenance_cats; TODO: figure out how to delete this table
local function set_message (error_id, arguments, raw, prefix, suffix)
local error_state = cfg.error_conditions[error_id];
prefix = prefix or "";
suffix = suffix or "";
if error_state == nil then
error( cfg.messages['undefined_error'] .. ': ' .. error_id ); -- because missing error handler in Module:Citation/CS1/Configuration
elseif is_set (error_state.category) then
if error_state.message then -- when error_state.message defined, this is an error message
table.insert( z.error_categories, error_state.category );
else
if not added_maint_cats[error_id] then
added_maint_cats[error_id] = true; -- note that we've added this category
table.insert (z.maintenance_cats, substitute (error_state.category, arguments)); -- make cat name then add to table
end
return; -- because no message, nothing more to do
end
end
local message = substitute( error_state.message, arguments );
message = table.concat (
{
message,
' (',
make_wikilink (
table.concat (
{
cfg.messages['help page link'],
'#',
error_state.anchor
}),
cfg.messages['help page label']),
')'
});
z.error_ids[error_id] = true;
if z.error_ids['err_citation_missing_title'] and -- if missing-title error already noted
in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these
return '', false; -- don't bother because one flavor of missing title is sufficient
end
message = table.concat ({ prefix, message, suffix });
if raw == true then
return message, error_state.hidden;
end
return error_comment (message, error_state.hidden);
end
--[[-------------------------< I S _ A L I A S _ U S E D >-----------------------------------------------------
This function is used by select_one() to determine if one of a list of alias parameters is in the argument list
provided by the template.
Input:
args – pointer to the arguments table from calling template
alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration
index – for enumerated parameters, identifies which one
enumerated – true/false flag used to choose how enumerated aliases are examined
value – value associated with an alias that has previously been selected; nil if not yet selected
selected – the alias that has previously been selected; nil if not yet selected
error_list – list of aliases that are duplicates of the alias already selected
Returns:
value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected
selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected
]]
local function is_alias_used (args, alias, index, enumerated, value, selected, error_list)
if enumerated then -- is this a test for an enumerated parameters?
alias = alias:gsub ('#', index); -- replace '#' with the value in index
else
alias = alias:gsub ('#', ''); -- remove '#' if it exists
end
if is_set(args[alias]) then -- alias is in the template's argument list
if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases
local skip;
for _, v in ipairs(error_list) do -- spin through the error list to see if we've added this alias
if v == alias then
skip = true;
break; -- has been added so stop looking
end
end
if not skip then -- has not been added so
table.insert( error_list, alias ); -- add error alias to the error list
end
else
value = args[alias]; -- not yet selected an alias, so select this one
selected = alias;
end
end
return value, selected; -- return newly selected alias, or previously selected alias
end
--[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------
Adds a category to z.maintenance_cats using names from the configuration file with additional text if any.
To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maintenance_cats.
]]
local function add_maint_cat (key, arguments)
if not added_maint_cats [key] then
added_maint_cats [key] = true; -- note that we've added this category
table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table
end
end
--[[--------------------------< A D D _ P R O P _ C A T >--------------------------------------------------------
Adds a category to z.properties_cats using names from the configuration file with additional text if any.
foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages
may be categorized but multiples of the same language are not categorized.
added_prop_cats is a table declared in page scope variables above
]]
local added_prop_cats = {}; -- list of property categories that have been added to z.properties_cats
local function add_prop_cat (key, arguments)
if not added_prop_cats [key] then
added_prop_cats [key] = true; -- note that we've added this category
key = key:gsub ('(foreign_lang_source_?2?)%a%a%a?[%a%-]*', '%1'); -- strip lang code from keyname
table.insert( z.properties_cats, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table
end
end
--[[--------------------------< S A F E _ F O R _ I T A L I C S >----------------------------------------------
Protects a string that will be wrapped in wiki italic markup '' ... ''
Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that
they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact
poorly under Mediawiki's HTML tidy.
]]
local function safe_for_italics( str )
if not is_set(str) then
return str;
else
if str:sub(1,1) == "'" then str = "<span></span>" .. str; end
if str:sub(-1,-1) == "'" then str = str .. "<span></span>"; end
-- Remove newlines as they break italics.
return str:gsub( '\n', ' ' );
end
end
--[[--------------------------< W R A P _ S T Y L E >----------------------------------------------------------
Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one
argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason
this function is similar to but separate from wrap_msg().
]]
local function wrap_style (key, str)
if not is_set( str ) then
return "";
elseif in_array( key, { 'italic-title', 'trans-italic-title' } ) then
str = safe_for_italics( str );
end
return substitute( cfg.presentation[key], {str} );
end
--[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------
make a separated list of items using provided separators.
<sep_list> - typically '<comma><space>'
<sep_list_pair> - typically '<space>and<space>'
<sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>'
defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end']
if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied
]]
local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end)
local list = '';
if not sep_list then -- set the defaults
sep_list = cfg.presentation['sep_list'];
sep_list_pair = cfg.presentation['sep_list_pair'];
sep_list_end = cfg.presentation['sep_list_end'];
end
if 2 >= count then
list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item
elseif 2 < count then
list = table.concat (list_seq, sep_list, 1, count-1); -- concatenate all but last item with plain list separator
list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator
end
return list;
end
--[[--------------------------< S E L E C T _ O N E >----------------------------------------------------------
Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just
names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified
by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'.
Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities.
Generates an error if more than one match is present.
]]
local function select_one (args, aliases_list, error_condition, index)
local value = nil; -- the value assigned to the selected parameter
local selected = ''; -- the name of the parameter we have chosen
local error_list = {};
if index ~= nil then index = tostring(index); end
for _, alias in ipairs( aliases_list ) do -- for each alias in the aliases list
if alias:match ('#') then -- if this alias can be enumerated
if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias
end
value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias
else
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); --test for non-enumerated alias
end
end
if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names()
for i, v in ipairs (error_list) do
error_list[i] = wrap_style ('parameter', v);
end
table.insert (error_list, wrap_style ('parameter', selected));
table.insert (z.message_tail, {set_message (error_condition, {make_sep_list (#error_list, error_list)}, true)});
end
return value, selected;
end
--[=[-------------------------< R E M O V E _ W I K I _ L I N K >----------------------------------------------
Gets the display text from a wikilink like [[A|B]] or [[B]] gives B
The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup).
In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label
if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match
in the initial gsub, the replacement function l() doesn't get called.
]=]
local function remove_wiki_link (str)
return (str:gsub( "%[%[([^%[%]]*)%]%]", function(l)
return l:gsub( "^[^|]*|(.*)$", "%1" ):gsub("^%s*(.-)%s*$", "%1");
end));
end
--[=[-------------------------< I S _ W I K I L I N K >--------------------------------------------------------
Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts.
If str is a complex wikilink ([[L|D]]):
returns wl_type 2 and D and L from [[L|D]];
if str is a simple wikilink ([[D]])
returns wl_type 1 and D from [[D]] and L as empty string;
if not a wikilink:
returns wl_type 0, str as D, and L as empty string.
trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and
treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes).
]=]
local function is_wikilink (str)
local D, L
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]
if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content)
return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L
end
L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]]
if not is_set (D) then -- if no separate display
D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]]
wl_type = 1;
end
D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters
return wl_type, D, L or '';
end
--[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >--------------------------------
Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata.
This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to
markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind.
Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag
to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was
removed; returns the argument and nil when no markup removed
]]
local function strip_apostrophe_markup (argument)
if not is_set (argument) then
return argument, nil; -- no argument, nothing to do
end
if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit.
return argument, nil;
end
local flag;
while true do
if argument:find ( "'''''", 1, true ) then -- bold italic (5)
argument, flag=argument:gsub("%'%'%'%'%'", ""); -- remove all instances of it
elseif argument:find ( "''''", 1, true ) then -- italic start and end without content (4)
argument, flag=argument:gsub("%'%'%'%'", "");
elseif argument:find ( "'''", 1, true ) then -- bold (3)
argument, flag=argument:gsub("%'%'%'", "");
elseif argument:find ( "''", 1, true ) then -- italic (2)
argument, flag=argument:gsub("%'%'", "");
else
break;
end
end
return argument, flag; -- done
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr)
cfg = cfg_table_ptr;
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
add_maint_cat = add_maint_cat, -- exported functions
add_prop_cat = add_prop_cat,
error_comment = error_comment,
has_accept_as_written = has_accept_as_written,
in_array = in_array,
is_set = is_set,
is_wikilink = is_wikilink,
make_sep_list = make_sep_list,
make_wikilink = make_wikilink,
remove_wiki_link = remove_wiki_link,
safe_for_italics = safe_for_italics,
select_one = select_one,
set_message = set_message,
set_selected_modules = set_selected_modules,
strip_apostrophe_markup = strip_apostrophe_markup,
substitute = substitute,
wrap_style = wrap_style,
z = z, -- exported table
}
rnxgdpjx6jrhyzx5bolqb5kyqlzkqoq
Module:Citation/CS1/Whitelist
828
1466
3236
3235
2020-10-11T01:32:09Z
Chrisb
1
1 revision imported
3235
Scribunto
text/plain
--[[--------------------------< S U P P O R T E D P A R A M E T E R S >--------------------------------------
Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
true - these parameters are valid and supported parameters
false - these parameters are deprecated but still supported
nil - these parameters are no longer supported. remove entirely
]]
local basic_arguments = {
['accessdate'] = true,
['access-date'] = true,
['agency'] = true,
['archivedate'] = true,
['archive-date'] = true,
['archive-format'] = true,
['archiveurl'] = true,
['archive-url'] = true,
['article'] = true,
['article-format'] = true,
['article-url'] = true,
['article-url-access'] = true,
['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['asin'] = true,
['ASIN'] = true,
['asin-tld'] = true,
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['authorlink'] = true,
['author-link'] = true,
['authormask'] = false, -- deprecated
['author-mask'] = true,
['authors'] = true,
['bibcode'] = true,
['bibcode-access'] = true,
['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier
['booktitle'] = true,
['book-title'] = true,
['cartography'] = true,
['chapter'] = true,
['chapter-format'] = true,
['chapterurl'] = true,
['chapter-url'] = true,
['chapter-url-access'] = true,
['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier
['collaboration'] = true,
['conference'] = true,
['conference-format'] = true,
['conferenceurl'] = true,
['conference-url'] = true,
['contribution'] = true,
['contribution-format'] = true,
['contributionurl'] = true,
['contribution-url'] = true,
['contribution-url-access'] = true,
['contributor'] = true,
['contributor-first'] = true,
['contributor-given'] = true,
['contributor-last'] = true,
['contributor-surname'] = true,
['contributor-link'] = true,
['contributor-mask'] = true,
['date'] = true,
['degree'] = true,
['department'] = true,
['df'] = true,
['dictionary'] = true,
['displayauthors'] = false, -- deprecated
['display-authors'] = true,
['display-contributors'] = true,
['display-editors'] = true,
['display-interviewers'] = true,
['display-subjects'] = true,
['display-translators'] = true,
['docket'] = true,
['doi'] = true,
['DOI'] = true,
['doi-access'] = true,
['doi-broken-date'] = true,
['edition'] = true,
['editor'] = true,
['editor-first'] = true,
['editor-given'] = true,
['editor-last'] = true,
['editor-surname'] = true,
['editorlink'] = false, -- deprecated
['editor-link'] = true,
['editor-mask'] = true,
['editors'] = false, -- deprecated
['eissn'] = true,
['EISSN'] = true,
['encyclopaedia'] = true,
['encyclopedia'] = true,
['entry'] = true,
['entry-format'] = true,
['entry-url'] = true,
['entry-url-access'] = true,
['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['event'] = true,
['event-format'] = true,
['eventurl'] = true,
['event-url'] = true,
['first'] = true,
['format'] = true,
['given'] = true,
['hdl'] = true,
['HDL'] = true,
['hdl-access'] = true,
['host'] = true,
['id'] = true,
['ID'] = true,
['ignore-isbn-error'] = false, -- deprecated
['institution'] = true,
['interviewer'] = true,
['interviewer-first'] = true,
['interviewer-given'] = true,
['interviewer-last'] = true,
['interviewer-surname'] = true,
['interviewer-link'] = true,
['interviewer-mask'] = true,
['isbn'] = true,
['ISBN'] = true,
['isbn13'] = true,
['ISBN13'] = true,
['ismn'] = true,
['ISMN'] = true,
['issn'] = true,
['ISSN'] = true,
['issue'] = true,
['jfm'] = true,
['JFM'] = true,
['journal'] = true,
['jstor'] = true,
['JSTOR'] = true,
['jstor-access'] = true,
['lang'] = true,
['language'] = true,
['last'] = true,
['lastauthoramp'] = false, -- deprecated
['last-author-amp'] = false, -- deprecated
['laydate'] = true,
['lay-date'] = true,
['laysource'] = true,
['lay-source'] = true,
['lay-format'] = true,
['layurl'] = true,
['lay-url'] = true,
['lccn'] = true,
['LCCN'] = true,
['location'] = true,
['magazine'] = true,
['medium'] = true,
['minutes'] = true,
['mode'] = true,
['mr'] = true,
['MR'] = true,
['name-list-format'] = true,
['name-list-style'] = true,
['newspaper'] = true,
['nocat'] = true,
['nopp'] = true,
['no-pp'] = true,
['no-tracking'] = true,
['number'] = true,
['oclc'] = true,
['OCLC'] = true,
['ol'] = true,
['OL'] = true,
['ol-access'] = true,
['orig-date'] = true,
['origyear'] = true,
['orig-year'] = true,
['osti'] = true,
['OSTI'] = true,
['osti-access'] = true,
['others'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['people'] = true,
['periodical'] = true,
['place'] = true,
['pmc'] = true,
['PMC'] = true,
['pmc-embargo-date'] = true,
['pmid'] = true,
['PMID'] = true,
['postscript'] = true,
['pp'] = true,
['publicationdate'] = true,
['publication-date'] = true,
['publicationplace'] = true,
['publication-place'] = true,
['publisher'] = true,
['quotation'] = true,
['quote'] = true,
['quote-page'] = true,
['quote-pages'] = true,
['ref'] = true,
['rfc'] = true,
['RFC'] = true,
['sbn'] = true,
['SBN'] = true,
['scale'] = true,
['script-article'] = true,
['script-chapter'] = true,
['script-contribution'] = true,
['script-entry'] = true,
['script-journal'] = true,
['script-magazine'] = true,
['script-newspaper'] = true,
['script-periodical'] = true,
['script-quote'] = true,
['script-section'] = true,
['script-title'] = true,
['script-website'] = true,
['script-work'] = true,
['season'] = true,
['section'] = true,
['section-format'] = true,
['sectionurl'] = true,
['section-url'] = true,
['section-url-access'] = true,
['series'] = true,
['serieslink'] = true,
['series-link'] = true,
['seriesno'] = true,
['series-no'] = true,
['seriesnumber'] = true,
['series-number'] = true,
['ssrn'] = true, -- cite ssrn; these two here because allowed in cite ... as identifier
['SSRN'] = true,
['subject'] = true,
['subjectlink'] = false, -- deprecated
['subject-link'] = true,
['subject-mask'] = true,
['surname'] = true,
['s2cid'] = true,
['S2CID'] = true,
['s2cid-access'] = true,
['template-doc-demo'] = true,
['time'] = true,
['timecaption'] = true,
['time-caption'] = true,
['title'] = true,
['titlelink'] = true,
['title-link'] = true,
['translator'] = true,
['translator-first'] = true,
['translator-given'] = true,
['translator-last'] = true,
['translator-surname'] = true,
['translator-link'] = true,
['translator-mask'] = true,
['trans-article'] = true,
['trans-chapter'] = true,
['trans-contribution'] = true,
['trans-entry'] = true,
['trans-journal'] = true,
['trans-magazine'] = true,
['trans-newspaper'] = true,
['trans-periodical'] = true,
['trans-quote'] = true,
['trans-section'] = true,
['trans-title'] = true,
['trans-website'] = true,
['trans-work'] = true,
['type'] = true,
['url'] = true,
['URL'] = true,
['url-access'] = true,
['url-status'] = true,
['vauthors'] = true,
['veditors'] = true,
['version'] = true,
['via'] = true,
['volume'] = true,
['website'] = true,
['work'] = true,
['year'] = true,
['zbl'] = true,
['ZBL'] = true,
}
local numbered_arguments = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['authormask#'] = false, -- deprecated
['author#mask'] = false, -- deprecated
['contributor#'] = true,
['contributor-first#'] = true,
['contributor#-first'] = true,
['contributor-given#'] = true,
['contributor#-given'] = true,
['contributor-last#'] = true,
['contributor#-last'] = true,
['contributor-surname#'] = true,
['contributor#-surname'] = true,
['contributor-link#'] = true,
['contributor#-link'] = true,
['contributor-mask#'] = true,
['contributor#-mask'] = true,
['editor#'] = true,
['editor-first#'] = true,
['editor#-first'] = true,
['editor-given#'] = true,
['editor#-given'] = true,
['editor-last#'] = true,
['editor#-last'] = true,
['editor-surname#'] = true,
['editor#-surname'] = true,
['editor-link#'] = true,
['editor#-link'] = true,
['editorlink#'] = false, -- deprecated
['editor#link'] = false, -- deprecated
['editor-mask#'] = true,
['editor#-mask'] = true,
['first#'] = true,
['given#'] = true,
['host#'] = true,
['interviewer#'] = true,
['interviewer-first#'] = true,
['interviewer#-first'] = true,
['interviewer-given#'] = true,
['interviewer#-given'] = true,
['interviewer-last#'] = true,
['interviewer#-last'] = true,
['interviewer-surname#'] = true,
['interviewer#-surname'] = true,
['interviewer-link#'] = true,
['interviewer#-link'] = true,
['interviewer-mask#'] = true,
['interviewer#-mask'] = true,
['last#'] = true,
['subject#'] = true,
['subject-link#'] = true,
['subject#-link'] = true,
['subjectlink#'] = false, -- deprecated
['subject#link'] = false, -- deprecated
['subject-mask#'] = true,
['subject#-mask'] = true,
['surname#'] = true,
['translator#'] = true,
['translator-first#'] = true,
['translator#-first'] = true,
['translator-given#'] = true,
['translator#-given'] = true,
['translator-last#'] = true,
['translator#-last'] = true,
['translator-surname#'] = true,
['translator#-surname'] = true,
['translator-link#'] = true,
['translator#-link'] = true,
['translator-mask#'] = true,
['translator#-mask'] = true,
}
--[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >--------------------
Cite arXiv, cite biorxiv, cite citeseerx, and cite ssrn are preprint templates that use the limited set of parameters
defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are supplemented with a
template-specific list of parameters that are required by the particular template and may be exclusive to one of the
preprint templates. Some of these parameters may also be available to the general cs1|2 templates.
Same conventions for true/false/nil as above.
]]
local preprint_arguments = {
arxiv = {
['arxiv'] = true, -- cite arxiv and arxiv identifiers
['class'] = true,
['eprint'] = true, -- cite arxiv and arxiv identifiers
},
biorxiv = {
['biorxiv'] = true,
},
citeseerx = {
['citeseerx'] = true,
},
ssrn = {
['ssrn'] = true,
['SSRN'] = true,
},
}
--[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >----------------------
This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the
parameters provided in a cite arxiv, cite biorxiv, or cite citeseerx templates. These parameters are common to
all three templates
Same conventions for true/false/nil as above.
]]
local limited_basic_arguments = {
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['author-link'] = true,
['authorlink'] = true,
['author-mask'] = true,
['authormask'] = false, -- deprecated
['authors'] = true,
['collaboration'] = true,
['date'] = true,
['df'] = true,
['display-authors'] = true,
['displayauthors'] = false, -- deprecated
['first'] = true,
['given'] = true,
['language'] = true,
['last'] = true,
['last-author-amp'] = false, -- deprecated
['lastauthoramp'] = false, -- deprecated
['mode'] = true,
['name-list-format'] = true,
['name-list-style'] = true,
['nocat'] = true,
['no-tracking'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['postscript'] = true,
['pp'] = true,
['quotation'] = true,
['quote'] = true,
['ref'] = true,
['surname'] = true,
['template-doc-demo'] = true,
['title'] = true,
['trans-title'] = true,
['url'] = true,
['URL'] = true,
['vauthors'] = true,
['year'] = true,
}
local limited_numbered_arguments = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['authormask#'] = false, -- deprecated
['author#mask'] = false, -- deprecated
['first#'] = true,
['given#'] = true,
['last#'] = true,
['surname#'] = true,
}
--[[--------------------------< U N I Q U E _ A R G U M E N T S >----------------------------------------------
Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this
table are the template's CitationClass parameter value
Same conventions for true/false/nil as above.
]]
local unique_arguments = {
['audio-visual'] = {
['transcript'] = true,
['transcript-format'] = true,
['transcripturl'] = true,
['transcript-url'] = true,
},
episode = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episodelink'] = true, -- alias of |title-link=
['episode-link'] = true, -- alias of |title-link=
['network'] = true,
['station'] = true,
['transcript'] = true,
['transcript-format'] = true,
['transcripturl'] = true,
['transcript-url'] = true,
},
mailinglist = {
['mailinglist'] = true,
['mailing-list'] = true,
},
map = {
['inset'] = true,
['map'] = true,
['map-format'] = true,
['mapurl'] = true,
['map-url'] = true,
['map-url-access'] = true,
['script-map'] = true,
['sections'] = true,
['sheet'] = true,
['sheets'] = true,
['trans-map'] = true,
},
newsgroup = {
['message-id'] = true,
['newsgroup'] = true,
},
serial = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episode'] = true, -- cite serial only TODO: make available to cite episode?
['episodelink'] = true, -- aliases of |title-link=
['episode-link'] = true,
['network'] = true,
['station'] = true,
},
}
--[[--------------------------< T E M P L A T E _ L I S T _ G E T >--------------------------------------------
gets a list of the templates from table t
]]
local function template_list_get (t)
local out = {}; -- a table for output
for k, _ in pairs (t) do -- spin through the table and collect the keys
table.insert (out, k) -- add each key to the output table
end
return out; -- and done
end
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
basic_arguments = basic_arguments,
numbered_arguments = numbered_arguments,
limited_basic_arguments = limited_basic_arguments,
limited_numbered_arguments = limited_numbered_arguments,
preprint_arguments = preprint_arguments,
preprint_template_list = template_list_get (preprint_arguments), -- make a template list from preprint_arguments{} table
unique_arguments = unique_arguments,
unique_param_template_list = template_list_get (unique_arguments), -- make a template list from unique_arguments{} table
};
4jbcp11pa4k7hsy69nzp2juitha3wp5
Module:Citation/CS1/styles.css
828
1467
3238
3237
2020-10-11T01:36:00Z
Chrisb
1
1 revision imported
3237
sanitized-css
text/css
/* Protection icon
the following line controls the page-protection icon in the upper right corner
it must remain within this comment
{{sandbox other||{{pp-template}}}}
*/
/* Overrides
Some wikis do not override user agent default styles for HTML <cite> and <q>,
unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]]
*/
cite.citation {
font-style: inherit; /* Remove italics for <cite> */
}
.citation q {
quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */
}
/* ID and URL access
Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external
for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need
to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon.
the .id-lock-... selectors are for use by non-citation templates like {{Catalog lookup link}}
*/
.id-lock-free a,
.citation .cs1-lock-free a {
background: linear-gradient(transparent, transparent),
url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-limited a,
.id-lock-registration a,
.citation .cs1-lock-limited a,
.citation .cs1-lock-registration a {
background: linear-gradient(transparent, transparent),
url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-subscription a,
.citation .cs1-lock-subscription a {
background: linear-gradient(transparent, transparent),
url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg)
right 0.1em center/9px no-repeat;
}
.cs1-subscription,
.cs1-registration {
color: #555;
}
.cs1-subscription span,
.cs1-registration span {
border-bottom: 1px dotted;
cursor: help;
}
/* Wikisource
Wikisource icon when |chapter= or |title= is wikilinked to Wikisource
as in cite wikisource
*/
.cs1-ws-icon a {
background: linear-gradient(transparent, transparent),
url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg)
right 0.1em center/12px no-repeat;
}
/* Errors and maintenance */
code.cs1-code {
/* <code>...</code> style override: mediawiki's css definition is specified here:
https://git.wikimedia.org/blob/mediawiki%2Fcore.git/
69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
*/
color: inherit;
background: inherit;
border: none; /* this maybe can be inherit. MDN says yes, code editor says no */
padding: inherit;
}
.cs1-hidden-error {
display: none;
font-size: 100%;
}
.cs1-visible-error {
font-size: 100%;
}
.cs1-maint {
display: none;
color: #33aa33;
margin-left: 0.3em;
}
/* Small text size
Set small text size in one place. 0.95 (here) * 0.9 (from references list) is
~0.85, which is the lower bound for size for accessibility. Old styling for this
was just 0.85. We could write the rule so that when this template is inside
references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */
.cs1-subscription,
.cs1-registration,
.cs1-format {
font-size: 95%;
}
/* kerning */
.cs1-kern-left,
.cs1-kern-wl-left {
padding-left: 0.2em;
}
.cs1-kern-right,
.cs1-kern-wl-right {
padding-right: 0.2em;
}
/* selflinks – avoid bold font style when cs1|2 template links to the current page */
.citation .mw-selflink {
font-weight: inherit;
}
1m7rwqy4j4owuxl77ctkjt24he3uj8v
Module:Color contrast
828
1484
3272
3271
2020-10-11T01:41:31Z
Chrisb
1
1 revision imported
3271
Scribunto
text/plain
--
-- This module implements
-- {{Color contrast ratio}}
-- {{Greater color contrast ratio}}
-- {{ColorToLum}}
-- {{RGBColorToLum}}
--
local p = {}
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
local function sRGB (v)
if (v <= 0.03928) then
v = v / 12.92
else
v = math.pow((v+0.055)/1.055, 2.4)
end
return v
end
local function rgbdec2lum(R, G, B)
if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
else
return ''
end
end
local function hsl2lum(h, s, l)
if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
local c = (1 - math.abs(2*l - 1))*s
local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
local m = l - c/2
local r, g, b = m, m, m
if( 0 <= h and h < 60 ) then
r = r + c
g = g + x
elseif( 60 <= h and h < 120 ) then
r = r + x
g = g + c
elseif( 120 <= h and h < 180 ) then
g = g + c
b = b + x
elseif( 180 <= h and h < 240 ) then
g = g + x
b = b + c
elseif( 240 <= h and h < 300 ) then
r = r + x
b = b + c
elseif( 300 <= h and h < 360 ) then
r = r + c
b = b + x
end
return rgbdec2lum(255*r, 255*g, 255*b)
else
return ''
end
end
local function color2lum(c)
if (c == nil) then
return ''
end
-- html '#' entity
c = c:gsub("#", "#")
-- whitespace
c = c:match( '^%s*(.-)[%s;]*$' )
-- unstrip nowiki strip markers
c = mw.text.unstripNoWiki(c)
-- lowercase
c = c:lower()
-- first try to look it up
local L = HTMLcolor[c]
if (L ~= nil) then
return L
end
-- convert from hsl
if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)
end
-- convert from rgb
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$')
return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))
end
-- convert from rgb percent
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)
end
-- remove leading # (if there is one) and whitespace
c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$')
-- split into rgb
local cs = mw.text.split(c or '', '')
if( #cs == 6 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2])
local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4])
local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6])
return rgbdec2lum(R, G, B)
elseif ( #cs == 3 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1])
local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2])
local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3])
return rgbdec2lum(R, G, B)
end
-- failure, return blank
return ''
end
-- This exports the function for use in other modules.
-- The colour is passed as a string.
function p._lum(color)
return color2lum(color)
end
function p._greatercontrast(args)
local bias = tonumber(args['bias'] or '0') or 0
local css = (args['css'] and args['css'] ~= '') and true or false
local v1 = color2lum(args[1] or '')
local c2 = args[2] or '#FFFFFF'
local v2 = color2lum(c2)
local c3 = args[3] or '#000000'
local v3 = color2lum(c3)
local ratio1 = -1;
local ratio2 = -1;
if (type(v1) == 'number' and type(v2) == 'number') then
ratio1 = (v2 + 0.05)/(v1 + 0.05)
ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1
end
if (type(v1) == 'number' and type(v3) == 'number') then
ratio2 = (v3 + 0.05)/(v1 + 0.05)
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
end
if css then
local c1 = args[1] or ''
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c1 = '#' .. c1
end
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c2 = '#' .. c2
end
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c3 = '#' .. c3
end
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
end
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
end
function p._ratio(args)
local v1 = color2lum(args[1])
local v2 = color2lum(args[2])
if (type(v1) == 'number' and type(v2) == 'number') then
-- v1 should be the brighter of the two.
if v2 > v1 then
v1, v2 = v2, v1
end
return (v1 + 0.05)/(v2 + 0.05)
else
return args['error'] or '?'
end
end
function p._styleratio(args)
local style = (args[1] or ''):lower()
local bg, fg = 'white', 'black'
local lum_bg, lum_fg = 1, 0
if args[2] then
local lum = color2lum(args[2])
if lum ~= '' then bg, lum_bg = args[2], lum end
end
if args[3] then
local lum = color2lum(args[3])
if lum ~= '' then fg, lum_fg = args[3], lum end
end
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '#', '#'), ';')
for k = 1,#slist do
local s = slist[k]
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
k = k or ''
v = v or ''
if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_bg = v, lum end
elseif (k:match('^[%s]*(color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_fg = v, lum end
end
end
if lum_bg > lum_fg then
return (lum_bg + 0.05)/(lum_fg + 0.05)
else
return (lum_fg + 0.05)/(lum_bg + 0.05)
end
end
--[[
Use {{#invoke:Color contrast|somecolor}} directly or
{{#invoke:Color contrast}} from a wrapper template.
Parameters:
-- |1= — required; A color to check.
--]]
function p.lum(frame)
local color = frame.args[1] or frame:getParent().args[1]
return p._lum(color)
end
function p.ratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._ratio(args)
end
function p.styleratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._styleratio(args)
end
function p.greatercontrast(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._greatercontrast(args)
end
return p
3j3oaih63ygo9p806h5yxpscaqh3xu9
Module:Color contrast/colors
828
1485
3274
3273
2020-10-11T01:41:32Z
Chrisb
1
1 revision imported
3273
Scribunto
text/plain
return {
aliceblue = 0.92880068253475,
antiquewhite = 0.84646951707754,
aqua = 0.7874,
aquamarine = 0.8078549208338,
azure = 0.97265264954166,
beige = 0.8988459998705,
bisque = 0.80732327372979,
black = 0,
blanchedalmond = 0.85084439608156,
blue = 0.0722,
blueviolet = 0.12622014321946,
brown = 0.098224287876511,
burlywood = 0.51559844533893,
cadetblue = 0.29424681085422,
chartreuse = 0.76032025902623,
chocolate = 0.23898526114557,
coral = 0.37017930872924,
cornflowerblue = 0.30318641994179,
cornsilk = 0.93562110372965,
crimson = 0.16042199953026,
cyan = 0.7874,
darkblue = 0.018640801980939,
darkcyan = 0.20329317839046,
darkgoldenrod = 0.27264703559993,
darkgray = 0.39675523072563,
darkgreen = 0.091143429047575,
darkgrey = 0.39675523072563,
darkkhaki = 0.45747326349994,
darkmagenta = 0.07353047651207,
darkolivegreen = 0.12651920884889,
darkorange = 0.40016167026524,
darkorchid = 0.13413142174857,
darkred = 0.054889674531132,
darksalmon = 0.40541471563381,
darkseagreen = 0.43789249325969,
darkslateblue = 0.065792846227988,
darkslategray = 0.067608151928044,
darkslategrey = 0.067608151928044,
darkturquoise = 0.4874606277449,
darkviolet = 0.10999048339343,
deeppink = 0.23866895828276,
deepskyblue = 0.44481603395575,
dimgray = 0.14126329114027,
dimgrey = 0.14126329114027,
dodgerblue = 0.27442536991456,
firebrick = 0.10724525535015,
floralwhite = 0.95922484825004,
forestgreen = 0.18920812076002,
fuchsia = 0.2848,
gainsboro = 0.71569350050648,
ghostwhite = 0.94311261886323,
gold = 0.69860877428159,
goldenrod = 0.41919977809569,
gray = 0.2158605001139,
green = 0.15438342968146,
greenyellow = 0.80609472611453,
grey = 0.2158605001139,
honeydew = 0.96336535554782,
hotpink = 0.34658438169715,
indianred = 0.21406134963884,
indigo = 0.03107561486337,
ivory = 0.99071270600615,
khaki = 0.77012343394121,
lavender = 0.80318750514521,
lavenderblush = 0.90172748631046,
lawngreen = 0.73905893124963,
lemonchiffon = 0.94038992245622,
lightblue = 0.63709141280807,
lightcoral = 0.35522120733135,
lightcyan = 0.94587293494829,
lightgoldenrodyellow = 0.93348351018297,
lightgray = 0.65140563741982,
lightgreen = 0.69091979956865,
lightgrey = 0.65140563741982,
lightpink = 0.58566152734898,
lightsalmon = 0.4780675225206,
lightseagreen = 0.35050145117042,
lightskyblue = 0.56195637618331,
lightslategray = 0.23830165007287,
lightslategrey = 0.23830165007287,
lightsteelblue = 0.53983888284666,
lightyellow = 0.98161818392882,
lime = 0.7152,
limegreen = 0.44571042246098,
linen = 0.88357340984379,
magenta = 0.2848,
maroon = 0.045891942324215,
mediumaquamarine = 0.49389703310801,
mediumblue = 0.044077780212328,
mediumorchid = 0.21639251153773,
mediumpurple = 0.22905858091648,
mediumseagreen = 0.34393112338131,
mediumslateblue = 0.20284629471622,
mediumspringgreen = 0.70704308194184,
mediumturquoise = 0.5133827926448,
mediumvioletred = 0.14371899849357,
midnightblue = 0.02071786635086,
mintcream = 0.97834604947588,
mistyrose = 0.82183047859185,
moccasin = 0.80083000991567,
navajowhite = 0.76519682342785,
navy = 0.015585128108224,
oldlace = 0.91900633405549,
olive = 0.20027537200568,
olivedrab = 0.22593150951929,
orange = 0.4817026703631,
orangered = 0.25516243753416,
orchid = 0.31348806761439,
palegoldenrod = 0.78792647887614,
palegreen = 0.77936759006353,
paleturquoise = 0.76436077921714,
palevioletred = 0.28754994117889,
papayawhip = 0.87797100199835,
peachpuff = 0.74905589878251,
peru = 0.30113074877936,
pink = 0.63271070702466,
plum = 0.45734221587969,
powderblue = 0.68254586500605,
purple = 0.061477070432439,
rebeccapurple = 0.07492341159447,
red = 0.2126,
rosybrown = 0.32319457649407,
royalblue = 0.16663210743188,
saddlebrown = 0.097922285020521,
salmon = 0.36977241527596,
sandybrown = 0.46628543696283,
seagreen = 0.19734199706275,
seashell = 0.92737862206922,
sienna = 0.13697631337098,
silver = 0.52711512570581,
skyblue = 0.55291668518184,
slateblue = 0.14784278062136,
slategray = 0.20896704076536,
slategrey = 0.20896704076536,
snow = 0.96533341834849,
springgreen = 0.73052306068529,
steelblue = 0.20562642207625,
tan = 0.48237604163921,
teal = 0.16996855778968,
thistle = 0.56818401093733,
tomato = 0.30638612719415,
turquoise = 0.5895536427578,
violet = 0.40315452986676,
wheat = 0.74909702820482,
white = 1,
whitesmoke = 0.91309865179342,
yellow = 0.9278,
yellowgreen = 0.50762957208707,
}
chi69ar1btd4wp6xbk3uez6sfu0vipn
Module:Delink
828
1468
3240
3239
2020-10-11T01:36:00Z
Chrisb
1
1 revision imported
3239
Scribunto
text/plain
-- This module de-links most wikitext.
require('Module:No globals')
local p = {}
local getArgs
local function delinkReversePipeTrick(s)
if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes.
return s
else
return s:match("%[%[|(.*)%]%]")
end
end
local function delinkPipeTrick(s)
local linkarea, display = "", ""
-- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]].
-- First, remove the text before the first colon, if any.
if s:match(":") then
s = s:match("%[%[.-:(.*)|%]%]")
-- If there are no colons, grab all of the text apart from the square brackets and the pipe.
else
s = s:match("%[%[(.*)|%]%]")
end
-- Next up, brackets and commas.
if s:match("%(.-%)$") then -- Brackets trump commas.
s = s:match("(.-) ?%(.-%)$")
elseif s:match(",") then -- If there are no brackets, display only the text before the first comma.
s = s:match("(.-),.*$")
end
return s
end
local function delinkWikilink(s)
local result = s
-- Deal with the reverse pipe trick.
if result:match("%[%[|") then
return delinkReversePipeTrick(result)
end
result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
result = mw.text.decode(result, true) -- decode HTML entities.
-- Check for bad titles. To do this we need to find the
-- title area of the link, i.e. the part before any pipes.
local titlearea
if result:match("|") then -- Find if we're dealing with a piped link.
titlearea = result:match("^%[%[(.-)|.*%]%]")
else
titlearea = result:match("^%[%[(.-)%]%]")
end
-- Check for bad characters.
if mw.ustring.match(titlearea, "[%[%]<>{}%%%c\n]") then
return s
end
-- Check for categories, interwikis, and files.
local colonprefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon.
local ns = mw.site.namespaces[colonprefix] -- see if this is a known namespace
if mw.language.isKnownLanguageTag(colonprefix)
or ( ns and ( ns.canonicalName == "File" or ns.canonicalName == "Category" ) ) then
return ""
end
-- Remove the colon if the link is using the [[Help:Colon trick]].
if result:match("%[%[:") then
result = "[[" .. result:match("%[%[:(.*%]%])")
end
-- Deal with links using the [[Help:Pipe trick]].
if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then
return delinkPipeTrick(result)
end
-- Find the display area of the wikilink
if result:match("|") then -- Find if we're dealing with a piped link.
result = result:match("^%[%[.-|(.+)%]%]")
-- Remove new lines from the display of multiline piped links,
-- where the pipe is before the first new line.
result = result:gsub("\n", "")
else
result = result:match("^%[%[(.-)%]%]")
end
return result
end
local function delinkURL(s)
-- Assume we have already delinked internal wikilinks, and that
-- we have been passed some text between two square brackets [foo].
-- If the text contains a line break it is not formatted as a URL, regardless of other content.
if s:match("\n") then
return s
end
-- Check if the text has a valid URL prefix and at least one valid URL character.
local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"}
local url_prefix
for i,v in ipairs(valid_url_prefixes) do
if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then
url_prefix = v
break
end
end
-- Get display text
if not url_prefix then
return s
end
s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket.
s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ).
s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off.
local s_decoded = mw.text.decode(s, true)
if mw.ustring.match(s_decoded, "%c") then
return s
else
return s_decoded
end
end
local function delinkLinkClass(s, pattern, delinkFunction)
if not type(s) == "string" then
error("Attempt to de-link non-string input.", 2)
end
if not ( type(pattern) == "string" and mw.ustring.sub(pattern, 1, 1) == "^" ) then
error('Invalid pattern detected. Patterns must begin with "^".', 2)
end
-- Iterate over the text string, and replace any matched text. using the
-- delink function. We need to iterate character by character rather
-- than just use gsub, otherwise nested links aren't detected properly.
local result = ""
while s ~= '' do
-- Replace text using one iteration of gsub.
s = mw.ustring.gsub(s, pattern, delinkFunction, 1)
-- Append the left-most character to the result string.
result = result .. mw.ustring.sub(s, 1, 1)
s = mw.ustring.sub(s, 2, -1)
end
return result
end
function p._delink(args)
local text = args[1] or ""
if args.refs == "yes" then
-- Remove any [[Help:Strip markers]] representing ref tags. In most situations
-- this is not a good idea - only use it if you know what you are doing!
text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "")
end
if not (args.comments == "no") then
text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments.
end
if not (args.wikilinks == "no") then
text = delinkLinkClass(text, "^%[%[.-%]%]", delinkWikilink) -- De-link wikilinks.
end
if not (args.urls == "no") then
text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs.
end
if not (args.whitespace == "no") then
-- Replace single new lines with a single space, but leave double new lines
-- and new lines only containing spaces or tabs before a second new line.
text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2")
text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces.
end
return text
end
function p.delink(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._delink(getArgs(frame, {wrappers = 'Template:Delink'}))
end
return p
9uut60bk5e8nnvyxo8jbf7qt3b17a4v
Module:Distinguish
828
1638
4924
4923
2020-10-11T05:50:33Z
Chrisb
1
1 revision imported
4923
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools --initialize lazily
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.distinguish(frame)
mArguments = require('Module:Arguments')
mTableTools = require('Module:TableTools')
local args = mArguments.getArgs(frame)
local selfref = args.selfref
local text = args.text
args = mTableTools.compressSparseArray(args)
return p._distinguish(args, text, selfref)
end
function p._distinguish(args, text, selfref)
checkType("_distinguish", 1, args, 'table')
if #args == 0 and not text then return '' end
local text = string.format(
'Not to be confused with %s.',
text or mHatlist.orList(args, true)
)
hnOptions = {selfref = selfref}
return mHatnote._hatnote(text, hnOptions)
end
return p
0e9s40s10w9aih1qwh96v3jypzotm48
Module:Documentation
828
882
1996
1995
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1995
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
local messageBox = require('Module:Message box')
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
return ret
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
return '<small style="font-style: normal;">(' .. table.concat(ret, ' | ') .. ')</small>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--
-- Messages:
-- 'main-div-id' --> 'template-documentation'
-- 'main-div-classes' --> 'template-documentation iezoomfix'
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
-- This div tag is from {{documentation/start box}}, but moving it here
-- so that we don't have to worry about unclosed tags.
:tag('div')
:attr('id', message('main-div-id'))
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
:css('clear', 'both') -- So right or left floating items don't stick out of the doc box.
:newline()
:done()
:done()
:wikitext(p._endBox(args, env))
:wikitext(p.addTrackingCategories(env))
return tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title objects and other namespace- or
-- path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
-- env.printTitle - the print version of the template, located at the /Print subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.printTitle()
--[[
-- Title object for the /Print subpage.
-- Messages:
-- 'print-subpage' --> 'Print'
--]]
return env.templateTitle:subPageTitle(message('print-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the same as the
-- subject namespace. However, pages in the Article, File, MediaWiki or Category
-- namespaces must have their /doc, /sandbox and /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
text = text .. makeCategoryLink(message('sandbox-category'))
omargs.text = text
local ret = '<div style="clear: both;"></div>'
ret = ret .. messageBox.main('ombox', omargs)
return ret
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels, mProtectionBanner
local title = env.title
protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
mProtectionBanner = require('Module:Protection banner')
local reason = message('protection-reason-edit')
return mProtectionBanner._main{reason, small = true}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
mProtectionBanner = require('Module:Protection banner')
return mProtectionBanner._main{action = 'move', small = true}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 6 then -- File namespace
preload = message('file-docpage-preload')
elseif subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks'
-- 'start-box-link-id' --> 'doc_editlinks'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
elseif subjectSpace == 10 then
-- We are in the template or template talk namespaces.
data.headingFontWeight = 'bold'
data.headingFontSize = '125%'
else
data.headingFontSize = '150%'
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
data.linksClass = message('start-box-linkclasses')
data.linksId = message('start-box-link-id')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
:css('padding-bottom', '3px')
:css('border-bottom', '1px solid #aaa')
:css('margin-bottom', '1ex')
:newline()
:tag('span')
:cssText(data.headingStyleText)
:css('font-weight', data.headingFontWeight)
:css('font-size', data.headingFontSize)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'fmbox-id' --> 'documentation-meta-data'
-- 'fmbox-style' --> 'background-color: #ecfcf4'
-- 'fmbox-textstyle' --> 'font-style: italic'
--
-- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]].
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the arguments for {{fmbox}}.
local fmargs = {}
fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data'
fmargs.image = 'none'
fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4'
fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;'
-- Assemble the fmbox text field.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '')
text = text .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
if printBlurb then
text = text .. '<br />' .. printBlurb
end
end
end
fmargs.text = text
return messageBox.main('fmbox', fmargs)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Wikipedia:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
function p.makePrintBlurb(args, env)
--[=[
-- Generates the blurb displayed when there is a print version of the template available.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'print-link-display' --> '/Print'
-- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]'
-- .. ' of this template exists at $1.'
-- .. ' If you make a change to this template, please update the print version as well.'
-- 'display-print-category' --> true
-- 'print-category' --> 'Templates with print versions'
--]=]
local printTitle = env.printTitle
if not printTitle then
return nil
end
local ret
if printTitle.exists then
local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display'))
ret = message('print-blurb', {printLink})
local displayPrintCategory = message('display-print-category', nil, 'boolean')
if displayPrintCategory then
ret = ret .. makeCategoryLink(message('print-category'))
end
end
return ret
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
et62wy68byfbzro3kepvlo2831bqq99
Module:Documentation/config
828
883
1998
1997
2020-09-29T19:15:37Z
Chrisb
1
1 revision imported
1997
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[Image:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Please add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['file-docpage-preload']
-- Preload file for documentation page in the file namespace.
cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- Print version configuration
----------------------------------------------------------------------------------------------------
-- cfg['print-subpage']
-- The name of the template subpage used for print versions.
cfg['print-subpage'] = 'Print'
-- cfg['print-link-display']
-- The text to display when linking to the /Print subpage.
cfg['print-link-display'] = '/Print'
-- cfg['print-blurb']
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display'].
cfg['print-blurb'] = 'A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.'
.. ' If you make a change to this template, please update the print version as well.'
-- cfg['display-print-category']
-- Set to true to enable output of cfg['print-category'] if a /Print subpage exists.
-- This should be a boolean value (either true or false).
cfg['display-print-category'] = true
-- cfg['print-category']
-- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists.
cfg['print-category'] = 'Templates with print versions'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['main-div-id']
-- The "id" attribute of the main HTML "div" tag.
cfg['main-div-id'] = 'template-documentation'
-- cfg['main-div-classes']
-- The CSS classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'template-documentation iezoomfix'
-- cfg['start-box-linkclasses']
-- The CSS classes used for the [view][edit][history] or [create] links in the start box.
cfg['start-box-linkclasses'] = 'mw-editsection-like plainlinks'
-- cfg['start-box-link-id']
-- The HTML "id" attribute for the links in the start box.
cfg['start-box-link-id'] = 'doc_editlinks'
----------------------------------------------------------------------------------------------------
-- {{fmbox}} template configuration
----------------------------------------------------------------------------------------------------
-- cfg['fmbox-id']
-- The id sent to the "id" parameter of the {{fmbox}} template.
cfg['fmbox-id'] = 'documentation-meta-data'
-- cfg['fmbox-style']
-- The value sent to the style parameter of {{fmbox}}.
cfg['fmbox-style'] = 'background-color: #ecfcf4'
-- cfg['fmbox-textstyle']
-- The value sent to the "textstyle parameter of {{fmbox}}.
cfg['fmbox-textstyle'] = 'font-style: italic'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
6hym6c6py8yoseohy71qvk7kafcy1p5
Module:Effective protection expiry
828
884
2000
1999
2020-09-29T19:15:38Z
Chrisb
1
1 revision imported
1999
Scribunto
text/plain
local p = {}
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
return stabilitySettings and stabilitySettings.expiry or 'unknown'
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
end
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
if rawExpiry == 'infinity' then
return 'infinity'
elseif rawExpiry == '' then
return 'unknown'
else
local year, month, day, hour, minute, second = rawExpiry:match(
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
)
if year then
return string.format(
'%s-%s-%sT%s:%s:%s',
year, month, day, hour, minute, second
)
else
error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
end
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
i1wms02y1w048cq6uttka18a5pjzp63
Module:Effective protection level
828
885
2002
2001
2020-09-29T19:15:38Z
Chrisb
1
1 revision imported
2001
Scribunto
text/plain
local p = {}
-- Returns the permission required to perform a given action on a given title.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
level = level and level.autoreview
if level == 'review' then
return 'reviewer'
elseif level ~= '' then
return level
else
return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review
end
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then
error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 )
end
if title.namespace == 8 then -- MediaWiki namespace
if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page
return 'interfaceadmin'
else -- any non-JS/CSS MediaWiki page
return 'sysop'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page
return 'interfaceadmin'
elseif title.contentModel == 'json' then -- user JSON page
return 'sysop'
end
end
if action == 'undelete' then
return 'sysop'
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
if level == 'sysop' or level == 'editprotected' then
return 'sysop'
elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
return 'sysop'
elseif level == 'templateeditor' then
return 'templateeditor'
elseif action == 'move' then
local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.
if blacklistentry and not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif title.namespace == 6 then
return 'filemover'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
end
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
if blacklistentry then
if not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason
return 'autoconfirmed'
elseif level then
return level
elseif action == 'upload' then
return 'autoconfirmed'
elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts
return 'user'
else
return '*'
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
d3lhy0comfcfe9lnnj8klmrfqm1oxw7
Module:File link
828
886
2004
2003
2020-09-29T19:15:38Z
Chrisb
1
1 revision imported
2003
Scribunto
text/plain
-- This module provides a library for formatting file wikilinks.
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
-- own function to get the right error level.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"type error in '%s' parameter of '_main' (expected string, got %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adds a positional parameter to the buffer.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adds a named parameter to the buffer. We assume that the parameter name
-- is the same as the argument key.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Filename
checkArg('file', args.file, 3)
ret[#ret + 1] = 'File:' .. args.file
-- Format
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Border
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:File link'
})
if not origArgs.file then
error("'file' parameter missing from [[Template:File link]]", 0)
end
-- Copy the arguments that were passed to a new table to avoid looking up
-- every possible parameter in the frame object.
local args = {}
for k, v in pairs(origArgs) do
-- Make _BLANK a special argument to add a blank parameter. For use in
-- conditional templates etc. it is useful for blank arguments to be
-- ignored, but we still need a way to specify them so that we can do
-- things like [[File:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p
bzc22v133v9z5yc4aisazripn6l94p8
Module:For
828
1603
4854
4853
2020-10-11T05:35:32Z
Chrisb
1
1 revision imported
4853
Scribunto
text/plain
local mArguments --initialize lazily
local mHatlist = require('Module:Hatnote list')
local mHatnote = require('Module:Hatnote')
local yesNo = require('Module:Yesno')
local p = {}
--Implements {{For}} from the frame
--uses capitalized "For" to avoid collision with Lua reserved word "for"
function p.For (frame)
mArguments = require('Module:Arguments')
return p._For(mArguments.getArgs(frame))
end
--Implements {{For}} but takes a manual arguments table
function p._For (args)
local use = args[1]
if (not use) then
return mHatnote.makeWikitextError(
'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.',
'Template:For#Errors',
args.category
)
end
local pages = {}
function two (a, b) return a, b, 1 end --lets us run ipairs from 2
for k, v in two(ipairs(args)) do table.insert(pages, v) end
local category = yesNo(args.category)
return mHatnote._hatnote(
mHatlist.forSeeTableToString({{use = use, pages = pages}}),
{selfref = args.selfref}
) .. (
(use == 'other uses') and ((category == true) or (category == nil)) and
'[[Category:Hatnote templates using unusual parameters]]' or ''
)
end
return p
9pm07mvqlrdc1kwj9bb1m1doie9d4xo
Module:Hatnote
828
1469
3242
3241
2020-10-11T01:36:00Z
Chrisb
1
1 revision imported
3241
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.formatPages(...)
-- Formats a list of pages using formatLink and returns it as an array. Nil
-- values are not allowed.
local pages = {...}
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink{link = page}
end
return ret
end
function p.formatPageTables(...)
-- Takes a list of page/display tables and returns it as a list of
-- formatted links. Nil values are not allowed.
local pages = {...}
local links = {}
for i, t in ipairs(pages) do
checkType('formatPageTables', i, t, 'table')
local link = t[1]
local display = t[2]
links[i] = p._formatLink{link = link, display = display}
end
return links
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = string.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return string.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return string.format('%s (%s)', page, disambiguator)
end
--------------------------------------------------------------------------------
-- Format link
--
-- Makes a wikilink from the given link and display values. Links are escaped
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
--------------------------------------------------------------------------------
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local link = args[1]
if not link then
return p.makeWikitextError(
'no link specified',
'Template:Format link#Errors',
args.category
)
end
return p._formatLink{
link = link,
display = args[2],
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
}
end
local function italicize(s)
-- Italicize a string.
return '<i>' .. s .. '</i>'
end
local function maybeItalicize(s, shouldItalicize)
-- italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return italicize(s)
else
return s
end
end
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
link = prePipe or link
-- Find the page, if it exists.
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
-- Find the section, if it exists.
local section
if postHash and postHash ~= '' then
section = postHash
end
return {
link = link,
page = page,
section = section,
display = display,
}
end
function p._formatLink(options)
-- The formatLink export function, for use in modules.
checkType('_formatLink', 1, options, 'table')
checkTypeForNamedArg('_formatLink', 'link', options.link, 'string', false)
checkTypeForNamedArg(
'_formatLink',
'display',
options.display,
'string',
true
)
checkTypeForNamedArg(
'_formatLink',
'italicizePage',
options.italicizePage,
'boolean',
true
)
checkTypeForNamedArg(
'_formatLink',
'italicizeSection',
options.italicizeSection,
'boolean',
true
)
local parsed = parseLink(options.link)
local display = options.display or parsed.display
-- Deal with the case where we don't have to pipe the link
if not display and not parsed.section and not options.italicizePage then
return string.format('[[:%s]]', parsed.link)
end
-- Find the display text for piped links
if not display then
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if not page then
display = string.format('§ %s', section)
elseif section then
display = string.format('%s § %s', page, section)
else
display = page
end
end
return string.format('[[:%s|%s]]', parsed.link, display)
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
local options = {}
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote#Errors',
args.category
)
end
options.extraclasses = args.extraclasses
options.selfref = args.selfref
return p._hatnote(s, options)
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local classes = {'hatnote', 'navigation-not-searchable'}
local extraclasses = options.extraclasses
local selfref = options.selfref
if type(extraclasses) == 'string' then
classes[#classes + 1] = extraclasses
end
if selfref then
classes[#classes + 1] = 'selfref'
end
return string.format(
'<div role="note" class="%s">%s</div>',
table.concat(classes, ' '),
s
)
end
return p
i11f8q2u8pomoj3ukbihsqdql9a3juh
Module:Hatnote list
828
1470
3244
3243
2020-10-11T01:36:00Z
Chrisb
1
1 revision imported
3243
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote list --
-- --
-- This module produces and formats lists for use in hatnotes. In particular, --
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --
-- are andList & orList helpers for formatting lists with those conjunctions. --
--------------------------------------------------------------------------------
local mArguments --initialize lazily
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
--------------------------------------------------------------------------------
-- List stringification helper functions
--
-- These functions are used for stringifying lists, usually page lists inside
-- the "Y" portion of "For X, see Y" for-see items.
--------------------------------------------------------------------------------
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
conjunction = "and",
separator = ",",
altSeparator = ";",
space = " ",
formatted = false
}
-- Stringifies a list generically; probably shouldn't be used directly
function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
if #list == 0 then return nil end
checkType("stringifyList", 2, options, "table", true)
options = options or {}
for k, v in pairs(stringifyListDefaultOptions) do
if options[k] == nil then options[k] = v end
end
local s = options.space
-- Format the list if requested
if options.formatted then list = mHatnote.formatPages(unpack(list)) end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
--searches display text only
local function searchDisp(t, f)
return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f)
end
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
end
--DRY function
function conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return conjList("and", ...) end
function p.orList (...) return conjList("or", ...) end
--------------------------------------------------------------------------------
-- For see
--
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the
-- {{about}} and {{redirect}} templates and their variants.
--------------------------------------------------------------------------------
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
forSeeForm = 'For %s, see %s.',
}
--Collapses duplicate punctuation
function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
}
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end
return text
end
-- Structures arguments into a table for stringification, & options
function p.forSeeArgsToTable (args, from, options)
-- Type-checks and defaults
checkType("forSeeArgsToTable", 1, args, 'table')
checkType("forSeeArgsToTable", 2, from, 'number', true)
from = from or 1
checkType("forSeeArgsToTable", 3, options, 'table', true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then maxArg = k end
end
-- Structure the data out from the parameter list:
-- * forTable is the wrapper table, with forRow rows
-- * Rows are tables of a "use" string & a "pages" table of pagename strings
-- * Blanks are left empty for defaulting elsewhere, but can terminate list
local forTable = {}
local i = from
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
repeat
-- New empty row
local forRow = {}
-- On blank use, assume list's ended & break at end of this loop
forRow.use = args[i]
if not args[i] then terminated = true end
-- New empty list of pages
forRow.pages = {}
-- Insert first pages item if present
table.insert(forRow.pages, args[i + 1])
-- If the param after next is "and", do inner loop to collect params
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}
while args[i + 2] == options.andKeyword do
if args[i + 3] then
table.insert(forRow.pages, args[i + 3])
end
-- Increment to next "and"
i = i + 2
end
-- Increment to next use
i = i + 2
-- Append the row
table.insert(forTable, forRow)
until terminated or i > maxArg
return forTable
end
-- Stringifies a table as formatted by forSeeArgsToTable
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Stringify each for-see item into a list
local strList = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
end
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps
-- but not blank/whitespace values. Ignores named args and args < "from".
function p._forSee (args, from, options)
local forSeeTable = p.forSeeArgsToTable(args, from, options)
return p.forSeeTableToString(forSeeTable, options)
end
-- As _forSee, but uses the frame.
function p.forSee (frame, from, options)
mArguments = require('Module:Arguments')
return p._forSee(mArguments.getArgs(frame), from, options)
end
return p
fqf9dfriof1mvsvpj4ulnui0b5k1dz1
Module:High-use
828
887
2006
2005
2020-09-29T19:15:39Z
Chrisb
1
1 revision imported
2005
Scribunto
text/plain
local p = {}
local _fetch = require('Module:Transclusion_count').fetch
function p.num(frame, count)
if count == nil then count = _fetch(frame) end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percent of pages
if frame.args["all-pages"] and frame.args["all-pages"] ~= "" then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
local bot_text = "\n\n----\nTransclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])."
if frame.args["nobot"] == true then
bot_text = ""
end
if count == nil then count = _fetch(frame) end
local return_value = {}
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local templatecount = string.format("https://templatecount.toolforge.org/index.php?lang=en&namespace=%s&name=%s",mw.title.getCurrentTitle().namespace,mw.uri.encode(title.text))
local used_on_text = string.format("'''This %s is used on [%s %s pages]'''",
(mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template"),
templatecount,
p.num(frame, count)
)
local sandbox_text = string.format("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages%s ",
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
(mw.title.getCurrentTitle().namespace == 828 and "." or ", or in your own [[Wikipedia:Subpages#How to create user subpages|user subpage]].")
)
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = ""
if frame.args["info"] and frame.args["info"] ~= "" then
info = "<br />" .. frame.args["info"]
end
sandbox_text = string.format(".%s<br /> To avoid major disruption and server load, any changes should be tested in the %sThe tested changes can be added to this page in a single edit. ",
info, sandbox_text
)
else
sandbox_text = string.format(" and changes may be widely noticed. Test changes in the %s",
sandbox_text
)
end
local discussion_text = "Consider discussing changes "
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return table.concat({used_on_text, sandbox_text, discussion_text, " before implementing them.", bot_text})
end
function p.main(frame)
local count = _fetch(frame)
local return_value = ""
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
if (frame.args[1] == "risk" or (count and count >= 100000) ) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return_value = frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
}
else
return_value = frame:expandTemplate{
title = 'ombox',
args = {
["type"] = type_param,
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
}
end
return return_value
end
return p
tbiv1nf83p49sw94e38but34b8fp53e
Module:Icon
828
1471
3246
3245
2020-10-11T01:36:01Z
Chrisb
1
1 revision imported
3245
Scribunto
text/plain
-- This module implements [[Template:Icon]].
local data = mw.loadData('Module:Icon/data')
local p = {}
function p._main(args)
local code = args.class or args[1]
local iconData
if code then
code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
iconData = data[code]
end
if not iconData then
iconData = data._DEFAULT
end
return string.format(
'[[File:%s%s|%s|link=]]',
iconData.image,
iconData.tooltip and '|' .. iconData.tooltip or '',
args.size or '16x16px'
)
end
function p.main(frame)
local args = {}
for k, v in pairs(frame:getParent().args) do
args[k] = v
end
return p._main(args)
end
return p
4z7aot4f3pniw3w3az56t0kryggws40
Module:Icon/data
828
1472
3248
3247
2020-10-11T01:36:01Z
Chrisb
1
1 revision imported
3247
Scribunto
text/plain
-- This module stores icon data for [[Module:Icon]].
--------------------------------------------------------------------------------
-- Icon data
--------------------------------------------------------------------------------
local data = {
fa = {
image = "Featured article star.svg",
tooltip = "Featured article",
},
far = {
image = "Cscr-star piece.png",
tooltip = "Featured article review",
},
farc = {
image = "Cscr-star piece.png",
tooltip = "Featured article removal candidate",
},
ffa = {
aliases = {"dfa"},
image = "Featured article star - cross.svg",
tooltip = "Former featured article",
},
fac = {
aliases = {"fan"},
image = "Cscr-candidate.svg",
tooltip = "Featured article candidate",
},
ffac = {
aliases = {"nofa"},
image = "Featured article star - cross.svg",
tooltip = "Failed featured article candidate",
},
fl = {
image = "Featured article star.svg",
tooltip = "Featured list",
},
flrc = {
aliases = {"flr"},
image = "Cscr-star piece.png",
tooltip = "Featured list removal candidate",
},
ffl = {
aliases = {"dfl"},
image = "Cscr-featured-strike.svg",
tooltip = "Former featured list",
},
flc = {
aliases = {"fln"},
image = "Cscr-candidate.svg",
tooltip = "Featured list candidate",
},
fflc = {
aliases = {"nofl"},
image = "Cscr-former.svg",
tooltip = "Failed featured list candidate",
},
a = {
image = "Symbol a class.svg",
tooltip = "A-Class article",
},
dac = {
aliases = {"daa"},
image = "Symbol unsupport A vote.svg",
tooltip = "Demoted A-Class article",
},
acc = {
aliases = {"acn", "aac"},
image = "A candidate.svg",
tooltip = "A-Class article candidate",
},
noac = {
aliases = {"faac"},
image = "Symbol unsupport A vote.svg",
tooltip = "Failed A-Class article candidate",
},
ga = {
image = "Symbol support vote.svg",
tooltip = "Good article",
},
gar = {
image = "GA Candidate Neutral vote(ChaosNil).svg",
tooltip = "Good article reassessment",
},
dga = {
image = "Symbol unsupport vote.svg",
tooltip = "Delisted good article",
},
gan = {
aliases = {"gac"},
image = "GA candidate.svg",
tooltip = "Good article nominee",
},
ga2 = {
image = "Symbol neutral vote.svg",
tooltip = "Good article, 2nd opinion",
},
gah = {
image = "Symbol wait.svg",
tooltip = "Good article on hold",
},
fgan = {
aliases = {"noga", "gaf", "gf"},
image = "Symbol oppose vote.svg",
tooltip = "Failed good article nominee",
},
fp = {
image = "Cscr-featured.svg",
tooltip = "Featured picture",
},
fpc = {
aliases = {"fpn"},
image = "Cscr-candidate.svg",
tooltip = "Featured picture candidate",
},
ffp = {
image = "Cscr-former.svg",
tooltip = "Former featured picture",
},
vp = {
image = "ENWP VP Logo.svg",
tooltip = "Valued picture",
},
vpc = {
image = "Valued pics 1.svg",
tooltip = "Valued picture candidate",
},
fs = {
image = "Cscr-featured.svg",
tooltip = "Featured sound",
},
ffs = {
image = "Cscr-former.svg",
tooltip = "Former featured sound",
},
fsc = {
image = "Cscr-candidate.svg",
tooltip = "Featured sound candidate",
},
fpo = {
image = "Linecons big-star.svg",
tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.",
},
fpor = {
image = "Cscr-star piece.png",
tooltip = "Featured portal review",
},
ffpo = {
image = "Featured article star - cross.svg",
tooltip = "Former featured portal",
},
fpoc = {
image = "Cscr-candidate.svg",
tooltip = "Featured portal candidate",
},
ft = {
image = "Cscr-featuredtopic.svg",
tooltip = "Featured topic",
},
ftrc = {
image = "Cscr-star piece.png",
tooltip = "Featured topic removal candidate",
},
fft = {
aliases = {"dft"},
image = "DFT candidate_cluster.svg",
tooltip = "Former featured topic",
},
ftc = {
aliases = {"ftn"},
image = "FT candidate cluster.svg",
tooltip = "Featured topic candidate",
},
gt = {
image = "Support cluster.svg",
tooltip = "Good topic",
},
gtrc = {
image = "Symbol unsupport vote.svg",
tooltip = "Good topic removal candidate",
},
gtc = {
aliases = {"gtn"},
image = "GA candidate cluster.svg",
tooltip = "Good topic candidate",
},
bplus = {
aliases = {"b+"},
image = "Symbol bplus class.svg",
tooltip = "Bplus-Class article",
},
b = {
image = "Symbol b class.svg",
tooltip = "B-Class article",
},
br = {
aliases = {"bcr"},
image = "Bclass-checklist.svg",
tooltip = "B-Class review",
},
c = {
image = "Symbol c class.svg",
tooltip = "C-Class article",
},
start = {
image = "Symbol start class.svg",
tooltip = "Start-Class article",
},
stub = {
image = "Symbol stub class.svg",
tooltip = "Stub-Class article",
},
list = {
aliases = {"comparison"},
image = "Symbol list class.svg",
tooltip = "List-Class article",
},
no = {
image = "Crystal button cancel.svg",
tooltip = "Unknown-Class article",
},
book = {
image = "Symbol book class2.svg",
tooltip = "Wikipedia book",
},
category = {
aliases = {"cat", "categ"},
image = "Folder Hexagonal Icon.svg",
tooltip = "Category",
},
disambiguation = {
aliases = {"dab", "disamb", "disambig"},
image = "Symbol dab class.svg",
tooltip = "Disambiguation page",
},
image = {
aliases = {"file"},
image = "Video-x-generic.svg",
tooltip = "File",
},
needed = {
image = "Symbol needed class.svg",
tooltip = "Needed article",
},
outline = {
image = "Global thinking.svg",
tooltip = "Outline",
},
portal = {
image = "Portal-puzzle.svg",
tooltip = "Portal",
},
project = {
image = "Symbol information vote.svg",
tooltip = "Project page",
},
redirect = {
aliases = {"red", "redir"},
image = "Symbol redirect vote2.svg",
tooltip = "Redirect",
},
template = {
aliases = {"temp", "templ"},
image = "Symbol template class.svg",
tooltip = "Template",
},
essay = {
image = "Essay.svg",
tooltip = "Essay",
},
na = {
image = "Symbol neutral vote.svg",
tooltip = "Non-article page",
},
aa = {
image = "Yes check.svg",
tooltip = "Audited article of limited subject matter",
},
da = {
image = "Symbol oppose vote.svg",
tooltip = "Demoted article",
},
dyk = {
image = "Symbol question.svg",
tooltip = "Did You Know?",
},
dyk2 = {
image = "DYK questionmark icon.svg",
tooltip = "Did You Know?",
},
pr = {
image = "Nuvola apps kedit.png",
tooltip = "Peer review",
},
ppr = {
image = "Nuvola apps kedit.png",
tooltip = "Portal peer review",
},
q = {
aliases = {"question"},
image = "Symbol question.svg",
tooltip = "Question",
},
qi = {
image = "Quality images logo.svg",
tooltip = "Quality image on Wikimedia Commons",
},
vi = {
image = "Valued image seal.svg",
tooltip = "Valued image on Wikimedia Commons",
},
tfa = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured Article",
},
tfl = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured List",
},
itn = {
image = "Globe current.svg",
tooltip = "In The News",
},
otd = {
image = "Nuvola apps date.svg",
tooltip = "On This Day",
},
wikiproject = {
image = "People icon.svg",
tooltip = "WikiProject",
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
},
commons = {
image = "Commons-logo.svg",
tooltip = "Commons page",
},
wikiquote = {
image = "Wikiquote-logo.svg",
tooltip = "Wikiquote page",
},
wikiversity = {
image = "Wikiversity-logo.svg",
tooltip = "Wikiversity page",
},
wikibooks = {
image = "Wikibooks-logo.svg",
tooltip = "Wikibooks page",
},
wikisource = {
image = "Wikisource-logo.svg",
tooltip = "Wikisource page",
},
wiktionary = {
image = "Wiktionary-logo.svg",
tooltip = "Wiktionary page",
},
wikinews = {
image = "Wikinews-logo.svg",
tooltip = "Wikinews page",
},
wikispecies = {
image = "Wikispecies-logo.svg",
tooltip = "Wikispecies page",
},
wikidata = {
image = "Wikidata-logo.svg",
tooltip = "Wikidata page",
},
wikivoyage = {
image = "Wikivoyage-logo.svg",
tooltip = "Wikivoyage page",
},
meta = {
image = "Wikimedia Community Logo.svg",
tooltip = "Meta-wiki page",
},
four = {
image = "Four Award.svg",
tooltip = "Four Award",
},
million = {
image = "Million award logo.svg",
tooltip = "Million Award",
},
module = {
image = "Lua-logo-nolabel.svg",
tooltip = "Module",
},
vital = {
image = "Círculos_Concéntricos.svg",
tooltip = "Vital article",
},
_DEFAULT = {
image = "Symbol question.svg",
}
}
--------------------------------------------------------------------------------
-- End icon data
--------------------------------------------------------------------------------
-- Make aliases work the same as normal keys, and remove the "aliases" subtables.
for k, t in pairs(data) do
if t.aliases then
for i, alias in ipairs(t.aliases) do
data[alias] = t
end
t.aliases = nil
end
data[k] = t
end
return data
a8dgbrnmc8lyixix5fkiw5tfctl66dq
Module:Infobox
828
1307
2846
2845
2020-09-29T19:18:18Z
Chrisb
1
1 revision imported
2845
Scribunto
text/plain
--
-- This module implements {{Infobox}}
--
local p = {}
local navbar = require('Module:Navbar')._navbar
local args = {}
local origArgs = {}
local root
local function notempty( s ) return s and s:match( '%S' ) end
local function fixChildBoxes(sval, tt)
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
local function union(t1, t2)
-- Returns the union of the values of two tables, as a sequence.
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
local function getArgNums(prefix)
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
local function addRow(rowArgs)
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:attr('id', rowArgs.rowid)
:tag('th')
:attr('colspan', 2)
:attr('id', rowArgs.headerid)
:addClass(rowArgs.class)
:addClass(args.headerclass)
:css('text-align', 'center')
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext('[[Category:Pages which use infobox templates with ignored data cells]]')
end
elseif rowArgs.data then
if not rowArgs.data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then
rowArgs.rowstyle = 'display:none'
end
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row:attr('id', rowArgs.rowid)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:attr('id', rowArgs.labelid)
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
if not rowArgs.label then
dataCell
:attr('colspan', 2)
:css('text-align', 'center')
end
dataCell
:attr('id', rowArgs.dataid)
:addClass(rowArgs.class)
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
end
end
local function renderTitle()
if not args.title then return end
root
:tag('caption')
:addClass(args.titleclass)
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
root
:tag('tr')
:tag('th')
:attr('colspan', 2)
:addClass(args.aboveclass)
:css('text-align', 'center')
:css('font-size', '125%')
:css('font-weight', 'bold')
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass(args.belowclass)
:css('text-align', 'center')
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addRow({
data = args['subheader' .. tostring(num)],
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:cssText(args.captionstyle)
:wikitext(caption)
end
addRow({
data = tostring(data),
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
local function preprocessRows()
-- Gets the union of the header and data argument numbers,
-- and renders them all in order using addRow.
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
local function renderRows()
-- Gets the union of the header and data argument numbers,
-- and renders them all in order using addRow.
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
dataid = args['dataid' .. tostring(num)],
labelid = args['labelid' .. tostring(num)],
headerid = args['headerid' .. tostring(num)],
rowid = args['rowid' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'right')
:wikitext(navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
end
end
local function renderTrackingCategories()
if args.decat ~= 'yes' then
if args.child == 'yes' then
if args.title then
root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]')
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
end
end
end
local function _infobox()
-- Specify the overall layout of the infobox, with special settings
-- if the infobox is used as a 'child' inside another infobox.
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass((args.subbox ~= 'yes') and 'infobox' or nil)
:addClass(args.bodyclass)
if args.subbox == 'yes' then
root
:css('padding', '0')
:css('border', 'none')
:css('margin', '-3px')
:css('width', 'auto')
:css('min-width', '100%')
:css('font-size', '100%')
:css('clear', 'none')
:css('float', 'none')
:css('background-color', 'transparent')
else
root
:css('width', '22em')
end
root
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
renderSubheaders()
renderImages()
if args.autoheaders then
preprocessRows()
end
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderTrackingCategories()
return tostring(root)
end
local function preprocessSingleArg(argName)
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
local function preprocessArgs(prefixTable, step)
-- Assign the parameters with the given prefixes to the args table, in order, in batches
-- of the step size specified. This is to prevent references etc. from appearing in the
-- wrong order. The prefixTable should be an array containing tables, each of which has
-- two possible fields, a "prefix" string and a "depend" table. The function always parses
-- parameters containing the "prefix" string, but only parses parameters in the "depend"
-- table if the prefix parameter is present and non-blank.
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones.
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present and not blank, or
-- we are processing "prefix1" and "prefix" is present and not blank, and
-- if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
local function parseDataParameters()
-- Parse the data parameters in the same order that the old {{infobox}} did, so that
-- references etc. will display in the expected places. Parameters that depend on
-- another parameter are only processed if that parameter is present, to avoid
-- phantom references appearing in article reference lists.
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'},
{prefix = 'dataid'},
{prefix = 'labelid'},
{prefix = 'headerid'},
{prefix = 'rowid'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent
preprocessSingleArg('decat')
end
function p.infobox(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
function p.infoboxTemplate(frame)
-- For calling via #invoke within a template
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
icv7hicbyi1nka7zvdkn0xjgl2xiiia
Module:InfoboxImage
828
1669
4986
4985
2020-10-11T05:50:45Z
Chrisb
1
1 revision imported
4985
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
elseif mw.title.getCurrentTitle().namespace == 0 then
cat = "[[Category:Pages using deprecated image syntax]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center= frame.args["center"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
elseif alt ~= "" and alt ~= nil then
result = result .. "|" .. alt;
end
result = result .. "]]";
return result;
end
end
return i;
tokoxmq8k6xg8hz3ed4w86r9v6ed3vl
Module:Labelled list hatnote
828
1473
3250
3249
2020-10-11T01:36:01Z
Chrisb
1
1 revision imported
3249
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Labelled list --
-- --
-- This module does the core work of creating a hatnote composed of a list --
-- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", --
-- for {{see also}} and similar templates. --
--------------------------------------------------------------------------------
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local p = {}
-- Defaults global to this module
local defaults = {
label = 'See also', --Final fallback for label argument
labelForm = '%s: %s',
prefixes = {'label', 'label ', 'l'},
template = 'Module:Labelled list hatnote'
}
-- Helper function that pre-combines display parameters into page arguments.
-- Also compresses sparse arrays, as a desirable side-effect.
function p.preprocessDisplays (args, prefixes)
-- Prefixes specify which parameters, in order, to check for display options
-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'
prefixes = prefixes or defaults.prefixes
local pages = {}
for k, v in pairs(args) do
if type(k) == 'number' then
local display
for i = 1, #prefixes do
display = args[prefixes[i] .. k]
if display then break end
end
local page = display and
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
pages[#pages + 1] = page
end
end
return pages
end
-- Produces a labelled pages-list hatnote.
-- The main frame (template definition) takes 1 or 2 arguments, for a singular
-- and (optionally) plural label respectively:
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}
-- The resulting template takes pagename & label parameters normally.
function p.labelledList (frame)
mArguments = require('Module:Arguments')
local labels = {frame.args[1] or defaults.label}
labels[2] = frame.args[2] or labels[1]
local template = frame:getParent():getTitle()
local args = mArguments.getArgs(frame, {parentOnly = true})
local pages = p.preprocessDisplays(args)
local options = {
extraclasses = frame.args.extraclasses,
category = args.category,
selfref = frame.args.selfref or args.selfref,
template = template
}
return p._labelledList(pages, labels, options)
end
function p._labelledList (pages, labels, options)
labels = labels or {}
if #pages == 0 then
return mHatnote.makeWikitextError(
'no page names specified',
(options.template or defaults.template) .. '#Errors',
options.category
)
end
label = (#pages == 1 and labels[1] or labels[2]) or defaults.label
local text = string.format(
options.labelForm or defaults.labelForm,
label,
mHatlist.andList(pages, true)
)
local hnOptions = {
extraclasses = options.extraclasses,
selfref = options.selfref
}
return mHatnote._hatnote(text, hnOptions)
end
return p
932zychfwl5xu5castj2k9j5qs6lzif
Module:List
828
1308
2848
2847
2020-09-29T19:18:18Z
Chrisb
1
1 revision imported
2847
Scribunto
text/plain
-- This module outputs different kinds of lists. At the moment, bulleted,
-- unbulleted, horizontal, ordered, and horizontal ordered lists are supported.
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes
data.classes = {}
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist hlist-separated')
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for i, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for i, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for i, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
1kfxv6e8upfdko23gc41ky0lax25kzs
Module:Lua banner
828
1309
2850
2849
2020-09-29T19:18:18Z
Chrisb
1
1 revision imported
2849
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Lua String-based templates',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation'] = 'Lua-based citation templates'
}
categories['Module:Citation/CS1'] = categories['Module:Citation']
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
jyzkcu97in5ms894d1hxq91kby64msp
Module:Message box
828
868
1968
1967
2020-09-29T19:15:35Z
Chrisb
1
1 revision imported
1967
Scribunto
text/plain
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.
-- Load necessary modules.
require('Module:No globals')
local getArgs
local yesno = require('Module:Yesno')
-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()
-- Define constants
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
if cfg.imageEmptyCellStyle then
self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
end
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
:cssText(self.imageEmptyCellStyle or nil)
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('small')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):css('width', '52px')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:css('text-align', 'center')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
tiqc5on6uuhw82w1gda9wz6beyz2y0x
Module:Message box/configuration
828
869
1970
1969
2020-09-29T19:15:35Z
Chrisb
1
1 revision imported
1969
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '[[Help:Maintenance template removal|Learn how and when to remove this template message]]'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
imageEmptyCellStyle = true,
templateCategory = 'Talk message boxes'
}
}
rz63o9789otb966y0k5pcntqf0bl6te
Module:Message box/configuration/doc
828
894
2020
2019
2020-09-29T19:15:40Z
Chrisb
1
1 revision imported
2019
wikitext
text/x-wiki
{{high-use|6585462}}
{{Used in system}}
{{Module rating|protected}}
6mhwoofggnpm89njapz90to04wmgjtl
Module:Message box/doc
828
888
2008
2007
2020-09-29T19:15:39Z
Chrisb
1
1 revision imported
2007
wikitext
text/x-wiki
{{High-use|6,323,224+|all-pages = yes}}
{{Used in system}}
{{module rating|p}}
This is a meta-module that implements the message box templates {{tl|mbox}}, {{tl|ambox}}, {{tl|cmbox}}, {{tl|fmbox}}, {{tl|imbox}}, {{tl|ombox}}, and {{tl|tmbox}}. It is intended to be used from Lua modules, and should not be used directly from wiki pages. If you want to use this module's functionality from a wiki page, please use the individual message box templates instead.
== Usage ==
To use this module from another Lua module, first you need to load it.
<syntaxhighlight lang="lua">
local messageBox = require('Module:Message box')
</syntaxhighlight>
To create a message box, use the <code>main</code> function. It takes two parameters: the first is the box type (as a string), and the second is a table containing the message box parameters.
<syntaxhighlight lang="lua">
local box = messageBox.main( boxType, {
param1 = param1,
param2 = param2,
-- More parameters...
})
</syntaxhighlight>
There are seven available box types:
{| class="wikitable"
! Box type !! Template !! Purpose
|-
| <code>mbox</code> || {{tl|mbox}} || For message boxes to be used in multiple namespaces
|-
| <code>ambox</code> || {{tl|ambox}} || For article message boxes
|-
| <code>cmbox</code> || {{tl|cmbox}} || For category message boxes
|-
| <code>fmbox</code> || {{tl|fmbox}} || For interface message boxes
|-
| <code>imbox</code> || {{tl|imbox}} || For file namespace message boxes
|-
| <code>tmbox</code> || {{tl|tmbox}} || For talk page message boxes
|-
| <code>ombox</code> || {{tl|ombox}} || For message boxes in other namespaces
|}
See the template page of each box type for the available parameters.
== Usage from #invoke ==
As well as the <code>main</code> function, this module has separate functions for each box type. They are accessed using the code <code><nowiki>{{#invoke:Message box|mbox|...}}</nowiki></code>, <code><nowiki>{{#invoke:Message box|ambox|...}}</nowiki></code>, etc. These will work when called from other modules, but they access code used to process arguments passed from #invoke, and so calling them will be less efficient than calling <code>main</code>.
== Technical details ==
The module uses the same basic code for each of the templates listed above; the differences between each of them are configured using the data at [[Module:Message box/configuration]]. Here are the various configuration options and what they mean:
* <code>types</code> – a table containing data used by the type parameter of the message box. The table keys are the values that can be passed to the type parameter, and the table values are tables containing the class and the image used by that type.
* <code>default</code> – the type to use if no value was passed to the type parameter, or if an invalid value was specified.
* <code>showInvalidTypeError</code> – whether to show an error if the value passed to the type parameter was invalid.
* <code>allowBlankParams</code> – usually blank values are stripped from parameters passed to the module. However, whitespace is preserved for the parameters included in the allowBlankParams table.
* <code>allowSmall</code> – whether a small version of the message box can be produced with "small=yes".
* <code>smallParam</code> – a custom name for the small parameter. For example, if set to "left" you can produce a small message box using "small=left".
* <code>smallClass</code> – the class to use for small message boxes.
* <code>substCheck</code> – whether to perform a subst check or not.
* <code>classes</code> – an array of classes to use with the message box.
* <code>imageEmptyCell</code> – whether to use an empty {{tag|td}} cell if there is no image set. This is used to preserve spacing for message boxes with a width of less than 100% of the screen.
* <code>imageEmptyCellStyle</code> – whether empty image cells should be styled.
* <code>imageCheckBlank</code> – whether "image=blank" results in no image being displayed.
* <code>imageSmallSize</code> – usually, images used in small message boxes are set to 30x30px. This sets a custom size.
* <code>imageCellDiv</code> – whether to enclose the image in a div enforcing a maximum image size.
* <code>useCollapsibleTextFields</code> – whether to use text fields that can be collapsed, i.e. "issue", "fix", "talk", etc. Currently only used in ambox.
* <code>imageRightNone</code> – whether imageright=none results in no image being displayed on the right-hand side of the message box.
* <code>sectionDefault</code> – the default name for the "section" parameter. Depends on <code>useCollapsibleTextFields</code>.
* <code>allowMainspaceCategories</code> – allow categorisation in the main namespace.
* <code>templateCategory</code> – the name of a category to be placed on the template page.
* <code>templateCategoryRequireName</code> – whether the <code>name</code> parameter is required to display the template category.
* <code>templateErrorCategory</code> – the name of the error category to be used on the template page.
* <code>templateErrorParamsToCheck</code> – an array of parameter names to check. If any are absent, the <code>templateErrorCategory</code> is applied to the template page.
re49gipsysdi8dr5si150dtxxr4b4co
Module:Message box/testcases
828
1170
2572
2571
2020-09-29T19:17:57Z
Chrisb
1
1 revision imported
2571
wikitext
text/x-wiki
{{ambox/testcases}}
{{cmbox/testcases}}
{{imbox/testcases}}
{{fmbox/testcases}}
{{mbox/testcases}}
{{ombox/testcases}}
{{tmbox/testcases}}
dm1l0klbnx7aresxqqqt9vldlsciva6
Module:Namespace detect
828
905
2042
2041
2020-09-29T19:15:44Z
Chrisb
1
1 revision imported
2041
Scribunto
text/plain
--[[
--------------------------------------------------------------------------------
-- --
-- NAMESPACE DETECT --
-- --
-- This module implements the {{namespace detect}} template in Lua, with a --
-- few improvements: all namespaces and all namespace aliases are supported, --
-- and namespace names are detected automatically for the local wiki. The --
-- module can also use the corresponding subject namespace value if it is --
-- used on a talk page. Parameter names can be configured for different wikis --
-- by altering the values in the "cfg" table in --
-- Module:Namespace detect/config. --
-- --
--------------------------------------------------------------------------------
--]]
local data = mw.loadData('Module:Namespace detect/data')
local argKeys = data.argKeys
local cfg = data.cfg
local mappings = data.mappings
local yesno = require('Module:Yesno')
local mArguments -- Lazily initialise Module:Arguments
local mTableTools -- Lazily initilalise Module:TableTools
local ustringLower = mw.ustring.lower
local p = {}
local function fetchValue(t1, t2)
-- Fetches a value from the table t1 for the first key in array t2 where
-- a non-nil value of t1 exists.
for i, key in ipairs(t2) do
local value = t1[key]
if value ~= nil then
return value
end
end
return nil
end
local function equalsArrayValue(t, value)
-- Returns true if value equals a value in the array t. Otherwise
-- returns false.
for i, arrayValue in ipairs(t) do
if value == arrayValue then
return true
end
end
return false
end
function p.getPageObject(page)
-- Get the page object, passing the function through pcall in case of
-- errors, e.g. being over the expensive function count limit.
if page then
local success, pageObject = pcall(mw.title.new, page)
if success then
return pageObject
else
return nil
end
else
return mw.title.getCurrentTitle()
end
end
-- Provided for backward compatibility with other modules
function p.getParamMappings()
return mappings
end
local function getNamespace(args)
-- This function gets the namespace name from the page object.
local page = fetchValue(args, argKeys.demopage)
if page == '' then
page = nil
end
local demospace = fetchValue(args, argKeys.demospace)
if demospace == '' then
demospace = nil
end
local subjectns = fetchValue(args, argKeys.subjectns)
local ret
if demospace then
-- Handle "demospace = main" properly.
if equalsArrayValue(argKeys.main, ustringLower(demospace)) then
ret = mw.site.namespaces[0].name
else
ret = demospace
end
else
local pageObject = p.getPageObject(page)
if pageObject then
if pageObject.isTalkPage then
-- Get the subject namespace if the option is set,
-- otherwise use "talk".
if yesno(subjectns) then
ret = mw.site.namespaces[pageObject.namespace].subject.name
else
ret = 'talk'
end
else
ret = pageObject.nsText
end
else
return nil -- return nil if the page object doesn't exist.
end
end
ret = ret:gsub('_', ' ')
return ustringLower(ret)
end
function p._main(args)
-- Check the parameters stored in the mappings table for any matches.
local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys
local params = mappings[namespace] or {}
local ret = fetchValue(args, params)
--[[
-- If there were no matches, return parameters for other namespaces.
-- This happens if there was no text specified for the namespace that
-- was detected or if the demospace parameter is not a valid
-- namespace. Note that the parameter for the detected namespace must be
-- completely absent for this to happen, not merely blank.
--]]
if ret == nil then
ret = fetchValue(args, argKeys.other)
end
return ret
end
function p.main(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {removeBlanks = false})
local ret = p._main(args)
return ret or ''
end
function p.table(frame)
--[[
-- Create a wikitable of all subject namespace parameters, for
-- documentation purposes. The talk parameter is optional, in case it
-- needs to be excluded in the documentation.
--]]
-- Load modules and initialise variables.
mTableTools = require('Module:TableTools')
local namespaces = mw.site.namespaces
local cfg = data.cfg
local useTalk = type(frame) == 'table'
and type(frame.args) == 'table'
and yesno(frame.args.talk) -- Whether to use the talk parameter.
-- Get the header names.
local function checkValue(value, default)
if type(value) == 'string' then
return value
else
return default
end
end
local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace')
local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases')
-- Put the namespaces in order.
local mappingsOrdered = {}
for nsname, params in pairs(mappings) do
if useTalk or nsname ~= 'talk' then
local nsid = namespaces[nsname].id
-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.
nsid = nsid + 1
mappingsOrdered[nsid] = params
end
end
mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)
-- Build the table.
local ret = '{| class="wikitable"'
.. '\n|-'
.. '\n! ' .. nsHeader
.. '\n! ' .. aliasesHeader
for i, params in ipairs(mappingsOrdered) do
for j, param in ipairs(params) do
if j == 1 then
ret = ret .. '\n|-'
.. '\n| <code>' .. param .. '</code>'
.. '\n| '
elseif j == 2 then
ret = ret .. '<code>' .. param .. '</code>'
else
ret = ret .. ', <code>' .. param .. '</code>'
end
end
end
ret = ret .. '\n|-'
.. '\n|}'
return ret
end
return p
j7kygz1y56jpz4doq0m2c6x1td5d8ar
Module:Namespace detect/config
828
906
2044
2043
2020-09-29T19:15:44Z
Chrisb
1
1 revision imported
2043
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect configuration data --
-- --
-- This module stores configuration data for Module:Namespace detect. Here --
-- you can localise the module to your wiki's language. --
-- --
-- To activate a configuration item, you need to uncomment it. This means --
-- that you need to remove the text "-- " at the start of the line. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. Values added --
-- here will work in addition to the default English parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- cfg.foo = 'parameter name' --
-- --
-- To add multiple names, you can use this format: --
-- --
-- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} --
--------------------------------------------------------------------------------
---- This parameter displays content for the main namespace:
-- cfg.main = 'main'
---- This parameter displays in talk namespaces:
-- cfg.talk = 'talk'
---- This parameter displays content for "other" namespaces (namespaces for which
---- parameters have not been specified):
-- cfg.other = 'other'
---- This parameter makes talk pages behave as though they are the corresponding
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].
---- Edit that module to change the default values of "yes", "no", etc.
-- cfg.subjectns = 'subjectns'
---- This parameter sets a demonstration namespace:
-- cfg.demospace = 'demospace'
---- This parameter sets a specific page to compare:
cfg.demopage = 'page'
--------------------------------------------------------------------------------
-- Table configuration --
-- These configuration items allow customisation of the "table" function, --
-- used to generate a table of possible parameters in the module --
-- documentation. --
--------------------------------------------------------------------------------
---- The header for the namespace column in the wikitable containing the list of
---- possible subject-space parameters.
-- cfg.wikitableNamespaceHeader = 'Namespace'
---- The header for the wikitable containing the list of possible subject-space
---- parameters.
-- cfg.wikitableAliasesHeader = 'Aliases'
--------------------------------------------------------------------------------
-- End of configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
1o6ozz56i8q0xgyl6xa41n2v7kelhli
Module:Namespace detect/data
828
907
2046
2045
2020-09-29T19:15:45Z
Chrisb
1
1 revision imported
2045
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect data --
-- This module holds data for [[Module:Namespace detect]] to be loaded per --
-- page, rather than per #invoke, for performance reasons. --
--------------------------------------------------------------------------------
local cfg = require('Module:Namespace detect/config')
local function addKey(t, key, defaultKey)
if key ~= defaultKey then
t[#t + 1] = key
end
end
-- Get a table of parameters to query for each default parameter name.
-- This allows wikis to customise parameter names in the cfg table while
-- ensuring that default parameter names will always work. The cfg table
-- values can be added as a string, or as an array of strings.
local defaultKeys = {
'main',
'talk',
'other',
'subjectns',
'demospace',
'demopage'
}
local argKeys = {}
for i, defaultKey in ipairs(defaultKeys) do
argKeys[defaultKey] = {defaultKey}
end
for defaultKey, t in pairs(argKeys) do
local cfgValue = cfg[defaultKey]
local cfgValueType = type(cfgValue)
if cfgValueType == 'string' then
addKey(t, cfgValue, defaultKey)
elseif cfgValueType == 'table' then
for i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
local function getParamMappings()
--[[
-- Returns a table of how parameter names map to namespace names. The keys
-- are the actual namespace names, in lower case, and the values are the
-- possible parameter names for that namespace, also in lower case. The
-- table entries are structured like this:
-- {
-- [''] = {'main'},
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},
-- ...
-- }
--]]
local mappings = {}
local mainNsName = mw.site.subjectNamespaces[0].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
local nsname = mw.ustring.lower(ns.name)
local canonicalName = mw.ustring.lower(ns.canonicalName)
mappings[nsname] = {nsname}
if canonicalName ~= nsname then
table.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
table.insert(mappings[nsname], mw.ustring.lower(alias))
end
end
end
return mappings
end
return {
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}
ojp6d3pc8mql5nufaqdg576c9so3479
Module:Navbar
828
1310
2852
2851
2020-09-29T19:18:19Z
Chrisb
1
1 revision imported
2851
Scribunto
text/plain
local p = {}
local getArgs
local ul
function p.addItem (mini, full, link, descrip, args, url)
local l
if url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-'..full)
:wikitext(l[1] .. link .. l[2])
:tag(args.mini and 'abbr' or 'span')
:attr('title', descrip..' this template')
:cssText(args.fontstyle)
:wikitext(args.mini and mini or full)
:done()
:wikitext(l[3])
end
function p.brackets (position, c, args, div)
if args.brackets then
div
:tag('span')
:css('margin-'..position, '-0.125em')
:cssText(args.fontstyle)
:wikitext(c)
end
end
function p._navbar(args)
local show = {true, true, true, false, false, false}
local titleArg = 1
if args.collapsible then
titleArg = 2
if not args.plain then args.mini = 1 end
if args.fontcolor then
args.fontstyle = 'color:' .. args.fontcolor .. ';'
end
args.style = 'float:left; text-align:left'
end
if args.template then
titleArg = 'template'
show = {true, false, false, false, false, false}
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
for k,v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
if args.noedit then show[3] = false end
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local title = mw.title.new(mw.text.trim(titleText), 'Template')
if not title then
error('Invalid title ' .. titleText)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
local div = mw.html.create():tag('div')
div
:addClass('plainlinks')
:addClass('hlist')
:addClass('navbar')
:cssText(args.style)
if args.mini then div:addClass('mini') end
if not (args.mini or args.plain) then
div
:tag('span')
:css('word-spacing', 0)
:cssText(args.fontstyle)
:wikitext(args.text or 'This box:')
:wikitext(' ')
end
p.brackets('right', '[ ', args, div)
ul = div:tag('ul')
if show[1] then p.addItem('v', 'view', title.fullText, 'View', args) end
if show[2] then p.addItem('t', 'talk', talkpage, 'Discuss', args) end
if show[3] then p.addItem('e', 'edit', title:fullUrl('action=edit'), 'Edit', args, true) end
if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'History of', args, true) end
if show[5] then
local move = mw.title.new ('Special:Movepage')
p.addItem('m', 'move', move:fullUrl('target='..title.fullText), 'Move', args, true) end
if show[6] then p.addItem('w', 'watch', title:fullUrl('action=watch'), 'Watch', args, true) end
p.brackets('left', ' ]', args, div)
if args.collapsible then
div
:done()
:tag('div')
:css('font-size', '114%')
:css('margin', args.mini and '0 4em' or '0 7em')
:cssText(args.fontstyle)
:wikitext(args[1])
end
return tostring(div:done())
end
function p.navbar(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._navbar(getArgs(frame))
end
return p
0kto9e56pycr6rz0vadnqvghkpm06x9
Module:Navbox
828
1474
3252
3251
2020-10-11T01:36:02Z
Chrisb
1
1 revision imported
3251
Scribunto
text/plain
--
-- This module implements {{Navbox}}
--
local p = {}
local navbar = require('Module:Navbar')._navbar
local getArgs -- lazily initialized
local args
local border
local listnums
local ODD_EVEN_MARKER = '\127_ODDEVEN_\127'
local RESTART_MARKER = '\127_ODDEVEN0_\127'
local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127'
local function striped(wikitext)
-- Return wikitext with markers replaced for odd/even striping.
-- Child (subgroup) navboxes are flagged with a category that is removed
-- by parent navboxes. The result is that the category shows all pages
-- where a child navbox is not contained in a parent navbox.
local orphanCat = '[[Category:Navbox orphans]]'
if border == 'subgroup' and args.orphan ~= 'yes' then
-- No change; striping occurs in outermost navbox.
return wikitext .. orphanCat
end
local first, second = 'odd', 'even'
if args.evenodd then
if args.evenodd == 'swap' then
first, second = second, first
else
first = args.evenodd
second = first
end
end
local changer
if first == second then
changer = first
else
local index = 0
changer = function (code)
if code == '0' then
-- Current occurrence is for a group before a nested table.
-- Set it to first as a valid although pointless class.
-- The next occurrence will be the first row after a title
-- in a subgroup and will also be first.
index = 0
return first
end
index = index + 1
return index % 2 == 1 and first or second
end
end
local regex = orphanCat:gsub('([%[%]])', '%%%1')
return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) -- () omits gsub count
end
local function processItem(item, nowrapitems)
if item:sub(1, 2) == '{|' then
-- Applying nowrap to lines in a table does not make sense.
-- Add newlines to compensate for trim of x in |parm=x in a template.
return '\n' .. item ..'\n'
end
if nowrapitems == 'yes' then
local lines = {}
for line in (item .. '\n'):gmatch('([^\n]*)\n') do
local prefix, content = line:match('^([*:;#]+)%s*(.*)')
if prefix and not content:match('^<span class="nowrap">') then
line = prefix .. '<span class="nowrap">' .. content .. '</span>'
end
table.insert(lines, line)
end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
end
return item
end
local function renderNavBar(titleCell)
if args.navbar ~= 'off' and args.navbar ~= 'plain' and not (not args.name and mw.getCurrentFrame():getParent():getTitle():gsub('/sandbox$', '') == 'Template:Navbox') then
titleCell:wikitext(navbar{
args.name,
mini = 1,
fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none; padding:0;'
})
end
end
--
-- Title row
--
local function renderTitleRow(tbl)
if not args.title then return end
local titleRow = tbl:tag('tr')
if args.titlegroup then
titleRow
:tag('th')
:attr('scope', 'row')
:addClass('navbox-group')
:addClass(args.titlegroupclass)
:cssText(args.basestyle)
:cssText(args.groupstyle)
:cssText(args.titlegroupstyle)
:wikitext(args.titlegroup)
end
local titleCell = titleRow:tag('th'):attr('scope', 'col')
if args.titlegroup then
titleCell
:css('border-left', '2px solid #fdfdfd')
:css('width', '100%')
end
local titleColspan = 2
if args.imageleft then titleColspan = titleColspan + 1 end
if args.image then titleColspan = titleColspan + 1 end
if args.titlegroup then titleColspan = titleColspan - 1 end
titleCell
:cssText(args.basestyle)
:cssText(args.titlestyle)
:addClass('navbox-title')
:attr('colspan', titleColspan)
renderNavBar(titleCell)
titleCell
:tag('div')
-- id for aria-labelledby attribute
:attr('id', mw.uri.anchorEncode(args.title))
:addClass(args.titleclass)
:css('font-size', '114%')
:css('margin', '0 4em')
:wikitext(processItem(args.title))
end
--
-- Above/Below rows
--
local function getAboveBelowColspan()
local ret = 2
if args.imageleft then ret = ret + 1 end
if args.image then ret = ret + 1 end
return ret
end
local function renderAboveRow(tbl)
if not args.above then return end
tbl:tag('tr')
:tag('td')
:addClass('navbox-abovebelow')
:addClass(args.aboveclass)
:cssText(args.basestyle)
:cssText(args.abovestyle)
:attr('colspan', getAboveBelowColspan())
:tag('div')
-- id for aria-labelledby attribute, if no title
:attr('id', args.title and nil or mw.uri.anchorEncode(args.above))
:wikitext(processItem(args.above, args.nowrapitems))
end
local function renderBelowRow(tbl)
if not args.below then return end
tbl:tag('tr')
:tag('td')
:addClass('navbox-abovebelow')
:addClass(args.belowclass)
:cssText(args.basestyle)
:cssText(args.belowstyle)
:attr('colspan', getAboveBelowColspan())
:tag('div')
:wikitext(processItem(args.below, args.nowrapitems))
end
--
-- List rows
--
local function renderListRow(tbl, index, listnum)
local row = tbl:tag('tr')
if index == 1 and args.imageleft then
row
:tag('td')
:addClass('noviewer')
:addClass('navbox-image')
:addClass(args.imageclass)
:css('width', '1px') -- Minimize width
:css('padding', '0px 2px 0px 0px')
:cssText(args.imageleftstyle)
:attr('rowspan', #listnums)
:tag('div')
:wikitext(processItem(args.imageleft))
end
if args['group' .. listnum] then
local groupCell = row:tag('th')
-- id for aria-labelledby attribute, if lone group with no title or above
if listnum == 1 and not (args.title or args.above or args.group2) then
groupCell
:attr('id', mw.uri.anchorEncode(args.group1))
end
groupCell
:attr('scope', 'row')
:addClass('navbox-group')
:addClass(args.groupclass)
:cssText(args.basestyle)
:css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width
groupCell
:cssText(args.groupstyle)
:cssText(args['group' .. listnum .. 'style'])
:wikitext(args['group' .. listnum])
end
local listCell = row:tag('td')
if args['group' .. listnum] then
listCell
:css('text-align', 'left')
:css('border-left-width', '2px')
:css('border-left-style', 'solid')
else
listCell:attr('colspan', 2)
end
if not args.groupwidth then
listCell:css('width', '100%')
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing
if index % 2 == 1 then
rowstyle = args.oddstyle
else
rowstyle = args.evenstyle
end
local listText = args['list' .. listnum]
local oddEven = ODD_EVEN_MARKER
if listText:sub(1, 12) == '</div><table' then
-- Assume list text is for a subgroup navbox so no automatic striping for this row.
oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd'
end
listCell
:css('padding', '0px')
:cssText(args.liststyle)
:cssText(rowstyle)
:cssText(args['list' .. listnum .. 'style'])
:addClass('navbox-list')
:addClass('navbox-' .. oddEven)
:addClass(args.listclass)
:addClass(args['list' .. listnum .. 'class'])
:tag('div')
:css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em')
:wikitext(processItem(listText, args.nowrapitems))
if index == 1 and args.image then
row
:tag('td')
:addClass('noviewer')
:addClass('navbox-image')
:addClass(args.imageclass)
:css('width', '1px') -- Minimize width
:css('padding', '0px 0px 0px 2px')
:cssText(args.imagestyle)
:attr('rowspan', #listnums)
:tag('div')
:wikitext(processItem(args.image))
end
end
--
-- Tracking categories
--
local function needsHorizontalLists()
if border == 'subgroup' or args.tracking == 'no' then
return false
end
local listClasses = {
['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true,
['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true,
['hlist vevent'] = true,
}
return not (listClasses[args.listclass] or listClasses[args.bodyclass])
end
local function hasBackgroundColors()
for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do
if tostring(args[key]):find('background', 1, true) then
return true
end
end
end
local function hasBorders()
for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do
if tostring(args[key]):find('border', 1, true) then
return true
end
end
end
local function isIllegible()
local styleratio = require('Module:Color contrast')._styleratio
for key, style in pairs(args) do
if tostring(key):match("style$") then
if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
return true
end
end
end
return false
end
local function getTrackingCategories()
local cats = {}
if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end
if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end
if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end
if hasBorders() then table.insert(cats, 'Navboxes using borders') end
return cats
end
local function renderTrackingCategories(builder)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 then return end -- not in template space
local subpage = title.subpageText
if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end
for _, cat in ipairs(getTrackingCategories()) do
builder:wikitext('[[Category:' .. cat .. ']]')
end
end
--
-- Main navbox tables
--
local function renderMainTable()
local tbl = mw.html.create('table')
:addClass('nowraplinks')
:addClass(args.bodyclass)
if args.title and (args.state ~= 'plain' and args.state ~= 'off') then
if args.state == 'collapsed' then args.state = 'mw-collapsed' end
tbl
:addClass('mw-collapsible')
:addClass(args.state or 'autocollapse')
end
tbl:css('border-spacing', 0)
if border == 'subgroup' or border == 'none' then
tbl
:addClass('navbox-subgroup')
:cssText(args.bodystyle)
:cssText(args.style)
else -- regular navbox - bodystyle and style will be applied to the wrapper table
tbl
:addClass('navbox-inner')
:css('background', 'transparent')
:css('color', 'inherit')
end
tbl:cssText(args.innerstyle)
renderTitleRow(tbl)
renderAboveRow(tbl)
for i, listnum in ipairs(listnums) do
renderListRow(tbl, i, listnum)
end
renderBelowRow(tbl)
return tbl
end
function p._navbox(navboxArgs)
args = navboxArgs
listnums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local listnum = k:match('^list(%d+)$')
if listnum then table.insert(listnums, tonumber(listnum)) end
end
end
table.sort(listnums)
border = mw.text.trim(args.border or args[1] or '')
if border == 'child' then
border = 'subgroup'
end
-- render the main body of the navbox
local tbl = renderMainTable()
-- render the appropriate wrapper around the navbox, depending on the border param
local res = mw.html.create()
if border == 'none' then
local nav = res:tag('div')
:attr('role', 'navigation')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args.title or args.above or (args.group1 and not args.group2) then
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1))
else
nav:attr('aria-label', 'Navbox')
end
elseif border == 'subgroup' then
-- We assume that this navbox is being rendered in a list cell of a parent navbox, and is
-- therefore inside a div with padding:0em 0.25em. We start with a </div> to avoid the
-- padding being applied, and at the end add a <div> to balance out the parent's </div>
res
:wikitext('</div>')
:node(tbl)
:wikitext('<div>')
else
local nav = res:tag('div')
:attr('role', 'navigation')
:addClass('navbox')
:addClass(args.navboxclass)
:cssText(args.bodystyle)
:cssText(args.style)
:css('padding', '3px')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args.title or args.above or (args.group1 and not args.group2) then
nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1))
else
nav:attr('aria-label', 'Navbox')
end
end
if (args.nocat or 'false'):lower() == 'false' then
renderTrackingCategories(res)
end
return striped(tostring(res))
end
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
args = getArgs(frame, {wrappers = {'Template:Navbox'}})
-- Read the arguments in the order they'll be output in, to make references number in the right order.
local _
_ = args.title
_ = args.above
for i = 1, 20 do
_ = args["group" .. tostring(i)]
_ = args["list" .. tostring(i)]
end
_ = args.below
return p._navbox(args)
end
return p
bc958emdhcifoov0yk148od75bgl1ef
Module:No globals
828
870
1972
1971
2020-09-29T19:15:35Z
Chrisb
1
1 revision imported
1971
Scribunto
text/plain
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
if k ~= 'arg' then
error('Tried to read nil global ' .. tostring(k), 2)
end
return nil
end
function mt.__newindex(t, k, v)
if k ~= 'arg' then
error('Tried to write global ' .. tostring(k), 2)
end
rawset(t, k, v)
end
setmetatable(_G, mt)
gggsv54pq7f94l3up48hr91qtxnskdm
Module:No globals/doc
828
895
2022
2021
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2021
wikitext
text/x-wiki
{{high-use|13,053,000+|all-pages = yes}}
{{used in system}}
{{module rating|protected}}
<!-- Template categories go at the bottom of this page. -->
This module causes an error if any nil [[global variable|global]] is read or if any global is written to, with the exception of <var>arg</var>. To use, add <syntaxhighlight lang="lua" inline>require('Module:No globals')</syntaxhighlight> to the top of the module using it. The <var>arg</var> variable is excluded because it is necessary for Scribunto's [[mw:Extension:Scribunto/Lua reference manual#require|require]] function to work properly. (See the Scribunto source code [[phab:diffusion/ELUA/browse/master/includes/engines/LuaCommon/lualib/package.lua;1fad4da13706f4dbdd0477a834675b9d09757bf6|here]].)
== See also ==
* [[Module:Log globals]] – adds all nil global reads/writes to the lua log
<includeonly>{{Sandbox other||
<!-- Template categories go here. -->
[[Category:Lua metamodules]]
}}</includeonly>
ao3gft5mjdo3qod5axzzwy3mctw71gv
Module:Ns has subpages
828
1627
4902
4901
2020-10-11T05:39:05Z
Chrisb
1
1 revision imported
4901
Scribunto
text/plain
-- This module implements [[Template:Ns has subpages]].
-- While the template is fairly simple, this information is made available to
-- Lua directly, so using a module means that we don't have to update the
-- template as new namespaces are added.
local p = {}
function p._main(ns, frame)
-- Get the current namespace if we were not passed one.
if not ns then
ns = mw.title.getCurrentTitle().namespace
end
-- Look up the namespace table from mw.site.namespaces. This should work
-- for a majority of cases.
local nsTable = mw.site.namespaces[ns]
-- Try using string matching to get the namespace from page names.
-- Do a quick and dirty bad title check to try and make sure we do the same
-- thing as {{NAMESPACE}} in most cases.
if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then
local nsStripped = ns:gsub('^[_%s]*:', '')
nsStripped = nsStripped:gsub(':.*$', '')
nsTable = mw.site.namespaces[nsStripped]
end
-- If we still have no match then try the {{NAMESPACE}} parser function,
-- which should catch the remainder of cases. Don't use a mw.title object,
-- as this would increment the expensive function count for each new page
-- tested.
if not nsTable then
frame = frame or mw.getCurrentFrame()
local nsProcessed = frame:callParserFunction('NAMESPACE', ns)
nsTable = nsProcessed and mw.site.namespaces[nsProcessed]
end
return nsTable and nsTable.hasSubpages
end
function p.main(frame)
local ns = frame:getParent().args[1]
if ns then
ns = ns:match('^%s*(.-)%s*$') -- trim whitespace
ns = tonumber(ns) or ns
end
local hasSubpages = p._main(ns, frame)
return hasSubpages and 'yes' or ''
end
return p
qb0b1z2vff7kifnw21v205d791esbiz
Module:Pagetype
828
1639
4926
4925
2020-10-11T05:50:37Z
Chrisb
1
1 revision imported
4925
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- PAGETYPE --
-- --
-- This is a meta-module intended to replace {{pagetype}} and similar --
-- templates. It automatically detects namespaces, and allows for a --
-- great deal of customisation. It can easily be ported to other --
-- wikis by changing the values in the [[Module:Pagetype/config]]. --
-- --
--------------------------------------------------------------------------------
-- Load config.
local cfg = mw.loadData('Module:Pagetype/config')
-- Load required modules.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local nsDetectModule = require('Module:Namespace detect')
local nsDetect = nsDetectModule._main
local getParamMappings = nsDetectModule.getParamMappings
local getPageObject = nsDetectModule.getPageObject
local p = {}
local function shallowCopy(t)
-- Makes a shallow copy of a table.
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
local function checkPagetypeInput(namespace, val)
-- Checks to see whether we need the default value for the given namespace,
-- and if so gets it from the pagetypes table.
-- The yesno function returns true/false for "yes", "no", etc., and returns
-- val for other input.
local ret = yesno(val, val)
if ret and type(ret) ~= 'string' then
ret = cfg.pagetypes[namespace]
end
return ret
end
local function getPagetypeFromClass(class, param, aliasTable, default)
-- Gets the pagetype from a class specified from the first positional
-- parameter.
param = yesno(param, param)
if param ~= false then -- No check if specifically disallowed.
for _, alias in ipairs(aliasTable) do
if class == alias then
if type(param) == 'string' then
return param
else
return default
end
end
end
end
end
local function getNsDetectValue(args)
-- Builds the arguments to pass to [[Module:Namespace detect]] and returns
-- the result.
-- Get the default values.
local ndArgs = {}
local defaultns = args[cfg.defaultns]
if defaultns == cfg.defaultnsAll then
ndArgs = shallowCopy(cfg.pagetypes)
else
local defaultnsArray
if defaultns == cfg.defaultnsExtended then
defaultnsArray = cfg.extendedNamespaces
elseif defaultns == cfg.defaultnsNone then
defaultnsArray = {}
else
defaultnsArray = cfg.defaultNamespaces
end
for _, namespace in ipairs(defaultnsArray) do
ndArgs[namespace] = cfg.pagetypes[namespace]
end
end
--[[
-- Add custom values passed in from the arguments. These overwrite the
-- defaults. The possible argument names are fetched from
-- Module:Namespace detect automatically in case new namespaces are
-- added. Although we accept namespace aliases as parameters, we only pass
-- the local namespace name as a parameter to Module:Namespace detect.
-- This means that the "image" parameter can overwrite defaults for the
-- File: namespace, which wouldn't work if we passed the parameters through
-- separately.
--]]
local mappings = getParamMappings()
for ns, paramAliases in pairs(mappings) do
-- Copy the aliases table, as # doesn't work with tables returned from
-- mw.loadData.
paramAliases = shallowCopy(paramAliases)
local paramName = paramAliases[1]
-- Iterate backwards along the array so that any values for the local
-- namespace names overwrite those for namespace aliases.
for i = #paramAliases, 1, -1 do
local paramAlias = paramAliases[i]
local ndArg = checkPagetypeInput(paramAlias, args[paramAlias])
if ndArg == false then
-- If any arguments are false, convert them to nil to protect
-- against breakage by future changes to
-- [[Module:Namespace detect]].
ndArgs[paramName] = nil
elseif ndArg then
ndArgs[paramName] = ndArg
end
end
end
-- Check for disambiguation-class and N/A-class pages in mainspace.
if ndArgs.main then
local class = args[1]
if type(class) == 'string' then
-- Put in lower case so e.g. "Dab" and "dab" will both match.
class = mw.ustring.lower(class)
end
local dab = getPagetypeFromClass(
class,
args[cfg.dab],
cfg.dabAliases,
cfg.dabDefault
)
if dab then
ndArgs.main = dab
else
local na = getPagetypeFromClass(
class,
args[cfg.na],
cfg.naAliases,
cfg.naDefault
)
if na then
ndArgs.main = na
end
end
end
-- If there is no talk value specified, use the corresponding subject
-- namespace for talk pages.
if not ndArgs.talk then
ndArgs.subjectns = true
end
-- Add the fallback value. This can also be customised, but it cannot be
-- disabled.
local other = args[cfg.other]
-- We will ignore true/false/nil results from yesno here, but using it
-- anyway for consistency.
other = yesno(other, other)
if type(other) == 'string' then
ndArgs.other = other
else
ndArgs.other = cfg.otherDefault
end
-- Allow custom page values.
ndArgs.page = args.page
return nsDetect(ndArgs)
end
local function detectRedirects(args)
local redirect = args[cfg.redirect]
-- The yesno function returns true/false for "yes", "no", etc., and returns
-- redirect for other input.
redirect = yesno(redirect, redirect)
if redirect == false then
-- Detect redirects unless they have been explicitly disallowed with
-- "redirect=no" or similar.
return
end
local pageObject = getPageObject(args.page)
-- If we are using subject namespaces elsewhere, do so here as well.
if pageObject
and not yesno(args.talk, true)
and args[cfg.defaultns] ~= cfg.defaultnsAll
then
pageObject = getPageObject(
pageObject.subjectNsText .. ':' .. pageObject.text
)
end
-- Allow custom values for redirects.
if pageObject and pageObject.isRedirect then
if type(redirect) == 'string' then
return redirect
else
return cfg.redirectDefault
end
end
end
function p._main(args)
local redirect = detectRedirects(args)
local pagetype = ""
if redirect then
pagetype = redirect
else
pagetype = getNsDetectValue(args)
end
if yesno(args.plural, false) then
if cfg.irregularPlurals[pagetype] then
pagetype = cfg.irregularPlurals[pagetype]
else
pagetype = pagetype .. cfg.plural -- often 's'
end
end
if yesno(args.caps, false) then
pagetype = mw.ustring.upper(mw.ustring.sub(pagetype, 1, 1)) ..
mw.ustring.sub(pagetype, 2)
end
return pagetype
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
return p
3uutklb10j89clizor7gnyrlkhbqg0d
Module:Pagetype/config
828
1640
4928
4927
2020-10-11T05:50:37Z
Chrisb
1
1 revision imported
4927
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Pagetype configuration data --
-- This page holds localisation and configuration data for Module:Pagetype. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
-- This table holds the values to use for "main=true", "user=true", etc. Keys to
-- this table should be namespace parameters that can be used with
-- [[Module:Namespace detect]].
cfg.pagetypes = {
['main'] = 'article',
['user'] = 'user page',
['project'] = 'project page',
['wikipedia'] = 'project page',
['wp'] = 'project page',
['file'] = 'file',
['image'] = 'file',
['mediawiki'] = 'interface page',
['template'] = 'template',
['help'] = 'help page',
['category'] = 'category',
['portal'] = 'portal',
['book'] = 'book',
['draft'] = 'draft',
['education program'] = 'education program page',
['timedtext'] = 'Timed Text page',
['module'] = 'module',
['topic'] = 'topic',
['gadget'] = 'gadget',
['gadget definition'] = 'gadget definition',
['talk'] = 'talk page',
['special'] = 'special page',
['media'] = 'file',
}
-- This table holds the names of the namespaces to be looked up from
-- cfg.pagetypes by default.
cfg.defaultNamespaces = {
'main',
'file',
'template',
'category',
'module',
'book'
}
-- This table holds the names of the namespaces to be looked up from
-- cfg.pagetypes if cfg.defaultnsExtended is set.
cfg.extendedNamespaces = {
'main',
'user',
'project',
'file',
'mediawiki',
'template',
'category',
'help',
'portal',
'module',
'book',
'draft'
}
-- The parameter name to set which default namespace values to be looked up from
-- cfg.pagetypes.
cfg.defaultns = 'defaultns'
-- The value of cfg.defaultns to set all namespaces, including talk.
cfg.defaultnsAll = 'all'
-- The value of cfg.defaultns to set the namespaces listed in
-- cfg.extendedNamespaces
cfg.defaultnsExtended = 'extended'
-- The value of cfg.defaultns to set no default namespaces.
cfg.defaultnsNone = 'none'
-- The parameter name to use for disambiguation pages page.
cfg.dab = 'dab'
-- This table holds the different possible aliases for disambiguation-class
-- pages. These should be lower-case.
cfg.dabAliases = {
'disambiguation',
'disambig',
'disamb',
'dab'
}
-- The default value for disambiguation pages.
cfg.dabDefault = 'page'
-- The parameter name to use for N/A-class page.
cfg.na = 'na'
-- This table holds the different possible aliases for N/A-class pages. These
-- should be lower-case.
cfg.naAliases = {'na', 'n/a'}
-- The default value for N/A-class pages.
cfg.naDefault = 'page'
-- The parameter name to use for redirects.
cfg.redirect = 'redirect'
-- The default value to use for redirects.
cfg.redirectDefault = 'redirect'
-- The parameter name for undefined namespaces.
cfg.other = 'other'
-- The value used if the module detects an undefined namespace.
cfg.otherDefault = 'page'
-- The usual suffix denoting a plural.
cfg.plural = 's'
-- This table holds plurals not formed by a simple suffix.
cfg.irregularPlurals = {
["category"] = "categories"
}
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line
tb6svg2he6570yy55mfxge7s1pk60ma
Module:Parameter names example
828
1670
4988
4987
2020-10-11T05:50:45Z
Chrisb
1
1 revision imported
4987
Scribunto
text/plain
-- This module implements {{parameter names example}}.
local p = {}
local function makeParam(s)
local lb = '{'
local rb = '}'
return lb:rep(3) .. s .. rb:rep(3)
end
local function italicize(s)
return "''" .. s .. "''"
end
local function plain(s)
return s
end
function p._main(args, frame)
-- Find how we want to format the arguments to the template.
local formatFunc
if args._display == 'italics' or args._display == 'italic' then
formatFunc = italicize
elseif args._display == 'plain' then
formatFunc = plain
else
formatFunc = makeParam
end
-- Build the table of template arguments.
local targs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
targs[v] = formatFunc(v)
elseif not k:find('^_') then
targs[k] = v
end
end
targs['nocat'] = 'yes';
targs['categories'] = 'no';
targs['demo'] = 'yes';
-- Find the template name.
local template
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end
-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
frame.expandTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Parameter names example'
})
return p._main(args, frame)
end
return p
a7o5z39ztbr5ehhznd1pi588b5yaqou
Module:Protection banner
828
889
2010
2009
2020-09-29T19:15:39Z
Chrisb
1
1 revision imported
2009
Scribunto
text/plain
-- This module implements {{pp-meta}} and its daughter templates such as
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
-- Initialise necessary modules.
require('Module:No globals')
local makeFileLink = require('Module:File link')._main
local effectiveProtectionLevel = require('Module:Effective protection level')._main
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
local yesno = require('Module:Yesno')
-- Lazily initialise modules and objects we don't always need.
local getArgs, makeMessageBox, lang
-- Set constants.
local CONFIG_MODULE = 'Module:Protection banner/config'
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeCategoryLink(cat, sort)
if cat then
return string.format(
'[[%s:%s|%s]]',
mw.site.namespaces[14].name,
cat,
sort
)
end
end
-- Validation function for the expiry and the protection date
local function validateDate(dateString, dateType)
if not lang then
lang = mw.language.getContentLanguage()
end
local success, result = pcall(lang.formatDate, lang, 'U', dateString)
if success then
result = tonumber(result)
if result then
return result
end
end
error(string.format(
'invalid %s: %s',
dateType,
tostring(dateString)
), 4)
end
local function makeFullUrl(page, query, display)
return string.format(
'[%s %s]',
tostring(mw.uri.fullUrl(page, query)),
display
)
end
-- Given a directed graph formatted as node -> table of direct successors,
-- get a table of all nodes reachable from a given node (though always
-- including the given node).
local function getReachableNodes(graph, start)
local toWalk, retval = {[start] = true}, {}
while true do
-- Can't use pairs() since we're adding and removing things as we're iterating
local k = next(toWalk) -- This always gets the "first" key
if k == nil then
return retval
end
toWalk[k] = nil
retval[k] = true
for _,v in ipairs(graph[k]) do
if not retval[v] then
toWalk[v] = true
end
end
end
end
--------------------------------------------------------------------------------
-- Protection class
--------------------------------------------------------------------------------
local Protection = {}
Protection.__index = Protection
Protection.supportedActions = {
edit = true,
move = true,
autoreview = true,
upload = true
}
Protection.bannerConfigFields = {
'text',
'explanation',
'tooltip',
'alt',
'link',
'image'
}
function Protection.new(args, cfg, title)
local obj = {}
obj._cfg = cfg
obj.title = title or mw.title.getCurrentTitle()
-- Set action
if not args.action then
obj.action = 'edit'
elseif Protection.supportedActions[args.action] then
obj.action = args.action
else
error(string.format(
'invalid action: %s',
tostring(args.action)
), 3)
end
-- Set level
obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)
if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then
-- Users need to be autoconfirmed to move pages anyway, so treat
-- semi-move-protected pages as unprotected.
obj.level = '*'
end
-- Set expiry
local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)
if effectiveExpiry == 'infinity' then
obj.expiry = 'indef'
elseif effectiveExpiry ~= 'unknown' then
obj.expiry = validateDate(effectiveExpiry, 'expiry date')
end
-- Set reason
if args[1] then
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 3)
end
end
-- Set protection date
if args.date then
obj.protectionDate = validateDate(args.date, 'protection date')
end
-- Set banner config
do
obj.bannerConfig = {}
local configTables = {}
if cfg.banners[obj.action] then
configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]
end
if cfg.defaultBanners[obj.action] then
configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]
configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default
end
configTables[#configTables + 1] = cfg.masterBanner
for i, field in ipairs(Protection.bannerConfigFields) do
for j, t in ipairs(configTables) do
if t[field] then
obj.bannerConfig[field] = t[field]
break
end
end
end
end
return setmetatable(obj, Protection)
end
function Protection:isUserScript()
-- Whether the page is a user JavaScript or CSS page.
local title = self.title
return title.namespace == 2 and (
title.contentModel == 'javascript' or title.contentModel == 'css'
)
end
function Protection:isProtected()
return self.level ~= '*'
end
function Protection:shouldShowLock()
-- Whether we should output a banner/padlock
return self:isProtected() and not self:isUserScript()
end
-- Whether this page needs a protection category.
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock
function Protection:isTemporary()
return type(self.expiry) == 'number'
end
function Protection:makeProtectionCategory()
if not self:shouldHaveProtectionCategory() then
return ''
end
local cfg = self._cfg
local title = self.title
-- Get the expiry key fragment.
local expiryFragment
if self.expiry == 'indef' then
expiryFragment = self.expiry
elseif type(self.expiry) == 'number' then
expiryFragment = 'temp'
end
-- Get the namespace key fragment.
local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]
if not namespaceFragment and title.namespace % 2 == 1 then
namespaceFragment = 'talk'
end
-- Define the order that key fragments are tested in. This is done with an
-- array of tables containing the value to be tested, along with its
-- position in the cfg.protectionCategories table.
local order = {
{val = expiryFragment, keypos = 1},
{val = namespaceFragment, keypos = 2},
{val = self.reason, keypos = 3},
{val = self.level, keypos = 4},
{val = self.action, keypos = 5}
}
--[[
-- The old protection templates used an ad-hoc protection category system,
-- with some templates prioritising namespaces in their categories, and
-- others prioritising the protection reason. To emulate this in this module
-- we use the config table cfg.reasonsWithNamespacePriority to set the
-- reasons for which namespaces have priority over protection reason.
-- If we are dealing with one of those reasons, move the namespace table to
-- the end of the order table, i.e. give it highest priority. If not, the
-- reason should have highest priority, so move that to the end of the table
-- instead.
--]]
table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))
--[[
-- Define the attempt order. Inactive subtables (subtables with nil "value"
-- fields) are moved to the end, where they will later be given the key
-- "all". This is to cut down on the number of table lookups in
-- cfg.protectionCategories, which grows exponentially with the number of
-- non-nil keys. We keep track of the number of active subtables with the
-- noActive parameter.
--]]
local noActive, attemptOrder
do
local active, inactive = {}, {}
for i, t in ipairs(order) do
if t.val then
active[#active + 1] = t
else
inactive[#inactive + 1] = t
end
end
noActive = #active
attemptOrder = active
for i, t in ipairs(inactive) do
attemptOrder[#attemptOrder + 1] = t
end
end
--[[
-- Check increasingly generic key combinations until we find a match. If a
-- specific category exists for the combination of key fragments we are
-- given, that match will be found first. If not, we keep trying different
-- key fragment combinations until we match using the key
-- "all-all-all-all-all".
--
-- To generate the keys, we index the key subtables using a binary matrix
-- with indexes i and j. j is only calculated up to the number of active
-- subtables. For example, if there were three active subtables, the matrix
-- would look like this, with 0 corresponding to the key fragment "all", and
-- 1 corresponding to other key fragments.
--
-- j 1 2 3
-- i
-- 1 1 1 1
-- 2 0 1 1
-- 3 1 0 1
-- 4 0 0 1
-- 5 1 1 0
-- 6 0 1 0
-- 7 1 0 0
-- 8 0 0 0
--
-- Values of j higher than the number of active subtables are set
-- to the string "all".
--
-- A key for cfg.protectionCategories is constructed for each value of i.
-- The position of the value in the key is determined by the keypos field in
-- each subtable.
--]]
local cats = cfg.protectionCategories
for i = 1, 2^noActive do
local key = {}
for j, t in ipairs(attemptOrder) do
if j > noActive then
key[t.keypos] = 'all'
else
local quotient = i / 2 ^ (j - 1)
quotient = math.ceil(quotient)
if quotient % 2 == 1 then
key[t.keypos] = t.val
else
key[t.keypos] = 'all'
end
end
end
key = table.concat(key, '|')
local attempt = cats[key]
if attempt then
return makeCategoryLink(attempt, title.text)
end
end
return ''
end
function Protection:isIncorrect()
local expiry = self.expiry
return not self:shouldHaveProtectionCategory()
or type(expiry) == 'number' and expiry < os.time()
end
function Protection:isTemplateProtectedNonTemplate()
local action, namespace = self.action, self.title.namespace
return self.level == 'templateeditor'
and (
(action ~= 'edit' and action ~= 'move')
or (namespace ~= 10 and namespace ~= 828)
)
end
function Protection:makeCategoryLinks()
local msg = self._cfg.msg
local ret = {self:makeProtectionCategory()}
if self:isIncorrect() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-incorrect'],
self.title.text
)
end
if self:isTemplateProtectedNonTemplate() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-template'],
self.title.text
)
end
return table.concat(ret)
end
--------------------------------------------------------------------------------
-- Blurb class
--------------------------------------------------------------------------------
local Blurb = {}
Blurb.__index = Blurb
Blurb.bannerTextFields = {
text = true,
explanation = true,
tooltip = true,
alt = true,
link = true
}
function Blurb.new(protectionObj, args, cfg)
return setmetatable({
_cfg = cfg,
_protectionObj = protectionObj,
_args = args
}, Blurb)
end
-- Private methods --
function Blurb:_formatDate(num)
-- Formats a Unix timestamp into dd Month, YYYY format.
lang = lang or mw.language.getContentLanguage()
local success, date = pcall(
lang.formatDate,
lang,
self._cfg.msg['expiry-date-format'] or 'j F Y',
'@' .. tostring(num)
)
if success then
return date
end
end
function Blurb:_getExpandedMessage(msgKey)
return self:_substituteParameters(self._cfg.msg[msgKey])
end
function Blurb:_substituteParameters(msg)
if not self._params then
local parameterFuncs = {}
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
parameterFuncs.EXPIRY = self._makeExpiryParameter
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.IMAGELINK = self._makeImageLinkParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
self._params = setmetatable({}, {
__index = function (t, k)
local param
if parameterFuncs[k] then
param = parameterFuncs[k](self)
end
param = param or ''
t[k] = param
return param
end
})
end
msg = msg:gsub('${(%u+)}', self._params)
return msg
end
function Blurb:_makeCurrentVersionParameter()
-- A link to the page history or the move log, depending on the kind of
-- protection.
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'move' then
-- We need the move log link.
return makeFullUrl(
'Special:Log',
{type = 'move', page = pagename},
self:_getExpandedMessage('current-version-move-display')
)
else
-- We need the history link.
return makeFullUrl(
pagename,
{action = 'history'},
self:_getExpandedMessage('current-version-edit-display')
)
end
end
function Blurb:_makeEditRequestParameter()
local mEditRequest = require('Module:Submit an edit request')
local action = self._protectionObj.action
local level = self._protectionObj.level
-- Get the edit request type.
local requestType
if action == 'edit' then
if level == 'autoconfirmed' then
requestType = 'semi'
elseif level == 'extendedconfirmed' then
requestType = 'extended'
elseif level == 'templateeditor' then
requestType = 'template'
end
end
requestType = requestType or 'full'
-- Get the display value.
local display = self:_getExpandedMessage('edit-request-display')
return mEditRequest._link{type = requestType, display = display}
end
function Blurb:_makeExpiryParameter()
local expiry = self._protectionObj.expiry
if type(expiry) == 'number' then
return self:_formatDate(expiry)
else
return expiry
end
end
function Blurb:_makeExplanationBlurbParameter()
-- Cover special cases first.
if self._protectionObj.title.namespace == 8 then
-- MediaWiki namespace
return self:_getExpandedMessage('explanation-blurb-nounprotect')
end
-- Get explanation blurb table keys
local action = self._protectionObj.action
local level = self._protectionObj.level
local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'
-- Find the message in the explanation blurb table and substitute any
-- parameters.
local explanations = self._cfg.explanationBlurbs
local msg
if explanations[action][level] and explanations[action][level][talkKey] then
msg = explanations[action][level][talkKey]
elseif explanations[action][level] and explanations[action][level].default then
msg = explanations[action][level].default
elseif explanations[action].default and explanations[action].default[talkKey] then
msg = explanations[action].default[talkKey]
elseif explanations[action].default and explanations[action].default.default then
msg = explanations[action].default.default
else
error(string.format(
'could not find explanation blurb for action "%s", level "%s" and talk key "%s"',
action,
level,
talkKey
), 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeImageLinkParameter()
local imageLinks = self._cfg.imageLinks
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if imageLinks[action][level] then
msg = imageLinks[action][level]
elseif imageLinks[action].default then
msg = imageLinks[action].default
else
msg = imageLinks.edit.default
end
return self:_substituteParameters(msg)
end
function Blurb:_makeIntroBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-blurb-expiry')
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
end
end
function Blurb:_makeIntroFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-fragment-expiry')
else
return self:_getExpandedMessage('intro-fragment-noexpiry')
end
end
function Blurb:_makePagetypeParameter()
local pagetypes = self._cfg.pagetypes
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or error('no default pagetype defined', 8)
end
function Blurb:_makeProtectionBlurbParameter()
local protectionBlurbs = self._cfg.protectionBlurbs
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionBlurbs[action][level] then
msg = protectionBlurbs[action][level]
elseif protectionBlurbs[action].default then
msg = protectionBlurbs[action].default
elseif protectionBlurbs.edit.default then
msg = protectionBlurbs.edit.default
else
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionDateParameter()
local protectionDate = self._protectionObj.protectionDate
if type(protectionDate) == 'number' then
return self:_formatDate(protectionDate)
else
return protectionDate
end
end
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._cfg.protectionLevels
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionLevels[action][level] then
msg = protectionLevels[action][level]
elseif protectionLevels[action].default then
msg = protectionLevels[action].default
elseif protectionLevels.edit.default then
msg = protectionLevels.edit.default
else
error('no protection level defined for protectionLevels.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionLogParameter()
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'autoreview' then
-- We need the pending changes log.
return makeFullUrl(
'Special:Log',
{type = 'stable', page = pagename},
self:_getExpandedMessage('pc-log-display')
)
else
-- We need the protection log.
return makeFullUrl(
'Special:Log',
{type = 'protect', page = pagename},
self:_getExpandedMessage('protection-log-display')
)
end
end
function Blurb:_makeTalkPageParameter()
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._protectionObj.title.namespace].talk.name,
self._protectionObj.title.text,
self._args.section or 'top',
self:_getExpandedMessage('talk-page-link-display')
)
end
function Blurb:_makeTooltipBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-blurb-expiry')
else
return self:_getExpandedMessage('tooltip-blurb-noexpiry')
end
end
function Blurb:_makeTooltipFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-fragment-expiry')
else
return self:_getExpandedMessage('tooltip-fragment-noexpiry')
end
end
function Blurb:_makeVandalTemplateParameter()
return require('Module:Vandal-m')._main{
self._args.user or self._protectionObj.title.baseText
}
end
-- Public methods --
function Blurb:makeBannerText(key)
-- Validate input.
if not key or not Blurb.bannerTextFields[key] then
error(string.format(
'"%s" is not a valid banner config field',
tostring(key)
), 2)
end
-- Generate the text.
local msg = self._protectionObj.bannerConfig[key]
if type(msg) == 'string' then
return self:_substituteParameters(msg)
elseif type(msg) == 'function' then
msg = msg(self._protectionObj, self._args)
if type(msg) ~= 'string' then
error(string.format(
'bad output from banner config function with key "%s"'
.. ' (expected string, got %s)',
tostring(key),
type(msg)
), 4)
end
return self:_substituteParameters(msg)
end
end
--------------------------------------------------------------------------------
-- BannerTemplate class
--------------------------------------------------------------------------------
local BannerTemplate = {}
BannerTemplate.__index = BannerTemplate
function BannerTemplate.new(protectionObj, cfg)
local obj = {}
obj._cfg = cfg
-- Set the image filename.
local imageFilename = protectionObj.bannerConfig.image
if imageFilename then
obj._imageFilename = imageFilename
else
-- If an image filename isn't specified explicitly in the banner config,
-- generate it from the protection status and the namespace.
local action = protectionObj.action
local level = protectionObj.level
local namespace = protectionObj.title.namespace
local reason = protectionObj.reason
-- Deal with special cases first.
if (
namespace == 10
or namespace == 828
or reason and obj._cfg.indefImageReasons[reason]
)
and action == 'edit'
and level == 'sysop'
and not protectionObj:isTemporary()
then
-- Fully protected modules and templates get the special red "indef"
-- padlock.
obj._imageFilename = obj._cfg.msg['image-filename-indef']
else
-- Deal with regular protection types.
local images = obj._cfg.images
if images[action] then
if images[action][level] then
obj._imageFilename = images[action][level]
elseif images[action].default then
obj._imageFilename = images[action].default
end
end
end
end
return setmetatable(obj, BannerTemplate)
end
function BannerTemplate:renderImage()
local filename = self._imageFilename
or self._cfg.msg['image-filename-default']
or 'Transparent.gif'
return makeFileLink{
file = filename,
size = (self.imageWidth or 20) .. 'px',
alt = self._imageAlt,
link = self._imageLink,
caption = self.imageCaption
}
end
--------------------------------------------------------------------------------
-- Banner class
--------------------------------------------------------------------------------
local Banner = setmetatable({}, BannerTemplate)
Banner.__index = Banner
function Banner.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 40
obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.
obj._reasonText = blurbObj:makeBannerText('text')
obj._explanationText = blurbObj:makeBannerText('explanation')
obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.
return setmetatable(obj, Banner)
end
function Banner:__tostring()
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local mbargs = {
page = self._page,
type = 'protection',
image = self:renderImage(),
text = string.format(
"'''%s'''%s",
reasonText,
explanationText and '<br />' .. explanationText or ''
)
}
return makeMessageBox('mbox', mbargs)
end
--------------------------------------------------------------------------------
-- Padlock class
--------------------------------------------------------------------------------
local Padlock = setmetatable({}, BannerTemplate)
Padlock.__index = Padlock
function Padlock.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 20
obj.imageCaption = blurbObj:makeBannerText('tooltip')
obj._imageAlt = blurbObj:makeBannerText('alt')
obj._imageLink = blurbObj:makeBannerText('link')
obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]
or cfg.padlockIndicatorNames.default
or 'pp-default'
return setmetatable(obj, Padlock)
end
function Padlock:__tostring()
local frame = mw.getCurrentFrame()
-- The nowiki tag helps prevent whitespace at the top of articles.
return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{
name = 'indicator',
args = {name = self._indicatorName},
content = self:renderImage()
}
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- This is used for testing purposes.
return {
Protection = Protection,
Blurb = Blurb,
BannerTemplate = BannerTemplate,
Banner = Banner,
Padlock = Padlock,
}
end
function p._main(args, cfg, title)
args = args or {}
cfg = cfg or require(CONFIG_MODULE)
local protectionObj = Protection.new(args, cfg, title)
local ret = {}
-- If a page's edit protection is equally or more restrictive than its
-- protection from some other action, then don't bother displaying anything
-- for the other action (except categories).
if protectionObj.action == 'edit' or
args.demolevel or
not getReachableNodes(
cfg.hierarchy,
protectionObj.level
)[effectiveProtectionLevel('edit', protectionObj.title)]
then
-- Initialise the blurb object
local blurbObj = Blurb.new(protectionObj, args, cfg)
-- Render the banner
if protectionObj:shouldShowLock() then
ret[#ret + 1] = tostring(
(yesno(args.small) and Padlock or Banner)
.new(protectionObj, blurbObj, cfg)
)
end
end
-- Render the categories
if yesno(args.category) ~= false then
ret[#ret + 1] = protectionObj:makeCategoryLinks()
end
return table.concat(ret)
end
function p.main(frame, cfg)
cfg = cfg or require(CONFIG_MODULE)
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]
-- Find user args, and use the parent frame if we are being called from a
-- wrapper template.
getArgs = getArgs or require('Module:Arguments').getArgs
local userArgs = getArgs(frame, {
parentOnly = defaultArgs,
frameOnly = not defaultArgs
})
-- Build the args table. User-specified args overwrite default args.
local args = {}
for k, v in pairs(defaultArgs or {}) do
args[k] = v
end
for k, v in pairs(userArgs) do
args[k] = v
end
return p._main(args, cfg)
end
return p
pwlommmk9wzkviwu5fu6f8b29n12m1l
Module:Protection banner/config
828
890
2012
2011
2020-09-29T19:15:40Z
Chrisb
1
1 revision imported
2011
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
tooltip = 'This ${PAGETYPE} is extended-confirmed protected',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|'
.. 'protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',
},
move = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
.. ' from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully-protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
5ltdht3qen29flk1vw801ukkdsv9cxq
Module:Section link
828
1319
2870
2869
2020-09-29T19:18:22Z
Chrisb
1
1 revision imported
2869
Scribunto
text/plain
-- This module implements {{section link}}.
require('Module:No globals');
local checkType = require('libraryUtil').checkType
local p = {}
local function makeSectionLink(page, section, display)
display = display or section
page = page or ''
-- MediaWiki doesn't allow these in `page`, so only need to do for `section`
if type(section) == 'string' then
section = string.gsub(section, "{", "{")
section = string.gsub(section, "}", "}")
end
return string.format('[[%s#%s|%s]]', page, section, display)
end
local function normalizeTitle(title)
title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '')
title = mw.ustring.gsub(title, "%b<>", "")
return mw.title.new(title).prefixedText
end
function p._main(page, sections, options, title)
-- Validate input.
checkType('_main', 1, page, 'string', true)
checkType('_main', 3, options, 'table', true)
if sections == nil then
sections = {}
elseif type(sections) == 'string' then
sections = {sections}
elseif type(sections) ~= 'table' then
error(string.format(
"type error in argument #2 to '_main' " ..
"(string, table or nil expected, got %s)",
type(sections)
), 2)
end
options = options or {}
title = title or mw.title.getCurrentTitle()
-- Deal with blank page names elegantly
if page and not page:find('%S') then
page = nil
options.nopage = true
end
-- Make the link(s).
local isShowingPage = not options.nopage
if #sections <= 1 then
local linkPage = page or ''
local section = sections[1] or 'Notes'
local display = '§ ' .. section
if isShowingPage then
page = page or title.prefixedText
if options.display and options.display ~= '' then
if normalizeTitle(options.display) == normalizeTitle(page) then
display = options.display .. ' ' .. display
else
error(string.format(
'Display title "%s" was ignored since it is ' ..
"not equivalent to the page's actual title",
options.display
), 0)
end
else
display = page .. ' ' .. display
end
end
return makeSectionLink(linkPage, section, display)
else
-- Multiple sections. First, make a list of the links to display.
local ret = {}
for i, section in ipairs(sections) do
ret[i] = makeSectionLink(page, section)
end
-- Assemble the list of links into a string with mw.text.listToText.
-- We use the default separator for mw.text.listToText, but a custom
-- conjunction. There is also a special case conjunction if we only
-- have two links.
local conjunction
if #sections == 2 then
conjunction = '​ and '
else
conjunction = ', and '
end
ret = mw.text.listToText(ret, nil, conjunction)
-- Add the intro text.
local intro = '§§ '
if isShowingPage then
intro = (page or title.prefixedText) .. ' ' .. intro
end
ret = intro .. ret
return ret
end
end
function p.main(frame)
local yesno = require('Module:Yesno')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Section link',
valueFunc = function (key, value)
value = value:match('^%s*(.-)%s*$') -- Trim whitespace
-- Allow blank first parameters, as the wikitext template does this.
if value ~= '' or key == 1 then
return value
end
end
})
for k, v in pairs(args) do -- replace underscores in the positional parameter values
if 'number' == type(k) then
if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes
args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters
else
args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores
end
end
end
-- Sort the arguments.
local page
local sections, options = {}, {}
for k, v in pairs(args) do
if k == 1 then
-- Doing this in the loop because of a bug in [[Module:Arguments]]
-- when using pairs with deleted arguments.
page = mw.text.decode(v, true)
elseif type(k) == 'number' then
sections[k] = v
else
options[k] = v
end
end
options.nopage = yesno (options.nopage); -- make boolean
-- Extract section from page, if present
if page then
local p, s = page:match('^(.-)#(.*)$')
if p then page, sections[1] = p, s end
end
-- Compress the sections array.
local function compressArray(t)
local nums, ret = {}, {}
for num in pairs(t) do
nums[#nums + 1] = num
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[i] = t[num]
end
return ret
end
sections = compressArray(sections)
return p._main(page, sections, options)
end
return p
d7vs0d653q4eub1uslni5ah7cayid6t
Module:Sidebar
828
1475
3254
3253
2020-10-11T01:36:03Z
Chrisb
1
1 revision imported
3253
Scribunto
text/plain
--
-- This module implements {{Sidebar}}
--
require('Module:No globals')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local navbar = require('Module:Navbar')._navbar
local function trimAndAddAutomaticNewline(s)
-- For compatibility with the original {{sidebar with collapsible lists}}
-- implementation, which passed some parameters through {{#if}} to trim
-- their whitespace. This also triggered the automatic newline behavior.
-- ([[meta:Help:Newlines and spaces#Automatic newline]])
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
local function hasSubgroup(s)
if mw.ustring.find(s, 'vertical%-navbox%-subgroup') then
return true
else
return false
end
end
function p.sidebar(frame, args)
if not args then
args = getArgs(frame)
end
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == 'yes'
root = root:tag('table')
if not child then
root
:addClass('vertical-navbox')
:addClass(args.wraplinks ~= 'true' and 'nowraplinks' or nil)
:addClass(args.bodyclass or args.class)
:css('float', args.float or 'right')
:css('clear', (args.float == 'none' and 'both') or args.float or 'right')
:css('width', args.width or '22.0em')
:css('margin', args.float == 'left' and '0 1.0em 1.0em 0' or '0 0 1.0em 1.0em')
:css('background', '#f8f9fa')
:css('border', '1px solid #aaa')
:css('padding', '0.2em')
:css('border-spacing', '0.4em 0')
:css('text-align', 'center')
:css('line-height', '1.4em')
:css('font-size', '88%')
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(args.outertitleclass)
:css('padding-bottom', '0.2em')
:css('font-size', '125%')
:css('line-height', '1.2em')
:css('font-weight', 'bold')
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(args.topimageclass)
:css('padding', '0.4em 0')
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:css('padding-top', '0.2em')
:css('line-height', '1.2em')
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:css('padding-top', args.topimage and '0.2em' or '0.4em')
:css('line-height', '1.2em')
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass('vertical-navbox-subgroup')
:css('width', '100%')
:css('margin', '0px')
:css('border-spacing', '0px')
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.titleclass)
:cssText(args.basestyle)
:css('padding', '0.2em 0.4em 0.2em')
:css('padding-top', args.pretitle and 0)
:css('font-size', '145%')
:css('line-height', '1.2em')
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(args.imageclass)
:css('padding', '0.2em 0 0.4em')
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:css('padding-top', '0.2em')
:css('line-height', '1.2em')
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(args.aboveclass)
:css('padding', '0.3em 0.4em 0.3em')
:css('font-weight', 'bold')
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(args.headingclass)
:css('padding', '0.1em')
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(args.contentclass)
:css('padding', hasSubgroup(content) and '0.1em 0 0.2em' or '0 0.1em 0.4em')
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
:newline() -- Without a linebreak after the </td>, a nested list like "* {{hlist| ...}}" doesn't parse correctly.
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(args.belowclass)
:css('padding', '0.3em 0.4em 0.3em')
:css('font-weight', 'bold')
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child then
local navbarArg = args.navbar or args.tnavbar
if navbarArg ~= 'none' and navbarArg ~= 'off' and (args.name or frame:getParent():getTitle():gsub('/sandbox$', '') ~= 'Template:Sidebar') then
root
:tag('tr')
:tag('td')
:css('text-align', 'right')
:css('font-size', '115%')
:cssText(args.navbarstyle or args.tnavbarstyle)
:wikitext(navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle or args.tnavbarfontstyle
})
end
end
return tostring(root) .. (child and '[[Category:Pages using sidebar with the child parameter]]' or '')
end
function p.collapsible(frame)
local args = getArgs(frame)
args.abovestyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.abovestyle or '')
args.belowstyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.belowstyle or '')
args.navbarstyle = 'padding-top: 0.6em;' .. (args.navbarstyle or args.tnavbarstyle or '')
if not args.name and frame:getParent():getTitle():gsub('/sandbox$', '') == 'Template:Sidebar with collapsible lists' then
args.navbar = 'none'
end
local contentArgs = {}
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass('NavFrame')
:addClass((not expand) and 'collapsed' or nil)
:css('border', 'none')
:css('padding', 0)
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:tag('div')
:addClass('NavHead')
:addClass(args.listtitleclass)
:css('font-size', '105%')
:css('background', 'transparent')
:css('text-align', 'left')
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or 'List'))
:done()
:tag('div')
:addClass('NavContent')
:addClass(args.listclass)
:addClass(args['list' .. num .. 'class'])
:css('font-size', '105%')
:css('padding', '0.2em 0 0.4em')
:css('text-align', 'center')
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args)
end
return p
49l7i3rurqbt0h4mb4td0vid04vpumc
Module:String
828
891
2014
2013
2020-09-29T19:15:40Z
Chrisb
1
1 revision imported
2013
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
cufmbepw7ml3gut4lchtqrhtj5r63cp
Module:TableTools
828
908
2048
2047
2020-09-29T19:15:45Z
Chrisb
1
1 revision imported
2047
Scribunto
text/plain
--[[
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should --
-- not be called directly from #invoke. --
------------------------------------------------------------------------------------
--]]
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
--[[
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
--]]
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
--[[
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a value can be a valid table key. Lua will
-- generate an error if a NaN is used as a table key.
------------------------------------------------------------------------------------
--]]
function p.isNan(v)
return type(v) == 'number' and tostring(v) == '-nan'
end
--[[
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
--]]
function p.shallowClone(t)
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
--]]
function p.removeDuplicates(t)
checkType('removeDuplicates', 1, t, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for i, v in ipairs(t) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
--]]
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k, v in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
--[[
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will
-- return {1, 3, 6}.
------------------------------------------------------------------------------------
--]]
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k, v in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
--[[
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table
-- of subtables in the format
-- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }
-- Keys that don't end with an integer are stored in a subtable named "other".
-- The compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
--]]
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
--[[
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
--]]
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for k in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
else -- This will fail with table, boolean, function.
return item1 < item2
end
end
--[[
Returns a list of the keys in a table, sorted using either a default
comparison function or a custom keySort function.
]]
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' })
end
local list = {}
local index = 1
for key, value in pairs(t) do
list[index] = key
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(list, keySort)
end
return list
end
--[[
Iterates through a table, with the keys sorted using the keysToList function.
If there are only numerical keys, sparseIpairs is probably more efficient.
]]
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local list = p.keysToList(t, keySort, true)
local i = 0
return function()
i = i + 1
local key = list[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
--[[
Returns true if all keys in the table are consecutive integers starting at 1.
--]]
function p.isArray(t)
checkType("isArray", 1, t, "table")
local i = 0
for k, v in pairs(t) do
i = i + 1
if t[i] == nil then
return false
end
end
return true
end
-- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 }
function p.invert(array)
checkType("invert", 1, array, "table")
local map = {}
for i, v in ipairs(array) do
map[v] = i
end
return map
end
--[[
{ "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true }
--]]
function p.listToSet(t)
checkType("listToSet", 1, t, "table")
local set = {}
for _, item in ipairs(t) do
set[item] = true
end
return set
end
--[[
Recursive deep copy function.
Preserves identities of subtables.
]]
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = deepcopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
--[[
Concatenates all values in the table that are indexed by a number, in order.
sparseConcat{ a, nil, c, d } => "acd"
sparseConcat{ nil, b, c, d } => "bcd"
]]
function p.sparseConcat(t, sep, i, j)
local list = {}
local list_i = 0
for _, v in p.sparseIpairs(t) do
list_i = list_i + 1
list[list_i] = v
end
return table.concat(list, sep, i, j)
end
--[[
-- Finds the length of an array, or of a quasi-array with keys such
-- as "data1", "data2", etc., using an exponential search algorithm.
-- It is similar to the operator #, but may return
-- a different value when there are gaps in the array portion of the table.
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of
-- the number of unnamed template parameters, so use this function for
-- frame.args.
--]]
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]]
-- which is only needed by this one function
-- doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function(i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
k8alxjj4kl038b9fpyfzl6qf0yqrdst
Module:Tlg
828
909
2050
2049
2020-09-29T19:15:45Z
Chrisb
1
1 revision imported
2049
Scribunto
text/plain
-- This implements Template:Tlg
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Is a string non-empty?
local function _ne(s)
return s ~= nil and s ~= ""
end
local nw = mw.text.nowiki
local function addTemplate(s)
local i, _ = s:find(':', 1, true)
if i == nil then
return 'Template:' .. s
end
local ns = s:sub(1, i - 1)
if ns == '' or mw.site.namespaces[ns] then
return s
else
return 'Template:' .. s
end
end
local function trimTemplate(s)
local needle = 'template:'
if s:sub(1, needle:len()):lower() == needle then
return s:sub(needle:len() + 1)
else
return s
end
end
local function linkTitle(args)
if _ne(args.nolink) then
return args['1']
end
local titleObj
local titlePart = '[['
if args['1'] then
-- This handles :Page and other NS
titleObj = mw.title.new(args['1'], 'Template')
else
titleObj = mw.title.getCurrentTitle()
end
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or
addTemplate(args['1']))
local textPart = args.alttext
if not _ne(textPart) then
if titleObj ~= nil then
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText
else
-- redlink
textPart = args['1']
end
end
if _ne(args.subst) then
-- HACK: the ns thing above is probably broken
textPart = 'subst:' .. textPart
end
if _ne(args.brace) then
textPart = nw('{{') .. textPart .. nw('}}')
elseif _ne(args.braceinside) then
textPart = nw('{') .. textPart .. nw('}')
end
titlePart = titlePart .. '|' .. textPart .. ']]'
if _ne(args.braceinside) then
titlePart = nw('{') .. titlePart .. nw('}')
end
return titlePart
end
function p.main(frame)
local args = getArgs(frame, {
trim = true,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)
local italic = _ne(args.italic) or _ne(args.italics)
local dontBrace = _ne(args.brace) or _ne(args.braceinside)
local code = _ne(args.code) or _ne(args.tt)
-- Build the link part
local titlePart = linkTitle(args)
if bold then titlePart = "'''" .. titlePart .. "'''" end
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end
-- Build the arguments
local textPart = ""
for i = 2, 11 do
local ii = tostring(i)
local val = args[ii]
if val ~= nil then val = mw.text.unstripNoWiki(val) else break end
if _ne(args.nowiki) then val = nw(val) end
if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end
textPart = textPart .. '|' .. val
end
if _ne(args['12']) then textPart = textPart .. '|…' end
-- final wrap
local ret = titlePart .. textPart
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end
if code then
ret = '<code>' .. ret .. '</code>'
elseif _ne(args.plaincode) then
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'
end
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end
--[[ Wrap as html??
local span = mw.html.create('span')
span:wikitext(ret)
--]]
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end
return ret
end
return p
9v2mu819mr06chi30bhe3gas87d94qt
Module:Transclusion count
828
892
3276
3275
2020-10-11T01:41:35Z
Chrisb
1
1 revision imported
3275
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = frame.args["demo"]
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local data = mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
return p
h9ky1fdc2argcyjstoy2n0i4o1hjaj9
Module:Transclusion count/data/A
828
1320
2872
2871
2020-09-29T19:18:22Z
Chrisb
1
1 revision imported
2871
Scribunto
text/plain
return {
["A-Class"] = 5700,
["AARTalk"] = 8600,
["AFB_game_box_end"] = 2300,
["AFB_game_box_start"] = 2300,
["AFC_comment"] = 15000,
["AFC_status/age"] = 3700,
["AFC_status/backlog"] = 4200,
["AFC_submission"] = 44000,
["AFC_submission/comments"] = 25000,
["AFC_submission/declined"] = 25000,
["AFC_submission/declinedivbox"] = 25000,
["AFC_submission/draft"] = 17000,
["AFC_submission/helptools"] = 41000,
["AFC_submission/pending"] = 3700,
["AFC_submission/reject_reasons"] = 2500,
["AFC_submission/rejected"] = 2500,
["AFC_submission/tools"] = 3700,
["AFC_submission_category_header"] = 4600,
["AFC_submission_category_header/day"] = 4400,
["AFC_submission_category_header/td"] = 4400,
["AFD_help"] = 45000,
["AFI_film"] = 5400,
["AFL_Car"] = 2200,
["AFL_Col"] = 2100,
["AFL_Ess"] = 2100,
["AFL_Gee"] = 2200,
["AFL_Mel"] = 2400,
["AFL_Ric"] = 2200,
["AFL_StK"] = 2600,
["AFL_Tables"] = 11000,
["AFL_Year"] = 2400,
["ALG"] = 2100,
["AMARB"] = 4700,
["AML"] = 4800,
["AMQ"] = 4800,
["AM_station_data"] = 4600,
["ARG"] = 6100,
["ASCII_code"] = 28000,
["ASIN"] = 2200,
["ASN"] = 3400,
["ATP"] = 3500,
["AUS"] = 14000,
["AUT"] = 8100,
["AZE"] = 2000,
["A_note"] = 8300,
["A_or_an"] = 16000,
["Aan"] = 33000,
["Abbr"] = 667000,
["Abbrlink"] = 14000,
["Abot"] = 3000,
["About"] = 136000,
["Acad"] = 6200,
["Access_icon"] = 2300,
["According_to_whom"] = 3900,
["AchievementTable"] = 9700,
["Active_politician"] = 4200,
["AdSenseSummary"] = 3000,
["Adjacent_communities"] = 24000,
["Adjacent_stations"] = 10000,
["Adjacent_stations/styles.css"] = 10000,
["Admin"] = 12000,
["Administrator_note"] = 5800,
["Adminnote"] = 3200,
["Advert"] = 20000,
["Aet"] = 3000,
["AfC_age_category"] = 3700,
["AfC_date_category"] = 163000,
["AfD_categories_horizontal_shortnames"] = 3300,
["AfD_count_link"] = 3600,
["Afc_comment"] = 15000,
["Afd-merged-from"] = 6300,
["AfricaProject"] = 32000,
["Africa_topic"] = 5800,
["After_extra_time"] = 3000,
["Age"] = 31000,
["Age_in_days"] = 2700,
["Age_in_years,_months,_weeks_and_days"] = 2900,
["Age_in_years,_months_and_days"] = 14000,
["Age_in_years_and_days"] = 2700,
["Age_switch"] = 4800,
["Ahnentafel"] = 8300,
["Ahnentafel/styles.css"] = 8300,
["Air_Force_Historical_Research_Agency"] = 4300,
["Air_force"] = 5300,
["Air_force/core"] = 5300,
["Aircontent"] = 9100,
["Aircraft_specs"] = 11000,
["Aircraft_specs/convert"] = 11000,
["Aircraft_specs/eng"] = 11000,
["Aircraft_specs/length"] = 11000,
["Aircraft_specs/range"] = 11000,
["Aircraft_specs/speed"] = 11000,
["Airport-dest-list"] = 3500,
["Airport_codes"] = 15000,
["Airport_destination_list"] = 4800,
["Al"] = 54000,
["Album"] = 215000,
["Album_chart"] = 17000,
["Album_chart/chartnote"] = 24000,
["Album_cover_fur"] = 51000,
["Album_label_category"] = 2000,
["Album_label_category/core"] = 2000,
["Album_ratings"] = 88000,
["Album_reviews"] = 6500,
["Albumchart"] = 8400,
["Albums"] = 7800,
["Albums_category"] = 23000,
["Albums_category/core"] = 23000,
["Albums_category/type/default"] = 23000,
["Align"] = 128000,
["Aligned_table"] = 9400,
["AllIrelandByCountyCatNav"] = 2200,
["AllMovie_name"] = 5000,
["AllMovie_title"] = 25000,
["AllMusic"] = 79000,
["All_plot"] = 2200,
["Allcaps"] = 28000,
["Allcaps/styles.css"] = 28000,
["Allmovie"] = 3900,
["Allmovie_title"] = 2400,
["Allmusic"] = 75000,
["Allow_wrap"] = 34000,
["Ambox"] = 1360000,
["Ambox_globe"] = 26000,
["Ambox_globe_current_red"] = 24000,
["American_English"] = 9900,
["American_football_roster/Footer"] = 2400,
["American_football_roster/Header"] = 2400,
["American_football_roster/Player"] = 2400,
["Americanfootballbox"] = 2000,
["Amg_movie"] = 11000,
["Amg_name"] = 3300,
["Anchor"] = 76000,
["Angle_bracket"] = 2100,
["Anglican_navbox_titlestyle"] = 14000,
["Anglicise_rank"] = 512000,
["Animal_tasks"] = 12000,
["Ann"] = 9300,
["Annotated_link"] = 3800,
["Annual_readership"] = 19000,
["Anon_block"] = 4500,
["Anonblock"] = 43000,
["Antonym_of_(dis)establish"] = 4200,
["ArbCom_Arab-Israeli_enforcement"] = 2600,
["Arbitration_Committee_candidate/data"] = 38000,
["Archive"] = 134000,
["Archive-nav"] = 5500,
["Archive_bottom"] = 21000,
["Archive_box"] = 19000,
["Archive_list"] = 49000,
["Archive_navigation"] = 6400,
["Archive_top"] = 19000,
["Archivebottom"] = 3400,
["Archivebox"] = 2400,
["Archives"] = 40000,
["Archivetop"] = 3300,
["Army"] = 12000,
["Army/core"] = 12000,
["Art_UK_bio"] = 2200,
["Art_UK_bio/plural"] = 2200,
["Article"] = 2800,
["ArticleHistory"] = 31000,
["Article_alerts_box"] = 3200,
["Article_history"] = 42000,
["Articles_by_Quality"] = 2500,
["Articles_by_Quality/down"] = 2500,
["Articles_by_Quality/total"] = 2500,
["Articles_by_Quality/up"] = 2500,
["As_of"] = 66000,
["Asbox"] = 2350000,
["Asia_topic"] = 9100,
["Asof"] = 6300,
["Assessed-Class"] = 17000,
["Assignment"] = 4100,
["Assignment_milestones"] = 3500,
["AstDys"] = 2800,
["AthAbbr"] = 2200,
["Atnhead"] = 5900,
["Atop"] = 2500,
["Attached_KML"] = 12000,
["Audio"] = 15000,
["Audio_sample"] = 3300,
["AustralianFootball"] = 7000,
["Australian_party_style"] = 4900,
["Australian_politics/name"] = 3000,
["Australian_politics/party_colours"] = 5000,
["Austria_metadata_Wikidata"] = 2100,
["Austria_population_Wikidata"] = 2100,
["Aut"] = 8500,
["Authority_control"] = 1390000,
["Auto_archiving_notice"] = 9200,
["Auto_link"] = 71000,
["Autobiography"] = 3000,
["Automated_tools"] = 84000,
["Automated_tools/core"] = 84000,
["Automatic_archive_navigator"] = 99000,
["Automatic_taxobox"] = 45000,
["Award2"] = 2400,
["Awards"] = 2100,
["Awards_table"] = 3300,
["Awards_table/styles.css"] = 3300,
["Aye"] = 14000,
["Module:AFC_submission_catcheck"] = 326000,
["Module:A_or_an"] = 16000,
["Module:A_or_an/words"] = 16000,
["Module:About"] = 136000,
["Module:Adjacent_stations"] = 47000,
["Module:Adjacent_stations/i18n"] = 47000,
["Module:Age"] = 987000,
["Module:Ahnentafel"] = 8300,
["Module:Airport_destination_list"] = 4800,
["Module:Album_ratings"] = 88000,
["Module:Aligned_table"] = 9400,
["Module:Anchor"] = 76000,
["Module:Ancient_Egypt_era"] = 2800,
["Module:Ancient_Egypt_era/data"] = 2800,
["Module:Ancient_Egypt_kings"] = 2800,
["Module:Ancient_Egypt_kings/data"] = 2800,
["Module:Ancient_Olympiads"] = 2800,
["Module:Ancient_Olympiads/data"] = 2800,
["Module:Archive_list"] = 51000,
["Module:Arguments"] = 25500000,
["Module:Armenian"] = 2800,
["Module:Article_history"] = 42000,
["Module:Article_history/Category"] = 42000,
["Module:Article_history/config"] = 42000,
["Module:Asbox"] = 2350000,
["Module:Asbox_stubtree"] = 32000,
["Module:Attached_KML"] = 12000,
["Module:Australian_place_map"] = 15000,
["Module:Authority_control"] = 1390000,
["Module:Automated_taxobox"] = 45000,
["Module:Automatic_archive_navigator"] = 99000,
["Module:Automatic_archive_navigator/config"] = 99000,
["Module:Autotaxobox"] = 512000,
}
ac9gv6se7mps9c8i8lclr0akjh4uxs2
Module:Transclusion count/data/C
828
910
2052
2051
2020-09-29T19:15:45Z
Chrisb
1
1 revision imported
2051
Scribunto
text/plain
return {
["C"] = 531000,
["C-Class"] = 61000,
["C-SPAN"] = 11000,
["C-cmn"] = 2300,
["C-pl"] = 53000,
["CAN"] = 19000,
["CANelec"] = 8700,
["CANelec/hold"] = 2900,
["CANelec/source"] = 5000,
["CANelec/top"] = 5100,
["CANelec/total"] = 5100,
["CAS"] = 3800,
["CBB_Standings_End"] = 11000,
["CBB_Standings_Entry"] = 11000,
["CBB_Standings_Start"] = 11000,
["CBB_Yearly_Record_End"] = 2500,
["CBB_Yearly_Record_Entry"] = 2600,
["CBB_Yearly_Record_Start"] = 2500,
["CBB_Yearly_Record_Subhead"] = 3400,
["CBB_Yearly_Record_Subtotal"] = 2400,
["CBB_roster/Footer"] = 5200,
["CBB_roster/Header"] = 5200,
["CBB_roster/Player"] = 5200,
["CBB_schedule_end"] = 7700,
["CBB_schedule_entry"] = 7700,
["CBB_schedule_start"] = 7700,
["CBB_yearly_record_end"] = 3400,
["CBB_yearly_record_end/legend"] = 3000,
["CBB_yearly_record_entry"] = 3400,
["CBB_yearly_record_start"] = 3300,
["CBB_yearly_record_subhead"] = 3500,
["CBB_yearly_record_subtotal"] = 3200,
["CBSB_Standings_End"] = 3000,
["CBSB_Standings_Entry"] = 3000,
["CBSB_Standings_Start"] = 3000,
["CBSB_link"] = 2600,
["CC0"] = 5700,
["CENTURY"] = 16000,
["CFB_Standings_End"] = 26000,
["CFB_Standings_Entry"] = 26000,
["CFB_Standings_Start"] = 26000,
["CFB_Yearly_Record_End"] = 5700,
["CFB_Yearly_Record_End/legend"] = 2000,
["CFB_Yearly_Record_Entry"] = 5700,
["CFB_Yearly_Record_Start"] = 5700,
["CFB_Yearly_Record_Subhead"] = 5700,
["CFB_Yearly_Record_Subtotal"] = 5600,
["CFB_schedule"] = 20000,
["CFB_schedule_entry"] = 14000,
["CFL_Year"] = 4800,
["CGF_year"] = 2300,
["CHE"] = 9200,
["CHI"] = 2500,
["CHL"] = 3300,
["CHN"] = 10000,
["COI"] = 14000,
["COIUL"] = 111000,
["COI_editnotice"] = 5300,
["COL"] = 4400,
["COLON"] = 13000,
["CRO"] = 3600,
["CSK"] = 2600,
["CSS_image_crop"] = 2900,
["CUB"] = 3300,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2800,
["CZE"] = 12000,
["Calendar"] = 2300,
["California's_Geographic_Names"] = 2700,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 2800,
["Campaignbox"] = 20000,
["CanadaByProvinceCatNav"] = 9200,
["CanadaProvinceThe"] = 3800,
["Canadian_English"] = 3300,
["Canadian_Parliament_links"] = 4900,
["Canadian_election_result"] = 8700,
["Canadian_election_result/hold"] = 2900,
["Canadian_election_result/source"] = 5700,
["Canadian_election_result/top"] = 8100,
["Canadian_election_result/top/ElectionYearTest"] = 4200,
["Canadian_election_result/total"] = 6900,
["Canadian_party_colour"] = 12000,
["Canadian_party_colour/colour"] = 12000,
["Canadian_party_colour/colour/default"] = 12000,
["Canadian_party_colour/name"] = 9600,
["Canadian_party_colour/name/default"] = 4200,
["Cascite"] = 14000,
["Caselaw_source"] = 3800,
["Cast_listing"] = 5300,
["Cat"] = 220000,
["CatAutoTOC"] = 550000,
["CatAutoTOC/core"] = 549000,
["CatRel"] = 3800,
["CatTrack"] = 3100,
["Cat_class"] = 7000,
["Cat_in_use"] = 56000,
["Cat_main"] = 161000,
["Cat_more"] = 110000,
["Cat_more_if_exists"] = 33000,
["Cat_more_if_exists/core"] = 33000,
["Cat_see_also"] = 2900,
["Catalog_lookup_link"] = 467000,
["Category-Class"] = 13000,
["Category-inline"] = 6800,
["Category_TOC"] = 65000,
["Category_TOC/tracking"] = 65000,
["Category_U.S._State_elections_by_year"] = 6900,
["Category_U.S._State_elections_by_year/core"] = 6900,
["Category_class"] = 40000,
["Category_class/column"] = 40000,
["Category_class/second_row_column"] = 40000,
["Category_described_in_year"] = 5400,
["Category_diffuse"] = 8900,
["Category_disambiguation"] = 2100,
["Category_disambiguation/category_link"] = 2100,
["Category_explanation"] = 73000,
["Category_handler"] = 2960000,
["Category_ifexist"] = 4600,
["Category_importance"] = 12000,
["Category_importance/column"] = 12000,
["Category_importance/second_row_column"] = 12000,
["Category_link"] = 99000,
["Category_link_with_count"] = 4900,
["Category_ordered_by_date"] = 9200,
["Category_other"] = 777000,
["Category_pair"] = 4200,
["Category_pair/core"] = 4200,
["Category_redirect"] = 99000,
["Category_see_also"] = 37000,
["Category_see_also/Category_pair_check"] = 37000,
["Category_see_also_if_exists"] = 44000,
["Category_see_also_if_exists_2"] = 77000,
["Category_title"] = 2700,
["Catexp"] = 5500,
["CathEncy"] = 2400,
["Catholic"] = 4300,
["Catholic_Encyclopedia"] = 4900,
["Catmain"] = 22000,
["Catmore"] = 9100,
["Caution"] = 2100,
["Cbb_link"] = 6100,
["Cbignore"] = 22000,
["Cc-by-2.5"] = 5200,
["Cc-by-3.0"] = 12000,
["Cc-by-sa-2.5"] = 3600,
["Cc-by-sa-2.5,2.0,1.0"] = 3700,
["Cc-by-sa-3.0"] = 36000,
["Cc-by-sa-3.0,2.5,2.0,1.0"] = 3900,
["Cc-by-sa-3.0-migrated"] = 34000,
["Cc-by-sa-4.0"] = 14000,
["Cc-zero"] = 5700,
["CensusAU"] = 9300,
["Census_2016_AUS"] = 7400,
["Cent"] = 4700,
["Center"] = 560000,
["Centralized_discussion"] = 5000,
["Centralized_discussion/core"] = 5000,
["Centre"] = 2200,
["Century"] = 2000,
["Century_name_from_decade_or_year"] = 65000,
["Century_name_from_title_decade"] = 5500,
["Century_name_from_title_year"] = 5000,
["Certification_Cite/Title"] = 18000,
["Certification_Cite/URL"] = 20000,
["Certification_Cite_Ref"] = 18000,
["Certification_Table_Bottom"] = 19000,
["Certification_Table_Entry"] = 19000,
["Certification_Table_Entry/Foot"] = 18000,
["Certification_Table_Entry/Region"] = 19000,
["Certification_Table_Entry/Sales"] = 17000,
["Certification_Table_Entry/Sales/GermanPeriod"] = 2600,
["Certification_Table_Top"] = 19000,
["Cfb_link"] = 20000,
["Cfd_result"] = 2500,
["Cfdend"] = 3800,
["Chart"] = 4500,
["Chart/end"] = 4400,
["Chart/start"] = 4500,
["Check_completeness_of_transclusions"] = 3700,
["Check_talk"] = 20000,
["Check_talk_wp"] = 1300000,
["Check_winner_by_scores"] = 9800,
["CheckedSockpuppet"] = 7100,
["Checked_sockpuppet"] = 17000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 11000,
["Checkuser"] = 60000,
["Checkuserblock-account"] = 6300,
["Chem"] = 3800,
["Chem/atom"] = 3700,
["Chem/link"] = 3800,
["Chem_molar_mass"] = 15000,
["Chem_molar_mass/format"] = 15000,
["Chembox"] = 12000,
["Chembox_3DMet"] = 12000,
["Chembox_3DMet/format"] = 12000,
["Chembox_AllOtherNames"] = 11000,
["Chembox_AllOtherNames/format"] = 11000,
["Chembox_Appearance"] = 5100,
["Chembox_BoilingPt"] = 3500,
["Chembox_CASNo"] = 12000,
["Chembox_CASNo/format"] = 12000,
["Chembox_CalcTemperatures"] = 6100,
["Chembox_ChEBI"] = 12000,
["Chembox_ChEBI/format"] = 12000,
["Chembox_ChEMBL"] = 12000,
["Chembox_ChEMBL/format"] = 12000,
["Chembox_ChemSpiderID"] = 12000,
["Chembox_ChemSpiderID/format"] = 12000,
["Chembox_CompTox"] = 12000,
["Chembox_CompTox/format"] = 12000,
["Chembox_Density"] = 4400,
["Chembox_DrugBank"] = 12000,
["Chembox_DrugBank/format"] = 12000,
["Chembox_ECHA"] = 7000,
["Chembox_ECNumber"] = 12000,
["Chembox_ECNumber/format"] = 12000,
["Chembox_Elements"] = 12000,
["Chembox_Elements/molecular_formula"] = 16000,
["Chembox_Footer"] = 12000,
["Chembox_Footer/tracking"] = 12000,
["Chembox_Hazards"] = 11000,
["Chembox_IUPHAR_ligand"] = 12000,
["Chembox_IUPHAR_ligand/format"] = 12000,
["Chembox_Identifiers"] = 12000,
["Chembox_InChI"] = 11000,
["Chembox_InChI/format"] = 11000,
["Chembox_Indexlist"] = 12000,
["Chembox_Jmol"] = 12000,
["Chembox_Jmol/format"] = 12000,
["Chembox_KEGG"] = 12000,
["Chembox_KEGG/format"] = 12000,
["Chembox_MeltingPt"] = 5200,
["Chembox_Properties"] = 12000,
["Chembox_PubChem"] = 12000,
["Chembox_PubChem/format"] = 12000,
["Chembox_RTECS"] = 12000,
["Chembox_RTECS/format"] = 12000,
["Chembox_Related"] = 2600,
["Chembox_SMILES"] = 11000,
["Chembox_SMILES/format"] = 11000,
["Chembox_SolubilityInWater"] = 3400,
["Chembox_UNII"] = 12000,
["Chembox_UNII/format"] = 12000,
["Chembox_headerbar"] = 12000,
["Chembox_image"] = 12000,
["Chembox_image_cell"] = 11000,
["Chembox_image_sbs"] = 11000,
["Chembox_parametercheck"] = 12000,
["Chembox_templatePar/formatPreviewMessage"] = 12000,
["Chembox_verification"] = 7200,
["Chemicals"] = 8400,
["Chemistry"] = 3000,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 2900,
["Chinese"] = 6900,
["Chinese_name"] = 16000,
["Chr"] = 8700,
["ChristianityWikiProject"] = 6800,
["Chrysomelidae-stub"] = 2100,
["Circa"] = 33000,
["Circular_reference"] = 3700,
["Citation"] = 299000,
["Citation/make_link"] = 4500,
["Citation_needed"] = 440000,
["Citation_needed_span"] = 2600,
["Citation_style"] = 4400,
["Cite"] = 6700,
["Cite_AV_media"] = 28000,
["Cite_AV_media_notes"] = 18000,
["Cite_Appletons'"] = 2300,
["Cite_Australian_Dictionary_of_Biography"] = 2500,
["Cite_Catholic_Encyclopedia"] = 7800,
["Cite_DCB"] = 2600,
["Cite_DNB"] = 16000,
["Cite_EB1911"] = 21000,
["Cite_GNIS"] = 2300,
["Cite_Jewish_Encyclopedia"] = 2500,
["Cite_NIE"] = 3600,
["Cite_NSW_Parliament"] = 3000,
["Cite_NSW_SHR"] = 2600,
["Cite_ODNB"] = 8500,
["Cite_Q"] = 43000,
["Cite_QHR"] = 2900,
["Cite_QPN"] = 3800,
["Cite_Russian_law"] = 7000,
["Cite_Sports-Reference"] = 53000,
["Cite_WoRMS"] = 3500,
["Cite_arXiv"] = 3700,
["Cite_article"] = 2700,
["Cite_av_media"] = 3400,
["Cite_bcgnis"] = 2600,
["Cite_book"] = 1250000,
["Cite_certification"] = 20000,
["Cite_cgndb"] = 2300,
["Cite_conference"] = 11000,
["Cite_court"] = 4300,
["Cite_document"] = 6600,
["Cite_encyclopedia"] = 121000,
["Cite_episode"] = 14000,
["Cite_gnis"] = 32000,
["Cite_interview"] = 5100,
["Cite_iucn"] = 30000,
["Cite_journal"] = 708000,
["Cite_magazine"] = 119000,
["Cite_map"] = 28000,
["Cite_news"] = 1140000,
["Cite_newspaper"] = 6900,
["Cite_newspaper_The_Times"] = 5600,
["Cite_paper"] = 3400,
["Cite_patent"] = 4000,
["Cite_patent/authors"] = 2700,
["Cite_patent/core"] = 4300,
["Cite_peakbagger"] = 3500,
["Cite_press_release"] = 46000,
["Cite_report"] = 21000,
["Cite_simbad"] = 3400,
["Cite_sports-reference"] = 57000,
["Cite_thesis"] = 15000,
["Cite_tweet"] = 14000,
["Cite_video"] = 11000,
["Cite_video_game"] = 2500,
["Cite_web"] = 3690000,
["Cite_wikisource"] = 4100,
["Cite_wikisource/make_link"] = 48000,
["Citeweb"] = 18000,
["Civil_navigation"] = 2400,
["Cl"] = 98000,
["Clade"] = 5100,
["Clade/styles.css"] = 5100,
["Clarify"] = 36000,
["Class"] = 8820000,
["Class/colour"] = 8880000,
["Class/icon"] = 8830000,
["Class_mask"] = 9010000,
["Class_mask/b"] = 289000,
["Classical"] = 7600,
["Classicon"] = 4300,
["Clc"] = 4000,
["Cleanup"] = 13000,
["Cleanup_reorganize"] = 2800,
["Cleanup_rewrite"] = 5300,
["Clear"] = 2460000,
["Clear-left"] = 18000,
["Clear_left"] = 30000,
["Clear_right"] = 2600,
["Clerk-Note"] = 7500,
["Clerknote"] = 5300,
["Clickable_button"] = 11000,
["Clickable_button_2"] = 713000,
["Clr"] = 3500,
["Cmbox"] = 326000,
["Cn"] = 73000,
["Coat_of_arms"] = 7800,
["Cob"] = 8600,
["Code"] = 36000,
["Col-1-of-2"] = 3100,
["Col-2"] = 145000,
["Col-2-of-2"] = 3000,
["Col-3"] = 12000,
["Col-4"] = 4200,
["Col-begin"] = 193000,
["Col-break"] = 189000,
["Col-end"] = 190000,
["Col-start"] = 17000,
["Colbegin"] = 49000,
["Colend"] = 58000,
["Collapse"] = 8600,
["Collapse_bottom"] = 44000,
["Collapse_top"] = 44000,
["Collapsebottom"] = 3600,
["Collapsetop"] = 3600,
["Collapsible_list"] = 43000,
["Collapsible_option"] = 120000,
["Colledge"] = 3100,
["College"] = 6400,
["CollegePrimaryHeader"] = 3600,
["CollegePrimaryStyle"] = 78000,
["College_Athlete_Recruit_End"] = 2200,
["College_Athlete_Recruit_Entry"] = 2300,
["College_Athlete_Recruit_Start"] = 2200,
["College_athlete_recruit_end"] = 3200,
["College_athlete_recruit_entry"] = 3300,
["College_athlete_recruit_start"] = 3300,
["College_color_list"] = 3500,
["Colon"] = 16000,
["Color"] = 399000,
["Color_box"] = 57000,
["Colorbox"] = 2400,
["Colorbull"] = 4500,
["Colored_link"] = 26000,
["Colors"] = 17000,
["Colour"] = 10000,
["Coloured_link"] = 4200,
["Column-count"] = 17000,
["Column-width"] = 940000,
["Columns-list"] = 85000,
["Columns/styles.css"] = 3300,
["Comedy"] = 3300,
["Comic_Book_DB"] = 3700,
["Comicbookdb"] = 3600,
["Comics-replaceability"] = 2900,
["Comics_infobox_sec"] = 11000,
["Comics_infobox_sec/creator_nat"] = 3000,
["Comics_infobox_sec/formcat"] = 3000,
["Comics_infobox_sec/genre"] = 3700,
["Comics_infobox_sec/genrecat"] = 3400,
["Comicsproj"] = 30000,
["Comicsyrimage"] = 2100,
["Comma_separated_entries"] = 307000,
["Comment"] = 3700,
["Committed_identity"] = 2700,
["Committed_identity/styles.css"] = 2700,
["Commons"] = 65000,
["Commons-inline"] = 12000,
["Commons_cat"] = 50000,
["Commons_category"] = 787000,
["Commons_category-inline"] = 110000,
["Commons_category_inline"] = 6900,
["Commonscat"] = 76000,
["Commonscat-inline"] = 27000,
["Commonscat_inline"] = 3000,
["Commonscatinline"] = 6900,
["Compact_ToC"] = 6400,
["Compare"] = 7000,
["Composition_bar"] = 7700,
["ConfirmationOTRS"] = 3100,
["Confirmed"] = 12000,
["Confused"] = 2500,
["Confusing"] = 2400,
["CongBio"] = 9800,
["CongLinks"] = 4100,
["Connected_contributor"] = 14000,
["Connected_contributor_(paid)"] = 4600,
["Conservative_Party_(UK)/meta/color"] = 10000,
["Conservative_Party_(UK)/meta/shortname"] = 8900,
["Conservative_and_Unionist_Party_(UK)/meta/color"] = 11000,
["Constellation_navbox"] = 4400,
["Container"] = 8300,
["Container_cat"] = 6400,
["Container_category"] = 33000,
["Containercat"] = 2700,
["Contains_special_characters"] = 4100,
["Contains_special_characters/core"] = 4100,
["Content_category"] = 6500,
["Context"] = 3900,
["Continent2continental"] = 13000,
["Continent_adjective_to_noun"] = 2200,
["Controversial"] = 2900,
["Convert"] = 1040000,
["Convinfobox"] = 177000,
["Convinfobox/2"] = 12000,
["Convinfobox/3"] = 107000,
["Convinfobox/pri2"] = 54000,
["Convinfobox/prisec2"] = 2600,
["Convinfobox/prisec3"] = 21000,
["Convinfobox/sec2"] = 6900,
["Coord"] = 1230000,
["Coord_missing"] = 120000,
["Coord_missing/CheckCat"] = 118000,
["Coords"] = 6700,
["Copied"] = 14000,
["Copy_to_Wikimedia_Commons"] = 159000,
["Copyvios"] = 4200,
["Cospar"] = 2800,
["Cot"] = 8400,
["Count"] = 10000,
["Country2continent"] = 15000,
["CountryPrefixThe"] = 87000,
["Country_abbreviation"] = 101000,
["Country_alias"] = 14000,
["Country_at_games_navbox"] = 2100,
["Country_at_games_navbox/below"] = 2100,
["Country_data"] = 4900,
["Country_data_ALB"] = 5800,
["Country_data_ALG"] = 7400,
["Country_data_AND"] = 2200,
["Country_data_ANG"] = 3900,
["Country_data_ARG"] = 40000,
["Country_data_ARM"] = 5900,
["Country_data_AUS"] = 65000,
["Country_data_AUT"] = 37000,
["Country_data_AZE"] = 6900,
["Country_data_Afghanistan"] = 9500,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 15000,
["Country_data_Alberta"] = 3700,
["Country_data_Algeria"] = 19000,
["Country_data_American_Samoa"] = 2600,
["Country_data_Andorra"] = 6400,
["Country_data_Angola"] = 9700,
["Country_data_Anguilla"] = 2400,
["Country_data_Antigua_and_Barbuda"] = 5400,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 65000,
["Country_data_Arizona"] = 2200,
["Country_data_Armenia"] = 16000,
["Country_data_Aruba"] = 3500,
["Country_data_Australia"] = 102000,
["Country_data_Austria"] = 59000,
["Country_data_Azerbaijan"] = 21000,
["Country_data_BAH"] = 3800,
["Country_data_BAN"] = 3400,
["Country_data_BAR"] = 2200,
["Country_data_BEL"] = 43000,
["Country_data_BHR"] = 3400,
["Country_data_BIH"] = 10000,
["Country_data_BLR"] = 21000,
["Country_data_BOL"] = 5600,
["Country_data_BOT"] = 2000,
["Country_data_BRA"] = 49000,
["Country_data_BUL"] = 21000,
["Country_data_Bahamas"] = 8700,
["Country_data_Bahrain"] = 8600,
["Country_data_Bangladesh"] = 14000,
["Country_data_Barbados"] = 7000,
["Country_data_Belarus"] = 33000,
["Country_data_Belgium"] = 68000,
["Country_data_Belize"] = 4500,
["Country_data_Benin"] = 6000,
["Country_data_Bermuda"] = 5100,
["Country_data_Bhutan"] = 4100,
["Country_data_Bolivia"] = 12000,
["Country_data_Bosnia_and_Herzegovina"] = 21000,
["Country_data_Botswana"] = 7200,
["Country_data_Brazil"] = 82000,
["Country_data_British_Columbia"] = 2500,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 5300,
["Country_data_Bulgaria"] = 40000,
["Country_data_Burkina_Faso"] = 8500,
["Country_data_Burma"] = 2700,
["Country_data_Burundi"] = 4500,
["Country_data_CAN"] = 51000,
["Country_data_CHE"] = 3900,
["Country_data_CHI"] = 16000,
["Country_data_CHN"] = 35000,
["Country_data_CIV"] = 6200,
["Country_data_CMR"] = 6800,
["Country_data_COD"] = 2500,
["Country_data_COL"] = 21000,
["Country_data_CRC"] = 6000,
["Country_data_CRO"] = 28000,
["Country_data_CUB"] = 8000,
["Country_data_CYP"] = 7500,
["Country_data_CZE"] = 39000,
["Country_data_California"] = 6200,
["Country_data_Cambodia"] = 7700,
["Country_data_Cameroon"] = 14000,
["Country_data_Canada"] = 100000,
["Country_data_Cape_Verde"] = 4800,
["Country_data_Catalonia"] = 2300,
["Country_data_Cayman_Islands"] = 4100,
["Country_data_Central_African_Republic"] = 3900,
["Country_data_Chad"] = 4400,
["Country_data_Chile"] = 32000,
["Country_data_China"] = 65000,
["Country_data_Chinese_Taipei"] = 15000,
["Country_data_Colombia"] = 36000,
["Country_data_Colorado"] = 4700,
["Country_data_Comoros"] = 3500,
["Country_data_Confederate_States_of_America"] = 2900,
["Country_data_Connecticut"] = 2900,
["Country_data_Cook_Islands"] = 3200,
["Country_data_Costa_Rica"] = 14000,
["Country_data_Croatia"] = 44000,
["Country_data_Cuba"] = 17000,
["Country_data_Curaçao"] = 3500,
["Country_data_Cyprus"] = 17000,
["Country_data_Czech_Republic"] = 63000,
["Country_data_Czechoslovakia"] = 15000,
["Country_data_DEN"] = 28000,
["Country_data_DEU"] = 7500,
["Country_data_DNK"] = 2800,
["Country_data_DOM"] = 7100,
["Country_data_Democratic_Republic_of_the_Congo"] = 9000,
["Country_data_Denmark"] = 56000,
["Country_data_Djibouti"] = 3700,
["Country_data_Dominica"] = 3500,
["Country_data_Dominican_Republic"] = 14000,
["Country_data_ECU"] = 10000,
["Country_data_EGY"] = 11000,
["Country_data_ENG"] = 38000,
["Country_data_ESA"] = 2200,
["Country_data_ESP"] = 60000,
["Country_data_EST"] = 12000,
["Country_data_ETH"] = 3200,
["Country_data_EU"] = 3500,
["Country_data_East_Germany"] = 9600,
["Country_data_East_Timor"] = 4000,
["Country_data_Ecuador"] = 19000,
["Country_data_Egypt"] = 25000,
["Country_data_El_Salvador"] = 11000,
["Country_data_Empire_of_Japan"] = 3200,
["Country_data_England"] = 77000,
["Country_data_Equatorial_Guinea"] = 4300,
["Country_data_Eritrea"] = 4200,
["Country_data_Estonia"] = 26000,
["Country_data_Eswatini"] = 4000,
["Country_data_Ethiopia"] = 9700,
["Country_data_Europe"] = 2600,
["Country_data_European_Union"] = 6600,
["Country_data_FIJ"] = 3200,
["Country_data_FIN"] = 29000,
["Country_data_FRA"] = 81000,
["Country_data_FRG"] = 11000,
["Country_data_FR_Yugoslavia"] = 3500,
["Country_data_Faroe_Islands"] = 4500,
["Country_data_Federated_States_of_Micronesia"] = 2500,
["Country_data_Fiji"] = 8900,
["Country_data_Finland"] = 51000,
["Country_data_Florida"] = 6300,
["Country_data_France"] = 173000,
["Country_data_French_Polynesia"] = 3100,
["Country_data_GAB"] = 2200,
["Country_data_GBR"] = 45000,
["Country_data_GDR"] = 5500,
["Country_data_GEO"] = 10000,
["Country_data_GER"] = 67000,
["Country_data_GHA"] = 8200,
["Country_data_GRE"] = 21000,
["Country_data_GUA"] = 4800,
["Country_data_GUI"] = 2300,
["Country_data_GUY"] = 2500,
["Country_data_Gabon"] = 6400,
["Country_data_Gambia"] = 5200,
["Country_data_Georgia"] = 9300,
["Country_data_Georgia_(U.S._state)"] = 2500,
["Country_data_Georgia_(country)"] = 21000,
["Country_data_German_Empire"] = 4500,
["Country_data_Germany"] = 121000,
["Country_data_Ghana"] = 18000,
["Country_data_Gibraltar"] = 4000,
["Country_data_Great_Britain"] = 53000,
["Country_data_Greece"] = 45000,
["Country_data_Greenland"] = 2500,
["Country_data_Grenada"] = 4500,
["Country_data_Guadeloupe"] = 2200,
["Country_data_Guam"] = 4300,
["Country_data_Guatemala"] = 11000,
["Country_data_Guernsey"] = 2100,
["Country_data_Guinea"] = 6700,
["Country_data_Guinea-Bissau"] = 3900,
["Country_data_Guyana"] = 6900,
["Country_data_HAI"] = 3000,
["Country_data_HKG"] = 11000,
["Country_data_HON"] = 3900,
["Country_data_HUN"] = 30000,
["Country_data_Haiti"] = 7700,
["Country_data_Honduras"] = 9500,
["Country_data_Hong_Kong"] = 21000,
["Country_data_Hungary"] = 52000,
["Country_data_IDN"] = 4700,
["Country_data_INA"] = 8900,
["Country_data_IND"] = 26000,
["Country_data_IRE"] = 9700,
["Country_data_IRI"] = 4100,
["Country_data_IRL"] = 17000,
["Country_data_IRN"] = 5200,
["Country_data_IRQ"] = 3300,
["Country_data_ISL"] = 7700,
["Country_data_ISR"] = 18000,
["Country_data_ITA"] = 72000,
["Country_data_Iceland"] = 18000,
["Country_data_Illinois"] = 5000,
["Country_data_India"] = 86000,
["Country_data_Indiana"] = 2600,
["Country_data_Indonesia"] = 29000,
["Country_data_Iowa"] = 2900,
["Country_data_Iran"] = 88000,
["Country_data_Iraq"] = 11000,
["Country_data_Ireland"] = 28000,
["Country_data_Isle_of_Man"] = 2700,
["Country_data_Israel"] = 35000,
["Country_data_Italy"] = 115000,
["Country_data_Ivory_Coast"] = 13000,
["Country_data_JAM"] = 8200,
["Country_data_JOR"] = 3100,
["Country_data_JP"] = 7600,
["Country_data_JPN"] = 50000,
["Country_data_Jamaica"] = 16000,
["Country_data_Japan"] = 94000,
["Country_data_Jersey"] = 2300,
["Country_data_Jordan"] = 9200,
["Country_data_KAZ"] = 16000,
["Country_data_KEN"] = 6000,
["Country_data_KGZ"] = 3000,
["Country_data_KOR"] = 27000,
["Country_data_KSA"] = 4500,
["Country_data_KUW"] = 3300,
["Country_data_Kazakhstan"] = 25000,
["Country_data_Kenya"] = 15000,
["Country_data_Kingdom_of_Great_Britain"] = 3900,
["Country_data_Kingdom_of_Italy"] = 3300,
["Country_data_Kiribati"] = 2400,
["Country_data_Kosovo"] = 6500,
["Country_data_Kuwait"] = 8600,
["Country_data_Kyrgyzstan"] = 7600,
["Country_data_LAT"] = 12000,
["Country_data_LIB"] = 2500,
["Country_data_LIE"] = 2800,
["Country_data_LIT"] = 2900,
["Country_data_LTU"] = 10000,
["Country_data_LUX"] = 8900,
["Country_data_Laos"] = 6300,
["Country_data_Latvia"] = 25000,
["Country_data_Lebanon"] = 12000,
["Country_data_Lesotho"] = 4300,
["Country_data_Liberia"] = 5800,
["Country_data_Libya"] = 7200,
["Country_data_Liechtenstein"] = 6400,
["Country_data_Lithuania"] = 24000,
["Country_data_Luxembourg"] = 18000,
["Country_data_MAC"] = 2300,
["Country_data_MAR"] = 9400,
["Country_data_MAS"] = 9200,
["Country_data_MDA"] = 5900,
["Country_data_MEX"] = 27000,
["Country_data_MGL"] = 2100,
["Country_data_MKD"] = 5800,
["Country_data_MLI"] = 3200,
["Country_data_MLT"] = 5200,
["Country_data_MNE"] = 6500,
["Country_data_MON"] = 2900,
["Country_data_MRI"] = 2100,
["Country_data_MYA"] = 2900,
["Country_data_MYS"] = 3900,
["Country_data_Macau"] = 6300,
["Country_data_Macedonia"] = 5000,
["Country_data_Madagascar"] = 7500,
["Country_data_Malawi"] = 4500,
["Country_data_Malaysia"] = 30000,
["Country_data_Maldives"] = 5000,
["Country_data_Mali"] = 9200,
["Country_data_Malta"] = 13000,
["Country_data_Manitoba"] = 2500,
["Country_data_Marshall_Islands"] = 3000,
["Country_data_Martinique"] = 2400,
["Country_data_Maryland"] = 2900,
["Country_data_Massachusetts"] = 2600,
["Country_data_Mauritania"] = 4600,
["Country_data_Mauritius"] = 7100,
["Country_data_Mexico"] = 51000,
["Country_data_Michigan"] = 3700,
["Country_data_Minnesota"] = 3400,
["Country_data_Moldova"] = 14000,
["Country_data_Monaco"] = 8400,
["Country_data_Mongolia"] = 7600,
["Country_data_Montana"] = 2300,
["Country_data_Montenegro"] = 14000,
["Country_data_Montserrat"] = 2300,
["Country_data_Morocco"] = 21000,
["Country_data_Mozambique"] = 6000,
["Country_data_Myanmar"] = 11000,
["Country_data_NAM"] = 3200,
["Country_data_NED"] = 49000,
["Country_data_NEP"] = 2500,
["Country_data_NGA"] = 6500,
["Country_data_NGR"] = 7000,
["Country_data_NIR"] = 8300,
["Country_data_NLD"] = 5700,
["Country_data_NOR"] = 24000,
["Country_data_NZ"] = 2400,
["Country_data_NZL"] = 28000,
["Country_data_Namibia"] = 8500,
["Country_data_Nazi_Germany"] = 8500,
["Country_data_Nepal"] = 13000,
["Country_data_Netherlands"] = 87000,
["Country_data_Netherlands_Antilles"] = 2100,
["Country_data_New_Brunswick"] = 2600,
["Country_data_New_Caledonia"] = 3000,
["Country_data_New_Jersey"] = 4000,
["Country_data_New_South_Wales"] = 4900,
["Country_data_New_York"] = 3500,
["Country_data_New_York_(state)"] = 4800,
["Country_data_New_Zealand"] = 50000,
["Country_data_Newfoundland_and_Labrador"] = 2200,
["Country_data_Nicaragua"] = 8100,
["Country_data_Niger"] = 4600,
["Country_data_Nigeria"] = 26000,
["Country_data_North_Carolina"] = 3200,
["Country_data_North_Korea"] = 11000,
["Country_data_North_Macedonia"] = 12000,
["Country_data_Northern_Ireland"] = 12000,
["Country_data_Northern_Mariana_Islands"] = 2300,
["Country_data_Norway"] = 55000,
["Country_data_Nova_Scotia"] = 2200,
["Country_data_OMA"] = 2200,
["Country_data_Ohio"] = 4700,
["Country_data_Oman"] = 7400,
["Country_data_Ontario"] = 3400,
["Country_data_Ottoman_Empire"] = 2200,
["Country_data_PAK"] = 7300,
["Country_data_PAN"] = 6000,
["Country_data_PAR"] = 8900,
["Country_data_PER"] = 11000,
["Country_data_PHI"] = 10000,
["Country_data_PHL"] = 3000,
["Country_data_PNG"] = 2300,
["Country_data_POL"] = 41000,
["Country_data_POR"] = 25000,
["Country_data_PRC"] = 2800,
["Country_data_PRK"] = 4200,
["Country_data_PRT"] = 2600,
["Country_data_PUR"] = 7600,
["Country_data_Pakistan"] = 23000,
["Country_data_Palau"] = 2400,
["Country_data_Palestine"] = 5600,
["Country_data_Panama"] = 13000,
["Country_data_Papua_New_Guinea"] = 6900,
["Country_data_Paraguay"] = 16000,
["Country_data_Pennsylvania"] = 3100,
["Country_data_People's_Republic_of_China"] = 2800,
["Country_data_Peru"] = 25000,
["Country_data_Philippines"] = 30000,
["Country_data_Poland"] = 125000,
["Country_data_Portugal"] = 50000,
["Country_data_Prussia"] = 2200,
["Country_data_Puerto_Rico"] = 15000,
["Country_data_QAT"] = 6300,
["Country_data_Qatar"] = 14000,
["Country_data_Quebec"] = 3900,
["Country_data_ROC"] = 2200,
["Country_data_ROM"] = 12000,
["Country_data_ROU"] = 21000,
["Country_data_RSA"] = 27000,
["Country_data_RUS"] = 55000,
["Country_data_Republic_of_China"] = 5800,
["Country_data_Republic_of_Ireland"] = 19000,
["Country_data_Republic_of_the_Congo"] = 6200,
["Country_data_Romania"] = 53000,
["Country_data_Russia"] = 92000,
["Country_data_Russian_Empire"] = 3800,
["Country_data_Rwanda"] = 5400,
["Country_data_SAM"] = 2600,
["Country_data_SCG"] = 2800,
["Country_data_SCO"] = 21000,
["Country_data_SEN"] = 5900,
["Country_data_SER"] = 3100,
["Country_data_SGP"] = 2000,
["Country_data_SIN"] = 6700,
["Country_data_SLO"] = 16000,
["Country_data_SLV"] = 2900,
["Country_data_SMR"] = 2700,
["Country_data_SPA"] = 3300,
["Country_data_SRB"] = 22000,
["Country_data_SRI"] = 4400,
["Country_data_SUI"] = 35000,
["Country_data_SVK"] = 24000,
["Country_data_SVN"] = 5400,
["Country_data_SWE"] = 48000,
["Country_data_SWI"] = 4400,
["Country_data_SYR"] = 2900,
["Country_data_Saint_Kitts_and_Nevis"] = 4100,
["Country_data_Saint_Lucia"] = 4600,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 4200,
["Country_data_Samoa"] = 6500,
["Country_data_San_Marino"] = 6900,
["Country_data_Saskatchewan"] = 3500,
["Country_data_Saudi_Arabia"] = 15000,
["Country_data_Scotland"] = 40000,
["Country_data_Senegal"] = 13000,
["Country_data_Serbia"] = 43000,
["Country_data_Serbia_and_Montenegro"] = 4300,
["Country_data_Seychelles"] = 4400,
["Country_data_Sierra_Leone"] = 5800,
["Country_data_Singapore"] = 22000,
["Country_data_Slovakia"] = 40000,
["Country_data_Slovenia"] = 32000,
["Country_data_Solomon_Islands"] = 4200,
["Country_data_Somalia"] = 4900,
["Country_data_South_Africa"] = 52000,
["Country_data_South_Carolina"] = 3100,
["Country_data_South_Korea"] = 50000,
["Country_data_South_Sudan"] = 2700,
["Country_data_Soviet_Union"] = 27000,
["Country_data_Spain"] = 103000,
["Country_data_Sri_Lanka"] = 16000,
["Country_data_Sudan"] = 6500,
["Country_data_Suriname"] = 5100,
["Country_data_Swaziland"] = 2000,
["Country_data_Sweden"] = 80000,
["Country_data_Switzerland"] = 63000,
["Country_data_Syria"] = 13000,
["Country_data_São_Tomé_and_Príncipe"] = 2700,
["Country_data_TAN"] = 2300,
["Country_data_TCH"] = 8900,
["Country_data_THA"] = 19000,
["Country_data_TJK"] = 2000,
["Country_data_TKM"] = 2500,
["Country_data_TPE"] = 13000,
["Country_data_TRI"] = 4500,
["Country_data_TUN"] = 8000,
["Country_data_TUR"] = 22000,
["Country_data_Taiwan"] = 9600,
["Country_data_Tajikistan"] = 7100,
["Country_data_Tanzania"] = 8800,
["Country_data_Texas"] = 5000,
["Country_data_Thailand"] = 35000,
["Country_data_Togo"] = 5400,
["Country_data_Tonga"] = 5500,
["Country_data_Trinidad_and_Tobago"] = 12000,
["Country_data_Tunisia"] = 16000,
["Country_data_Turkey"] = 55000,
["Country_data_Turkmenistan"] = 6400,
["Country_data_Turks_and_Caicos_Islands"] = 2600,
["Country_data_Tuvalu"] = 2500,
["Country_data_U.S._Virgin_Islands"] = 4400,
["Country_data_UAE"] = 7600,
["Country_data_UGA"] = 3200,
["Country_data_UK"] = 22000,
["Country_data_UKGBI"] = 2200,
["Country_data_UKR"] = 30000,
["Country_data_URS"] = 10000,
["Country_data_URU"] = 13000,
["Country_data_US"] = 4800,
["Country_data_USA"] = 120000,
["Country_data_USSR"] = 4200,
["Country_data_UZB"] = 9000,
["Country_data_Uganda"] = 9800,
["Country_data_Ukraine"] = 51000,
["Country_data_United_Arab_Emirates"] = 16000,
["Country_data_United_Kingdom"] = 75000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 3400,
["Country_data_United_Nations"] = 3300,
["Country_data_United_States"] = 249000,
["Country_data_United_States_of_America"] = 5100,
["Country_data_Uruguay"] = 24000,
["Country_data_Uzbekistan"] = 16000,
["Country_data_VEN"] = 15000,
["Country_data_VIE"] = 5500,
["Country_data_Vanuatu"] = 4400,
["Country_data_Venezuela"] = 27000,
["Country_data_Vietnam"] = 17000,
["Country_data_Virginia"] = 2600,
["Country_data_WAL"] = 14000,
["Country_data_Wales"] = 27000,
["Country_data_Washington"] = 3100,
["Country_data_Washington,_D.C."] = 2100,
["Country_data_Washington_(state)"] = 3400,
["Country_data_West_Germany"] = 17000,
["Country_data_West_Indies"] = 2200,
["Country_data_Wisconsin"] = 5500,
["Country_data_YUG"] = 8100,
["Country_data_Yemen"] = 6500,
["Country_data_Yugoslavia"] = 14000,
["Country_data_ZAF"] = 4000,
["Country_data_ZAM"] = 2700,
["Country_data_ZIM"] = 7100,
["Country_data_Zambia"] = 7800,
["Country_data_Zimbabwe"] = 14000,
["Country_flagbio"] = 21000,
["Country_name"] = 8700,
["Country_showdata"] = 5300,
["Country_topics"] = 20000,
["County"] = 7200,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4300,
["Course_details"] = 4200,
["Cquote"] = 36000,
["Cr"] = 3800,
["Create_taxonomy"] = 2400,
["Create_taxonomy/link"] = 74000,
["Cricinfo"] = 17000,
["Cricketarchive"] = 2700,
["Crime_opentask"] = 28000,
["Cross"] = 19000,
["Ct"] = 9900,
["Curlie"] = 7100,
["Current_events_footer"] = 6000,
["Current_events_header"] = 7100,
["Currentdate"] = 20000,
["Cvt"] = 58000,
["Cycling_Archives"] = 5700,
["Cycling_archives"] = 3900,
["Cycling_team_link"] = 9900,
["Module:CFB_schedule"] = 20000,
["Module:CallAssert"] = 188000,
["Module:CanElecResTopTest"] = 4200,
["Module:CanadaByProvinceCatNav"] = 9200,
["Module:Cat_main"] = 161000,
["Module:Catalog_lookup_link"] = 467000,
["Module:Category_described_in_year"] = 5400,
["Module:Category_described_in_year/conf"] = 5400,
["Module:Category_handler"] = 4070000,
["Module:Category_handler/blacklist"] = 4070000,
["Module:Category_handler/config"] = 4070000,
["Module:Category_handler/data"] = 4070000,
["Module:Category_handler/shared"] = 4070000,
["Module:Category_see_also"] = 37000,
["Module:Check_for_clobbered_parameters"] = 164000,
["Module:Check_for_deprecated_parameters"] = 384000,
["Module:Check_for_unknown_parameters"] = 10900000,
["Module:Check_isxn"] = 461000,
["Module:Check_winner_by_scores"] = 9800,
["Module:Citation/CS1"] = 4590000,
["Module:Citation/CS1/COinS"] = 4590000,
["Module:Citation/CS1/Configuration"] = 4590000,
["Module:Citation/CS1/Date_validation"] = 4590000,
["Module:Citation/CS1/Identifiers"] = 4590000,
["Module:Citation/CS1/Suggestions"] = 28000,
["Module:Citation/CS1/Utilities"] = 4590000,
["Module:Citation/CS1/Whitelist"] = 4590000,
["Module:Citation/CS1/styles.css"] = 4710000,
["Module:Cite_Q"] = 43000,
["Module:Cite_iucn"] = 30000,
["Module:Clade"] = 5200,
["Module:Clickable_button_2"] = 713000,
["Module:Collapsible_list"] = 45000,
["Module:College_color"] = 106000,
["Module:College_color/data"] = 106000,
["Module:Color_contrast"] = 414000,
["Module:Color_contrast/colors"] = 416000,
["Module:Commons_link"] = 90000,
["Module:Complex_date"] = 13000,
["Module:Convert"] = 1070000,
["Module:Convert/data"] = 1070000,
["Module:Convert/helper"] = 5700,
["Module:Convert/text"] = 1070000,
["Module:Convert/wikidata"] = 2500,
["Module:Convert/wikidata/data"] = 2500,
["Module:ConvertNumeric"] = 22000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1240000,
["Module:Copied"] = 14000,
["Module:CountryAdjectiveDemonym"] = 31000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 31000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 31000,
["Module:CountryAdjectiveDemonym/The"] = 31000,
["Module:CountryData"] = 17000,
["Module:Country_adjective"] = 3300,
["Module:Country_alias"] = 45000,
["Module:Country_alias/data"] = 45000,
}
ehfid94qiwqwduf6pi2z3pmks0bjnf5
Module:Transclusion count/data/D
828
1641
4930
4929
2020-10-11T05:50:38Z
Chrisb
1
1 revision imported
4929
Scribunto
text/plain
return {
["D&D"] = 3900,
["D&D_to-do"] = 5400,
["D-da"] = 3500,
["DANFS"] = 8800,
["DC-Comics-trademark-copyright"] = 2100,
["DDR"] = 2700,
["DEC"] = 7800,
["DECADE"] = 235000,
["DEN"] = 6000,
["DEU"] = 16000,
["DMC"] = 63000,
["DMCA"] = 1540000,
["DMCAT"] = 2100,
["DNB"] = 8500,
["DNB_portal"] = 3100,
["DNK"] = 7000,
["DNZB"] = 3300,
["DOI"] = 4900,
["DOWs"] = 2500,
["DPP"] = 78000,
["DPP/logo"] = 78000,
["DRV_links"] = 2900,
["DWT"] = 2000,
["DYKC"] = 6700,
["DYKF"] = 2100,
["DYK_blue"] = 3500,
["DYK_checklist"] = 4100,
["DYK_conditions"] = 42000,
["DYK_files"] = 2100,
["DYK_header"] = 8900,
["DYK_nompage_links"] = 53000,
["DYK_talk"] = 93000,
["DYK_talk/date"] = 93000,
["DYK_tools"] = 38000,
["DYKfile"] = 11000,
["DZA"] = 2400,
["Dab"] = 14000,
["Dablink"] = 3200,
["Dagger"] = 11000,
["Dashboard.wikiedu.org_assignment"] = 31000,
["Dashboard.wikiedu.org_course_header"] = 4000,
["Dashboard.wikiedu.org_course_header/edit-note"] = 4000,
["Dashboard.wikiedu.org_sandbox"] = 59000,
["Dashboard.wikiedu.org_student_editor"] = 45000,
["Dashboard.wikiedu.org_student_program_sandbox"] = 59000,
["Dashboard.wikiedu.org_talk_course_link"] = 47000,
["Dashboard.wikiedu.org_user_talk"] = 2200,
["Date"] = 46000,
["Date-mf"] = 30000,
["Date_table_sorting"] = 32000,
["Dated_maintenance_category"] = 1650000,
["Day+1"] = 6300,
["Day-1"] = 7700,
["Dbox"] = 3300,
["Dc"] = 2200,
["Dda"] = 3900,
["Dead_link"] = 257000,
["Death-date"] = 9100,
["Death-date_and_age"] = 8400,
["Death_date"] = 8800,
["Death_date_and_age"] = 300000,
["Death_year_and_age"] = 13000,
["Death_year_category_header"] = 2000,
["Decade_link"] = 29000,
["Decline"] = 2300,
["Declined"] = 3000,
["Decrease"] = 27000,
["Define"] = 4200,
["Deg2DMS"] = 3200,
["Deletion_review_log_header"] = 4600,
["Deletion_review_log_header/Core"] = 4600,
["Delink"] = 1480000,
["Delink_question_hyphen-minus"] = 255000,
["Delrevxfd"] = 3200,
["Democratic_Party_(US)/meta/color"] = 14000,
["Democratic_Party_(US)/meta/shading"] = 21000,
["Democratic_Party_(US)/meta/shortname"] = 12000,
["Democratic_Party_(United_States)/meta/color"] = 12000,
["Democratic_Party_(United_States)/meta/shortname"] = 11000,
["Demography"] = 2000,
["Deprecated_code"] = 3000,
["Description_missing"] = 9600,
["Designation/abbreviation"] = 7500,
["Designation/color"] = 74000,
["Designation/colour"] = 76000,
["Designation/colour2"] = 14000,
["Designation/divbox"] = 24000,
["Designation/text"] = 37000,
["Designation_list"] = 4600,
["Details"] = 6600,
["DetailsLink"] = 5100,
["Detect_singular"] = 533000,
["Deutsche_Bahn_station_codes"] = 2100,
["DfE_performance_tables"] = 4200,
["Diff"] = 27000,
["Diff2"] = 8500,
["Digits"] = 16000,
["Directories_box"] = 3500,
["Disamb"] = 2100,
["Disambig"] = 65000,
["Disambig-Class"] = 11000,
["DisambigProj"] = 12000,
["DisambigProject"] = 152000,
["Disambigproject"] = 5100,
["Disambiguation"] = 196000,
["Disambiguation/cat"] = 196000,
["Disambiguation_needed"] = 4600,
["Disambiguation_page_short_description"] = 317000,
["Discogs_artist"] = 9200,
["Discogs_master"] = 8400,
["Discogs_release"] = 2300,
["Discussion_bottom"] = 11000,
["Discussion_top"] = 11000,
["DisestcatCountry"] = 8400,
["DisestcatCountry/core"] = 8400,
["DisestcatCountryDecade"] = 2400,
["DisestcatUSstate"] = 4400,
["DisestcatUSstate/core"] = 4400,
["Disputed"] = 2100,
["Distinguish"] = 72000,
["Disused_Rail_Start"] = 3100,
["Disused_rail_start"] = 3700,
["Disused_style"] = 3800,
["Div_col"] = 315000,
["Div_col_end"] = 236000,
["Divbox"] = 221000,
["Divbox/styles.css"] = 246000,
["Dmbox"] = 409000,
["Dmbox/styles.css"] = 407000,
["Dmoz"] = 3000,
["Dn"] = 3700,
["Do_not_move_to_Commons"] = 13000,
["Doc"] = 3000,
["Documentation"] = 74000,
["Documentation_subpage"] = 81000,
["Dog_opentask"] = 3200,
["Doi"] = 21000,
["Doing"] = 3300,
["Don't_edit_this_line"] = 71000,
["Don't_edit_this_line_always_display"] = 328000,
["Don't_edit_this_line_extinct"] = 328000,
["Don't_edit_this_line_link_target"] = 328000,
["Don't_edit_this_line_link_text"] = 328000,
["Don't_edit_this_line_parent"] = 328000,
["Don't_edit_this_line_rank"] = 328000,
["Don't_edit_this_line_refs"] = 71000,
["Don't_edit_this_line_same_as"] = 328000,
["Done"] = 83000,
["Done-t"] = 2200,
["Doppelganger"] = 2700,
["Dot"] = 3000,
["Double-dagger"] = 9900,
["Dr"] = 3500,
["Dr-logno"] = 3500,
["Dr-make"] = 3500,
["Dr-yr"] = 3500,
["Draft_article"] = 2600,
["Draft_article_check"] = 2600,
["Draft_other"] = 115000,
["Draw"] = 2300,
["Draw_key"] = 15000,
["Draw_links"] = 7600,
["Drep"] = 3500,
["Drugbankcite"] = 4700,
["Drugbox"] = 7400,
["Drugs.com"] = 3300,
["Ds/editnotice"] = 2200,
["Ds/talk_notice"] = 4000,
["Ds/topics"] = 6200,
["Dsindex"] = 2200,
["Dts"] = 32000,
["Dubious"] = 7500,
["Duck"] = 2300,
["Dummytab"] = 3900,
["Duration"] = 35000,
["Dyktalk"] = 44000,
["Dynamic_IP"] = 5600,
["Dynamic_list"] = 7000,
["Module:DYK_checklist"] = 4100,
["Module:DYK_checklist/data"] = 4100,
["Module:DYK_nompage_links"] = 53000,
["Module:Data"] = 136000,
["Module:Date"] = 1110000,
["Module:DateI18n"] = 13000,
["Module:Date_table_sorting"] = 32000,
["Module:Delink"] = 1520000,
["Module:Demography"] = 2000,
["Module:Distinguish"] = 72000,
["Module:Documentation"] = 114000,
["Module:Documentation/config"] = 114000,
["Module:Duration"] = 226000,
}
ikapq1bef10jaq9yizdf4soo9wvnrkp
Module:Transclusion count/data/I
828
1324
2880
2879
2020-09-29T19:18:25Z
Chrisb
1
1 revision imported
2879
Scribunto
text/plain
return {
["IAAF_name"] = 2700,
["IAST"] = 5500,
["IBDB_name"] = 8400,
["ICD10"] = 4900,
["ICD9"] = 4700,
["IDN"] = 2900,
["IMDB_name"] = 2600,
["IMDB_title"] = 3300,
["IMDb_episode"] = 8000,
["IMDb_name"] = 137000,
["IMDb_title"] = 170000,
["IMO_Number"] = 3700,
["IMSLP"] = 7000,
["IMSLP2"] = 2200,
["IND"] = 6900,
["INR"] = 4900,
["INRConvert"] = 4600,
["INRConvert/CurrentRate"] = 4600,
["INRConvert/USD"] = 4600,
["INRConvert/out"] = 4600,
["INS"] = 2000,
["IOC_profile"] = 7800,
["IP"] = 2200,
["IPA"] = 91000,
["IPA-all"] = 2500,
["IPA-de"] = 5400,
["IPA-es"] = 7300,
["IPA-fr"] = 9400,
["IPA-it"] = 5300,
["IPA-nl"] = 2800,
["IPA-pl"] = 2600,
["IPA-pt"] = 3300,
["IPA-ru"] = 2300,
["IPA-sh"] = 2900,
["IPA-sl"] = 6600,
["IPA-th"] = 2400,
["IPA_audio_link"] = 8800,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 40000,
["IPAc-pl"] = 53000,
["IPSummary"] = 71000,
["IP_summary"] = 71000,
["IPsock"] = 31000,
["IPtalk"] = 26000,
["IPuser"] = 6300,
["IPvandal"] = 13000,
["IRC"] = 10000,
["IRL"] = 5000,
["IRN"] = 3200,
["ISBN"] = 444000,
["ISBNT"] = 33000,
["ISO_15924/script-example-character"] = 2400,
["ISO_15924/wp-name"] = 2500,
["ISO_15924/wp-name/label"] = 2400,
["ISO_15924_code"] = 3000,
["ISO_3166_code"] = 123000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 5300,
["ISP"] = 21000,
["ISP_test"] = 5600,
["ISR"] = 4000,
["ISSN"] = 10000,
["ISSN_link"] = 28000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2300,
["ITA"] = 15000,
["ITF"] = 4700,
["ITF_profile"] = 6700,
["ITIS"] = 4100,
["ITN_talk"] = 6800,
["ITN_talk/date"] = 6800,
["IUCN_banner"] = 13000,
["I_sup"] = 3900,
["Iaaf_name"] = 8300,
["Ice_hockey"] = 21000,
["Ice_hockey_stats"] = 13000,
["Icehockeystats"] = 10000,
["Icon"] = 484000,
["If"] = 118000,
["If_between"] = 3500,
["If_both"] = 44000,
["If_either"] = 4700,
["If_empty"] = 2250000,
["If_first_display_both"] = 56000,
["If_in_page"] = 6800,
["If_last_display_both"] = 25000,
["If_preview"] = 54000,
["If_then_show"] = 206000,
["Ifempty"] = 3400,
["Ifexist_not_redirect"] = 400000,
["Ifnotempty"] = 13000,
["Ifnumber"] = 20000,
["Ifsubst"] = 66000,
["Ih"] = 7000,
["Ill"] = 46000,
["Illm"] = 5700,
["Image_frame"] = 2400,
["Image_label"] = 4400,
["Image_label_begin"] = 3600,
["Image_label_end"] = 3300,
["Image_label_small"] = 2600,
["Image_needed"] = 3500,
["Image_other"] = 333000,
["Image_requested"] = 171000,
["Image_requested/Category_helper"] = 168000,
["Imbox"] = 899000,
["Imdb_episode"] = 2500,
["Imdb_name"] = 7300,
["Imdb_title"] = 13000,
["Importance"] = 5070000,
["Importance/colour"] = 5100000,
["Importance_mask"] = 7810000,
["Improve_categories"] = 3800,
["In_class"] = 3800,
["In_lang"] = 328000,
["In_string"] = 44000,
["In_title"] = 12000,
["Inactive_WikiProject_banner"] = 165000,
["Inactive_userpage_blanked"] = 4100,
["Include-USGov"] = 30000,
["Incomplete_list"] = 18000,
["Increase"] = 34000,
["Incumbent_pope"] = 4200,
["Independent/meta/color"] = 5700,
["Independent_(US)/meta/color"] = 2700,
["Independent_(politician)/meta/color"] = 12000,
["Independent_(politician)/meta/shortname"] = 10000,
["Independent_politician/meta/color"] = 18000,
["Independent_politician/meta/shortname"] = 15000,
["IndexFungorum"] = 2600,
["Indian_English"] = 3500,
["Indian_National_Congress/meta/color"] = 3600,
["Indian_National_Congress/meta/shortname"] = 2700,
["Indian_Railways_color"] = 2400,
["Indian_Railways_style"] = 2400,
["Indian_Rupee"] = 8400,
["Indian_railway_code"] = 2500,
["Inflation"] = 13000,
["Inflation-fn"] = 4600,
["Inflation-year"] = 3300,
["Inflation/IN/startyear"] = 4600,
["Inflation/UK"] = 3300,
["Inflation/UK/dataset"] = 3300,
["Inflation/UK/startyear"] = 3300,
["Inflation/US"] = 8000,
["Inflation/US/dataset"] = 8000,
["Inflation/US/startyear"] = 8100,
["Inflation/fn"] = 4800,
["Inflation/year"] = 17000,
["Info"] = 7600,
["Infobox"] = 3430000,
["Infobox3cols"] = 257000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 9100,
["Infobox_Aircraft_Type"] = 8200,
["Infobox_Athletics_Championships"] = 2300,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 6100,
["Infobox_CFL_biography/position"] = 6100,
["Infobox_Canada_electoral_district"] = 2300,
["Infobox_Chinese"] = 15000,
["Infobox_Chinese/Footer"] = 8900,
["Infobox_Chinese/Header"] = 8900,
["Infobox_Chinese/Korean"] = 14000,
["Infobox_Christian_leader"] = 15000,
["Infobox_Company"] = 2100,
["Infobox_Congressman"] = 3000,
["Infobox_Election"] = 3400,
["Infobox_Football_club_season"] = 2000,
["Infobox_French_commune"] = 37000,
["Infobox_GAA_player"] = 3400,
["Infobox_GB_station"] = 2200,
["Infobox_Gaelic_Athletic_Association_player"] = 4300,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 13000,
["Infobox_Greek_Dimos"] = 2700,
["Infobox_Greek_place"] = 2700,
["Infobox_Indian_politician"] = 2400,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 13000,
["Infobox_Korean_name/categories"] = 13000,
["Infobox_MLB_yearly"] = 3000,
["Infobox_NCAA_team_season"] = 25000,
["Infobox_NFL_biography"] = 24000,
["Infobox_NFL_player"] = 12000,
["Infobox_NFL_season"] = 3300,
["Infobox_NFL_team_season"] = 3700,
["Infobox_NRHP"] = 70000,
["Infobox_NRHP/conv"] = 17000,
["Infobox_NRHP/locmapin2region"] = 64000,
["Infobox_Newspaper"] = 3100,
["Infobox_Officeholder"] = 12000,
["Infobox_Olympic_event"] = 6600,
["Infobox_Olympic_event/games_text"] = 6600,
["Infobox_Organization"] = 3600,
["Infobox_Paralympic_event"] = 2100,
["Infobox_Paralympic_event/games_text"] = 2100,
["Infobox_Person"] = 3000,
["Infobox_Politician"] = 5300,
["Infobox_Romania_place"] = 3200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 3500,
["Infobox_SCOTUS_case"] = 3600,
["Infobox_SCOTUS_case/courts"] = 3600,
["Infobox_SSSI"] = 2000,
["Infobox_School"] = 4000,
["Infobox_Settlement"] = 6600,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Software"] = 2600,
["Infobox_State_Representative"] = 2900,
["Infobox_Swiss_municipality"] = 2800,
["Infobox_Swiss_town"] = 2800,
["Infobox_TV_channel"] = 2600,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_disused_station"] = 4900,
["Infobox_UK_place"] = 25000,
["Infobox_UK_place/NoDialCode"] = 7500,
["Infobox_UK_place/NoPostCode"] = 2900,
["Infobox_UK_place/dist"] = 2300,
["Infobox_UK_place/local"] = 25000,
["Infobox_UN_resolution"] = 2200,
["Infobox_University"] = 3600,
["Infobox_Wikipedia_user"] = 7400,
["Infobox_academic"] = 6900,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4400,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 157000,
["Infobox_album/color"] = 178000,
["Infobox_album/link"] = 157000,
["Infobox_anatomy"] = 4400,
["Infobox_ancient_site"] = 3900,
["Infobox_animanga/Footer"] = 5600,
["Infobox_animanga/Header"] = 5600,
["Infobox_animanga/Print"] = 4300,
["Infobox_animanga/Video"] = 4100,
["Infobox_architect"] = 3000,
["Infobox_artist"] = 24000,
["Infobox_artist_discography"] = 5200,
["Infobox_artwork"] = 8900,
["Infobox_athlete"] = 4400,
["Infobox_attraction/status"] = 2800,
["Infobox_automobile"] = 7400,
["Infobox_award"] = 7800,
["Infobox_badminton_player"] = 2700,
["Infobox_baseball_biography"] = 25000,
["Infobox_baseball_biography/style"] = 25000,
["Infobox_basketball_biography"] = 18000,
["Infobox_basketball_biography/style"] = 18000,
["Infobox_basketball_club"] = 2700,
["Infobox_bilateral_relations"] = 3700,
["Infobox_body_of_water"] = 16000,
["Infobox_book"] = 46000,
["Infobox_boxer"] = 5100,
["Infobox_bridge"] = 5400,
["Infobox_building"] = 22000,
["Infobox_character"] = 7300,
["Infobox_chess_biography"] = 2700,
["Infobox_chess_player"] = 2400,
["Infobox_church"] = 12000,
["Infobox_church/denomination"] = 12000,
["Infobox_church/font_color"] = 12000,
["Infobox_civilian_attack"] = 3900,
["Infobox_college_coach"] = 10000,
["Infobox_college_sports_team_season"] = 30000,
["Infobox_college_sports_team_season/link"] = 30000,
["Infobox_college_sports_team_season/name"] = 30000,
["Infobox_college_sports_team_season/succession"] = 30000,
["Infobox_college_sports_team_season/team"] = 30000,
["Infobox_comic_book_title"] = 2800,
["Infobox_comics_character"] = 3800,
["Infobox_comics_creator"] = 3300,
["Infobox_company"] = 76000,
["Infobox_concert"] = 3500,
["Infobox_constituency"] = 4100,
["Infobox_country"] = 5200,
["Infobox_country/formernext"] = 4900,
["Infobox_country/imagetable"] = 4200,
["Infobox_country/multirow"] = 6700,
["Infobox_country/status_text"] = 2300,
["Infobox_country_at_games"] = 13000,
["Infobox_country_at_games/core"] = 13000,
["Infobox_court_case"] = 4100,
["Infobox_court_case/images"] = 4100,
["Infobox_cricketer"] = 27000,
["Infobox_cricketer/career"] = 27000,
["Infobox_cricketer/national_side"] = 7100,
["Infobox_criminal"] = 4300,
["Infobox_cultivar"] = 2200,
["Infobox_curler"] = 2200,
["Infobox_cycling_race_report"] = 4000,
["Infobox_cyclist"] = 15000,
["Infobox_dam"] = 3900,
["Infobox_designation_list"] = 6400,
["Infobox_designation_list/entry"] = 6400,
["Infobox_dim"] = 5500,
["Infobox_dim/core"] = 5500,
["Infobox_diocese"] = 3700,
["Infobox_drug"] = 8600,
["Infobox_drug/chemical_formula"] = 8600,
["Infobox_drug/formatATC"] = 8500,
["Infobox_drug/formatCASnumber"] = 8600,
["Infobox_drug/formatChEBI"] = 8600,
["Infobox_drug/formatChEMBL"] = 8600,
["Infobox_drug/formatChemDBNIAID"] = 8600,
["Infobox_drug/formatChemSpider"] = 8600,
["Infobox_drug/formatCompTox"] = 8600,
["Infobox_drug/formatDrugBank"] = 8600,
["Infobox_drug/formatIUPHARBPS"] = 8600,
["Infobox_drug/formatJmol"] = 8600,
["Infobox_drug/formatKEGG"] = 8600,
["Infobox_drug/formatPDBligand"] = 8100,
["Infobox_drug/formatPubChemCID"] = 8600,
["Infobox_drug/formatPubChemSID"] = 8600,
["Infobox_drug/formatUNII"] = 8600,
["Infobox_drug/legal_status"] = 8700,
["Infobox_drug/licence"] = 8700,
["Infobox_drug/maintenance_categories"] = 8600,
["Infobox_drug/pregnancy_category"] = 8600,
["Infobox_drug/title"] = 8600,
["Infobox_election"] = 21000,
["Infobox_election/row"] = 21000,
["Infobox_election/shortname"] = 20000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 6500,
["Infobox_event"] = 3500,
["Infobox_figure_skater"] = 3900,
["Infobox_film"] = 142000,
["Infobox_film_awards"] = 2200,
["Infobox_film_awards/link"] = 2200,
["Infobox_film_awards/style"] = 2200,
["Infobox_food"] = 6200,
["Infobox_football_biography"] = 180000,
["Infobox_football_club"] = 24000,
["Infobox_football_club_season"] = 16000,
["Infobox_football_league"] = 2300,
["Infobox_football_league_season"] = 16000,
["Infobox_football_match"] = 4800,
["Infobox_football_tournament_season"] = 6000,
["Infobox_former_subdivision"] = 2700,
["Infobox_game_score"] = 3100,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 3700,
["Infobox_golfer"] = 3800,
["Infobox_golfer/highest_ranking"] = 3800,
["Infobox_government_agency"] = 8500,
["Infobox_gridiron_football_person"] = 4200,
["Infobox_gridiron_football_person/position"] = 6100,
["Infobox_gymnast"] = 2700,
["Infobox_handball_biography"] = 4300,
["Infobox_historic_site"] = 8900,
["Infobox_horseraces"] = 2500,
["Infobox_hospital"] = 5700,
["Infobox_hospital/care_system"] = 5700,
["Infobox_hospital/lists"] = 5700,
["Infobox_ice_hockey_player"] = 18000,
["Infobox_international_football_competition"] = 4800,
["Infobox_islands"] = 7800,
["Infobox_islands/area"] = 8300,
["Infobox_islands/density"] = 8300,
["Infobox_islands/length"] = 7800,
["Infobox_journal"] = 9000,
["Infobox_journal/Abbreviation_search"] = 8900,
["Infobox_journal/Bluebook_check"] = 8700,
["Infobox_journal/Former_check"] = 8700,
["Infobox_journal/ISO_4_check"] = 8700,
["Infobox_journal/ISSN-eISSN"] = 8700,
["Infobox_journal/Indexing_search"] = 8700,
["Infobox_journal/MathSciNet_check"] = 8700,
["Infobox_journal/NLM_check"] = 8700,
["Infobox_journal/frequency"] = 7900,
["Infobox_judge"] = 3800,
["Infobox_lake"] = 5900,
["Infobox_language"] = 9000,
["Infobox_language/family-color"] = 10000,
["Infobox_language/genetic"] = 6200,
["Infobox_language/linguistlist"] = 9000,
["Infobox_language/ref"] = 6800,
["Infobox_legislature"] = 2700,
["Infobox_lighthouse"] = 2600,
["Infobox_locomotive"] = 4200,
["Infobox_magazine"] = 6600,
["Infobox_manner_of_address"] = 3100,
["Infobox_mapframe"] = 86000,
["Infobox_martial_artist"] = 5000,
["Infobox_martial_artist/record"] = 5000,
["Infobox_medal_templates"] = 369000,
["Infobox_medical_condition"] = 9600,
["Infobox_medical_condition_(new)"] = 8100,
["Infobox_military_award"] = 2200,
["Infobox_military_conflict"] = 18000,
["Infobox_military_installation"] = 8500,
["Infobox_military_person"] = 38000,
["Infobox_military_structure"] = 2500,
["Infobox_military_unit"] = 23000,
["Infobox_model"] = 2300,
["Infobox_monarch"] = 2300,
["Infobox_mountain"] = 25000,
["Infobox_mountain_range"] = 2300,
["Infobox_museum"] = 8600,
["Infobox_musical_artist"] = 113000,
["Infobox_musical_artist/color"] = 113000,
["Infobox_musical_artist/hCard_class"] = 289000,
["Infobox_musical_artist/tracking"] = 101000,
["Infobox_name"] = 6600,
["Infobox_name_module"] = 7300,
["Infobox_newspaper"] = 8700,
["Infobox_nobility"] = 3600,
["Infobox_noble"] = 6300,
["Infobox_officeholder"] = 166000,
["Infobox_officeholder/office"] = 170000,
["Infobox_official_post"] = 6200,
["Infobox_organization"] = 29000,
["Infobox_pageant_titleholder"] = 2800,
["Infobox_park"] = 6000,
["Infobox_person"] = 385000,
["Infobox_person/Wikidata"] = 2600,
["Infobox_person/height"] = 222000,
["Infobox_person/length"] = 6500,
["Infobox_person/weight"] = 70000,
["Infobox_philosopher"] = 2900,
["Infobox_planet"] = 4500,
["Infobox_play"] = 3000,
["Infobox_political_party"] = 11000,
["Infobox_politician"] = 2400,
["Infobox_power_station"] = 2600,
["Infobox_prepared_food"] = 4100,
["Infobox_professional_wrestler"] = 3700,
["Infobox_professional_wrestling_event"] = 2200,
["Infobox_protected_area"] = 12000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2200,
["Infobox_racehorse"] = 5100,
["Infobox_racing_driver"] = 2900,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2500,
["Infobox_rail_line"] = 6300,
["Infobox_rail_line/tracking"] = 6300,
["Infobox_rail_service"] = 2600,
["Infobox_reality_competition_season"] = 2200,
["Infobox_record_label"] = 3800,
["Infobox_recurring_event"] = 5500,
["Infobox_religious_biography"] = 3800,
["Infobox_religious_building"] = 9900,
["Infobox_religious_building/color"] = 14000,
["Infobox_river"] = 27000,
["Infobox_river/calcunit"] = 27000,
["Infobox_river/discharge"] = 27000,
["Infobox_river/row-style"] = 27000,
["Infobox_river/source"] = 27000,
["Infobox_road"] = 23000,
["Infobox_road/banner"] = 13000,
["Infobox_road/browselinks/USA"] = 14000,
["Infobox_road/hide/cities"] = 2100,
["Infobox_road/maint/USA"] = 13000,
["Infobox_road/meta/colors"] = 2200,
["Infobox_road/meta/errors"] = 23000,
["Infobox_road/meta/mask/category"] = 23000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/meta/mask/subtype1"] = 13000,
["Infobox_road/meta/mask/subtype2"] = 12000,
["Infobox_road/name/USA"] = 13000,
["Infobox_road/name/USA/StateName"] = 6500,
["Infobox_road/shield/USA"] = 13000,
["Infobox_road/shieldmain/USA"] = 13000,
["Infobox_road_small"] = 2000,
["Infobox_rockunit"] = 6200,
["Infobox_royalty"] = 18000,
["Infobox_royalty/short_description"] = 18000,
["Infobox_rugby_biography"] = 13000,
["Infobox_rugby_biography/correct_date"] = 13000,
["Infobox_rugby_biography/depcheck"] = 6500,
["Infobox_rugby_league_biography"] = 8700,
["Infobox_rugby_league_biography/PLAYER"] = 8600,
["Infobox_rugby_team"] = 2600,
["Infobox_saint"] = 4300,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 3500,
["Infobox_scientist"] = 39000,
["Infobox_service_record"] = 2400,
["Infobox_settlement"] = 532000,
["Infobox_settlement/areadisp"] = 209000,
["Infobox_settlement/columns"] = 84000,
["Infobox_settlement/densdisp"] = 397000,
["Infobox_settlement/impus"] = 76000,
["Infobox_settlement/impus/mag"] = 2100,
["Infobox_settlement/lengthdisp"] = 154000,
["Infobox_settlement/link"] = 84000,
["Infobox_settlement/metric"] = 187000,
["Infobox_settlement/pref"] = 263000,
["Infobox_ship_begin"] = 36000,
["Infobox_ship_career"] = 33000,
["Infobox_ship_characteristics"] = 36000,
["Infobox_ship_class_overview"] = 3500,
["Infobox_ship_image"] = 36000,
["Infobox_shopping_mall"] = 3100,
["Infobox_skier"] = 2400,
["Infobox_soap_character"] = 3000,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 68000,
["Infobox_song/color"] = 68000,
["Infobox_song/link"] = 68000,
["Infobox_spaceflight"] = 3100,
["Infobox_speed_skater"] = 2100,
["Infobox_sports_competition_event"] = 12000,
["Infobox_sports_competition_event/medalrow"] = 7900,
["Infobox_sports_league"] = 3300,
["Infobox_sports_season"] = 4100,
["Infobox_sportsperson"] = 96000,
["Infobox_stadium"] = 5500,
["Infobox_state_representative"] = 3600,
["Infobox_station"] = 41000,
["Infobox_street"] = 2500,
["Infobox_swimmer"] = 8700,
["Infobox_television"] = 50000,
["Infobox_television_channel"] = 5900,
["Infobox_television_episode"] = 11000,
["Infobox_television_season"] = 7400,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 7800,
["Infobox_tennis_tournament_event"] = 15000,
["Infobox_tennis_tournament_year"] = 7800,
["Infobox_tennis_tournament_year/color"] = 23000,
["Infobox_tennis_tournament_year/footer"] = 23000,
["Infobox_train"] = 2000,
["Infobox_tropical_cyclone"] = 2000,
["Infobox_union"] = 2200,
["Infobox_university"] = 26000,
["Infobox_user"] = 2400,
["Infobox_venue"] = 16000,
["Infobox_video_game"] = 25000,
["Infobox_volleyball_biography"] = 4800,
["Infobox_weapon"] = 6700,
["Infobox_website"] = 7300,
["Infobox_writer"] = 33000,
["Information"] = 136000,
["Inline"] = 2600,
["Input_link"] = 33000,
["Inputbox"] = 10000,
["Instagram"] = 5800,
["Interlanguage_link"] = 78000,
["Interlanguage_link_multi"] = 22000,
["Internet_Archive_author"] = 18000,
["Internet_Archive_film"] = 2300,
["Intitle"] = 7400,
["Ipsock"] = 13000,
["Iptalk"] = 22000,
["IranCensus2006"] = 63000,
["IranNCSGN"] = 3700,
["Iran_Census_2006"] = 63000,
["Irish_place_name"] = 2200,
["IsValidPageName"] = 102000,
["Is_article"] = 3900,
["Is_country_in_Central_America"] = 11000,
["Is_country_in_the_Caribbean"] = 11000,
["Is_empty"] = 4200,
["Is_interwiki_link"] = 2800,
["Is_italic_taxon"] = 327000,
["Isbn"] = 3900,
["Isfdb_name"] = 3800,
["Isfdb_title"] = 4100,
["Isnumeric"] = 166000,
["Iso2continent"] = 15000,
["Iso2country"] = 20000,
["Iso2country/article"] = 19000,
["Iso2country/data"] = 20000,
["Issubst"] = 77000,
["Isu_name"] = 2200,
["Italic_title"] = 919000,
["Italic_title_prefixed"] = 8200,
["Italics_after"] = 8200,
["Italics_colon"] = 2200,
["Italictitle"] = 5400,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 106000,
["Ivory_messagebox"] = 106000,
["Module:I18n/complex_date"] = 13000,
["Module:IPA_symbol"] = 2800,
["Module:IPA_symbol/data"] = 2900,
["Module:IPAc-en"] = 40000,
["Module:IPAc-en/data"] = 40000,
["Module:IPAc-en/phonemes"] = 40000,
["Module:IPAc-en/pronunciation"] = 40000,
["Module:IPAddress"] = 23000,
["Module:ISO_3166"] = 584000,
["Module:ISO_3166/data/AT"] = 2400,
["Module:ISO_3166/data/BA"] = 3200,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GR"] = 2800,
["Module:ISO_3166/data/IN"] = 24000,
["Module:ISO_3166/data/National"] = 584000,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 23000,
["Module:ISO_3166/data/US"] = 80000,
["Module:ISO_639_name"] = 12000,
["Module:ISOdate"] = 13000,
["Module:Icon"] = 484000,
["Module:Icon/data"] = 484000,
["Module:If_empty"] = 2250000,
["Module:If_in_page"] = 6800,
["Module:If_preview"] = 54000,
["Module:In_lang"] = 328000,
["Module:Infobox"] = 3600000,
["Module:Infobox/dates"] = 58000,
["Module:Infobox3cols"] = 270000,
["Module:InfoboxImage"] = 3780000,
["Module:Infobox_body_of_water_tracking"] = 16000,
["Module:Infobox_cyclist_tracking"] = 15000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 210000,
["Module:Infobox_military_conflict"] = 18000,
["Module:Infobox_military_conflict/styles.css"] = 18000,
["Module:Infobox_multi-lingual_name"] = 15000,
["Module:Infobox_multi-lingual_name/data"] = 15000,
["Module:Infobox_power_station"] = 2600,
["Module:Infobox_road"] = 23000,
["Module:Infobox_road/color"] = 24000,
["Module:Infobox_road/length"] = 24000,
["Module:Infobox_road/locations"] = 23000,
["Module:Infobox_road/map"] = 24000,
["Module:Infobox_road/meta/mask/country"] = 15000,
["Module:Infobox_television_disambiguation_check"] = 56000,
["Module:Infobox_television_season_disambiguation_check"] = 7400,
["Module:Infobox_television_season_name"] = 7400,
["Module:Internet_Archive"] = 18000,
["Module:IrelandByCountyCatNav"] = 2500,
["Module:Is_infobox_in_lead"] = 213000,
["Module:Italic_title"] = 963000,
}
lzebx1nm7tthj4e5hfbs6nuh23tx90r
Module:Transclusion count/data/M
828
893
2018
2017
2020-09-29T19:15:40Z
Chrisb
1
1 revision imported
2017
Scribunto
text/plain
return {
["MAR"] = 2500,
["MAS"] = 2200,
["MEX"] = 5600,
["MILHIST"] = 11000,
["MINUTE"] = 2300,
["MKD"] = 2200,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 12000,
["MLB_standings"] = 3600,
["MLBplayer"] = 3800,
["MMA_record_start"] = 3000,
["MMArecordbox"] = 3000,
["MMSI_Number"] = 2600,
["MONTHNAME"] = 649000,
["MONTHNUMBER"] = 652000,
["MS"] = 5800,
["MV"] = 9200,
["MYS"] = 3300,
["Main"] = 285000,
["Main_article"] = 26000,
["Main_other"] = 7880000,
["Main_page_image"] = 14000,
["Maintenance_category"] = 33000,
["Map_requested"] = 9800,
["Map_requested/Category_helper"] = 8600,
["Maplink"] = 13000,
["Marriage"] = 44000,
["Math"] = 6900,
["MathGenealogy"] = 6300,
["MathWorld"] = 2400,
["Maths_rating"] = 19000,
["Max"] = 595000,
["Mbox"] = 1460000,
["Mdash"] = 7200,
["MeSH_name"] = 6000,
["Medal"] = 94000,
["MedalBottom"] = 18000,
["MedalBronze"] = 46000,
["MedalCompetition"] = 73000,
["MedalCountry"] = 66000,
["MedalGold"] = 45000,
["MedalOlympic"] = 3600,
["MedalOlympics"] = 5600,
["MedalSilver"] = 45000,
["MedalSport"] = 66000,
["MedalTableTop"] = 18000,
["MedalTop"] = 4600,
["MedalWorldChampionships"] = 2200,
["MedalistTable"] = 12000,
["Medals_table"] = 11000,
["Media"] = 2500,
["Medical_resources"] = 6700,
["Merge_partner"] = 3300,
["Merged-from"] = 12000,
["Merged-to"] = 13000,
["Merged_to"] = 2100,
["MeshName"] = 5900,
["Metacritic_film"] = 4300,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["MetroLyrics_song"] = 21000,
["Mhof"] = 6200,
["Mid-Class"] = 15000,
["Mid-importance"] = 19000,
["Middot"] = 69000,
["Military_navigation"] = 72000,
["Min"] = 21000,
["Minor_planet_list_link"] = 4000,
["Minor_planets_navigator"] = 3100,
["Missing_information"] = 2500,
["Mlby"] = 12000,
["Mobile_IP"] = 9600,
["MobyGames"] = 6800,
["Moby_game"] = 5600,
["Mod"] = 13000,
["Module_other"] = 3200,
["Mojo_title"] = 8100,
["Molecular_formula_index"] = 2200,
["Monday"] = 2500,
["Mono"] = 14000,
["Mono/styles.css"] = 14000,
["MonthCategoryNav"] = 19000,
["MonthlyLinks"] = 2000,
["Monthly_clean-up_category"] = 13000,
["Monthly_clean-up_category/core"] = 13000,
["Monthly_clean-up_category/monthname"] = 14000,
["Monthly_clean-up_category/monthno"] = 14000,
["Monthly_clean-up_category/name_part"] = 14000,
["Monthly_clean-up_category/outer_core"] = 13000,
["Monthly_clean-up_category/to_add"] = 2200,
["Monthly_clean_up_category"] = 8500,
["Monthyear"] = 101000,
["Monthyear-1"] = 99000,
["More_citations_needed"] = 334000,
["More_citations_needed_section"] = 14000,
["More_footnotes"] = 44000,
["More_footnotes_needed"] = 46000,
["More_references"] = 3200,
["Moresources"] = 6100,
["Motorcycling"] = 3300,
["Motorsport_season"] = 4100,
["Mp"] = 4600,
["Mpl"] = 2300,
["MultiReplace"] = 201000,
["Multiple_image"] = 33000,
["Multiple_image/styles.css"] = 33000,
["Multiple_issues"] = 115000,
["Music"] = 6600,
["MusicBrainz_meta"] = 3800,
["Mvar"] = 4500,
["Mw_lang"] = 61000,
["My"] = 2300,
["My_sandbox"] = 3700,
["Myprefs"] = 6600,
["Module:MLB_standings"] = 3600,
["Module:MLB_standings/data"] = 3600,
["Module:Main"] = 285000,
["Module:Main_page_image"] = 2600,
["Module:Mapframe"] = 222000,
["Module:Math"] = 1810000,
["Module:Medals_table"] = 11000,
["Module:Message_box"] = 7820000,
["Module:Message_box/configuration"] = 7820000,
["Module:Military_navigation"] = 72000,
["Module:Minor_planet_list_link"] = 4000,
["Module:MultiReplace"] = 455000,
["Module:Multiple_image"] = 33000,
["Module:Mw_lang"] = 61000,
}
tgdtyj6j9ilirgp3hpqiyl4m0do8lcl
Module:Transclusion count/data/N
828
896
2024
2023
2020-09-29T19:15:41Z
Chrisb
1
1 revision imported
2023
Scribunto
text/plain
return {
["N"] = 6300,
["N/A"] = 16000,
["N/a"] = 38000,
["NA-Class"] = 14000,
["NASTRO_comment"] = 27000,
["NBA_Draft_template_list"] = 3100,
["NBA_Year"] = 5000,
["NBA_color"] = 4200,
["NBA_color_cell"] = 4100,
["NBA_color_cell2"] = 3300,
["NBA_player_statistics_legend"] = 3000,
["NBA_player_statistics_start"] = 2800,
["NBbox"] = 3700,
["NBbox/1"] = 3700,
["NCAA_color_cell"] = 5700,
["NCAA_secondary_color_cell"] = 3100,
["NED"] = 8600,
["NFLAltPrimaryColor"] = 2000,
["NFLAltPrimaryStyle"] = 5400,
["NFLAltSecondaryColor"] = 2800,
["NFLPrimaryColor"] = 2300,
["NFLPrimaryStyle"] = 26000,
["NFLSecondaryColor"] = 18000,
["NFL_Roster_navbox_template_list"] = 2300,
["NFL_Year"] = 20000,
["NFL_predraft"] = 3400,
["NFL_predraft/check"] = 3400,
["NFL_predraft/ftin"] = 3400,
["NFT"] = 4800,
["NFT_player"] = 27000,
["NGA"] = 2700,
["NHLE"] = 15000,
["NHLS_url"] = 2200,
["NLD"] = 10000,
["NLM_content"] = 2800,
["NOINDEX"] = 368000,
["NOR"] = 8100,
["NRDB_species"] = 4600,
["NRHP-PA"] = 2600,
["NRHPGoogleMapFootnote"] = 2500,
["NRHP_Focus"] = 73000,
["NRHP_color"] = 3600,
["NRHP_date_for_lists"] = 3000,
["NRHP_date_for_lists/dates"] = 3000,
["NRHP_header"] = 3200,
["NRHP_navigation_box"] = 5000,
["NRHP_row"] = 3300,
["NRHP_style"] = 68000,
["NRHP_url"] = 27000,
["NRHP_url/core"] = 30000,
["NRISref"] = 71000,
["NSWcity"] = 2400,
["NSWcity/core"] = 2400,
["NUMBEROFSECTIONS"] = 3700,
["NYCS_br"] = 2600,
["NYCS_time_2"] = 3100,
["NZL"] = 6500,
["NZ_electorate_link"] = 2200,
["Namespace_detect"] = 310000,
["Namespace_detect_showall"] = 4200,
["Narrow_no-break_space"] = 3700,
["Nastaliq"] = 8500,
["Nat_fs_end"] = 2000,
["National_Heritage_List_for_England"] = 18000,
["National_Rail_style"] = 4600,
["National_Register_of_Historic_Places"] = 30000,
["National_Register_of_Historic_Places_in_Massachusetts"] = 4300,
["National_Register_of_Historic_Places_in_New_York"] = 5500,
["National_Register_of_Historic_Places_in_North_Carolina"] = 2900,
["National_Register_of_Historic_Places_in_Pennsylvania"] = 3200,
["National_Register_of_Historic_Places_in_Virginia"] = 3100,
["National_basketball_squad"] = 3200,
["National_field_hockey_squad"] = 2800,
["National_football_squad_end"] = 2600,
["National_football_squad_start/styles.css"] = 2200,
["National_squad"] = 27000,
["National_squad_no_numbers"] = 11000,
["Native_name"] = 10000,
["Navbar"] = 9160000,
["Navbar-collapsible"] = 10000,
["Navbar-header"] = 58000,
["Navbox"] = 2790000,
["Navbox_Canada"] = 11000,
["Navbox_Canada/styles.css"] = 11000,
["Navbox_GR_munic"] = 3400,
["Navbox_Musical_artist"] = 10000,
["Navbox_decade_list"] = 9800,
["Navbox_musical_artist"] = 205000,
["Navbox_musical_artist/color"] = 205000,
["Navbox_rugby_league_squad"] = 4900,
["Navbox_season_by_team"] = 2900,
["Navbox_with_collapsible_groups"] = 118000,
["Navbox_with_collapsible_sections"] = 2400,
["Navbox_with_columns"] = 23000,
["Navboxes"] = 44000,
["Navboxes_colour"] = 9300,
["Navseasoncats"] = 381000,
["Navseasoncats_with_centuries_below_decade"] = 32000,
["Navseasoncats_with_decades_below_year"] = 223000,
["Navsource"] = 2500,
["Navy"] = 16000,
["Navy/core"] = 16000,
["Nay"] = 8600,
["Nbay"] = 5000,
["Nbsp"] = 416000,
["Nbsp_to_space"] = 14000,
["Ndash"] = 14000,
["Nee"] = 2600,
["NeilBrownPlayers"] = 3100,
["New_York_Stock_Exchange"] = 2000,
["New_user_bar"] = 57000,
["Newbot"] = 3900,
["Next_period"] = 17000,
["Nihongo"] = 94000,
["Nihongo2"] = 12000,
["Nnbsp"] = 3600,
["No"] = 6000,
["No."] = 14000,
["No2"] = 7400,
["NoSpam"] = 4000,
["NoSpamEmail"] = 17000,
["No_footnotes"] = 54000,
["No_ping"] = 366000,
["No_plot"] = 3800,
["No_redirect"] = 453000,
["No_spam"] = 226000,
["No_wrap"] = 2100,
["Nobold"] = 149000,
["Nobold/styles.css"] = 149000,
["Nobr"] = 3100,
["Nobreak"] = 13000,
["Nochange"] = 2100,
["Nofootnotes"] = 2200,
["Noindex"] = 4600,
["Noitalic"] = 4400,
["Noitalic/styles.css"] = 4400,
["Nom"] = 28000,
["Nominated"] = 4700,
["Non-diffusing_subcategory"] = 10000,
["Non-free_2D_art"] = 5900,
["Non-free_album_cover"] = 186000,
["Non-free_audio_sample"] = 8900,
["Non-free_biog-pic"] = 17000,
["Non-free_book_cover"] = 46000,
["Non-free_comic"] = 11000,
["Non-free_fair_use"] = 17000,
["Non-free_fair_use_in"] = 14000,
["Non-free_film_screenshot"] = 5200,
["Non-free_game_cover"] = 4200,
["Non-free_game_screenshot"] = 3500,
["Non-free_historic_image"] = 14000,
["Non-free_image_data"] = 8400,
["Non-free_image_rationale"] = 9500,
["Non-free_in_US"] = 2200,
["Non-free_logo"] = 153000,
["Non-free_magazine_cover"] = 7100,
["Non-free_media"] = 662000,
["Non-free_media_data"] = 9600,
["Non-free_media_rationale"] = 11000,
["Non-free_movie_poster"] = 16000,
["Non-free_poster"] = 90000,
["Non-free_promotional"] = 9400,
["Non-free_school_logo"] = 2100,
["Non-free_seal"] = 3200,
["Non-free_symbol"] = 6300,
["Non-free_television_screenshot"] = 16000,
["Non-free_title-card"] = 4000,
["Non-free_use_rationale"] = 436000,
["Non-free_use_rationale_2"] = 164000,
["Non-free_use_rationale_album_cover"] = 124000,
["Non-free_use_rationale_book_cover"] = 16000,
["Non-free_use_rationale_logo"] = 96000,
["Non-free_use_rationale_poster"] = 43000,
["Non-free_use_rationale_video_cover"] = 5700,
["Non-free_use_rationale_video_game_cover"] = 7400,
["Non-free_video_cover"] = 15000,
["Non-free_video_game_cover"] = 17000,
["Non-free_video_game_cover/platform"] = 17000,
["Non-free_video_game_screenshot"] = 9100,
["Non-free_video_game_screenshot/platform"] = 8400,
["Non-free_with_permission"] = 2300,
["Noping"] = 299000,
["Noprint"] = 3700,
["Noredirect"] = 7500,
["Normalwraplink"] = 3100,
["NorthAmNative"] = 2600,
["North_America_topic"] = 3600,
["Northern_Ireland_tasks"] = 18000,
["Nospam"] = 10000,
["Not-PD-US-expired-min-year"] = 27000,
["Not_a_ballot"] = 7000,
["Not_a_forum"] = 6400,
["Not_a_typo"] = 6200,
["Not_around"] = 2400,
["Not_done"] = 16000,
["Notability"] = 63000,
["Notdone"] = 4800,
["Note"] = 30000,
["Note_label"] = 9000,
["Notelist"] = 99000,
["Notelist-lr"] = 2600,
["Notelist-ua"] = 4200,
["Notes"] = 5900,
["Notice"] = 105000,
["NovelsWikiProject"] = 20000,
["Nowiki_="] = 3800,
["Nowrap"] = 1130000,
["Nq"] = 2100,
["Nrut"] = 3200,
["Ns0"] = 259000,
["Ns_has_subpages"] = 1670000,
["Nts"] = 13000,
["Ntsh"] = 2800,
["Number_of_defined_parameters"] = 3900,
["Number_table_sorting"] = 24000,
["Number_table_sorting_hidden"] = 2800,
["Numismaticnotice"] = 2100,
["Nutshell"] = 3500,
["Nw="] = 3800,
["Module:NUMBEROFSECTIONS"] = 3700,
["Module:Namespace_detect"] = 11800000,
["Module:Namespace_detect/config"] = 13700000,
["Module:Namespace_detect/data"] = 13700000,
["Module:National_squad"] = 36000,
["Module:Navbar"] = 14900000,
["Module:Navbox"] = 4160000,
["Module:Navbox_Canada"] = 11000,
["Module:Navbox_with_collapsible_groups"] = 121000,
["Module:Navboxes"] = 44000,
["Module:Navseasoncats"] = 388000,
["Module:Navseasoncats/navyear"] = 17000,
["Module:Navseasoncats_with_centuries_below_decade"] = 32000,
["Module:Navseasoncats_with_year_navigation"] = 223000,
["Module:Nihongo"] = 95000,
["Module:No_globals"] = 15400000,
["Module:No_ping"] = 366000,
["Module:Noinclude"] = 77000,
["Module:Ns_has_subpages"] = 1670000,
["Module:Number_table_sorting"] = 26000,
}
m9ubqopp630gahpyrgxuw10djn97kbw
Module:Transclusion count/data/S
828
1486
3278
3277
2020-10-11T01:41:35Z
Chrisb
1
1 revision imported
3277
Scribunto
text/plain
return {
["S-aca"] = 5900,
["S-ach"] = 15000,
["S-aft"] = 202000,
["S-aft/filter"] = 202000,
["S-bef"] = 206000,
["S-bef/filter"] = 206000,
["S-break"] = 3500,
["S-civ"] = 2300,
["S-dip"] = 4800,
["S-end"] = 243000,
["S-gov"] = 6500,
["S-hon"] = 3400,
["S-hou"] = 9100,
["S-inc"] = 11000,
["S-legal"] = 8500,
["S-line"] = 20000,
["S-line/side_cell"] = 20000,
["S-mil"] = 10000,
["S-new"] = 12000,
["S-non"] = 7500,
["S-note"] = 2300,
["S-npo"] = 3100,
["S-off"] = 37000,
["S-par"] = 45000,
["S-par/en"] = 3100,
["S-par/gb"] = 3200,
["S-par/uk"] = 11000,
["S-par/us-hs"] = 11000,
["S-par/us-sen"] = 2000,
["S-ppo"] = 11000,
["S-rail"] = 25000,
["S-rail-start"] = 23000,
["S-rail/lines"] = 25000,
["S-reg"] = 17000,
["S-rel"] = 16000,
["S-roy"] = 2500,
["S-s"] = 3600,
["S-sports"] = 8700,
["S-start"] = 222000,
["S-title"] = 2100,
["S-ttl"] = 212000,
["S-vac"] = 4900,
["SCO"] = 4000,
["SDcat"] = 2310000,
["SECOND"] = 2300,
["SG"] = 2700,
["SGP"] = 2300,
["SIA"] = 2700,
["SLO"] = 3400,
["SMS"] = 7000,
["SPI_archive_notice"] = 55000,
["SPIarchive_notice"] = 55000,
["SPIcat"] = 3800,
["SPIclose"] = 3300,
["SPIpriorcases"] = 50000,
["SR/Olympics_profile"] = 4900,
["SRB"] = 3000,
["SS"] = 19000,
["SSPa"] = 2600,
["STN"] = 12000,
["SUBJECTSPACE_formatted"] = 35000,
["SUI"] = 7600,
["SVG"] = 7500,
["SVG-Logo"] = 18000,
["SVG-Res"] = 14000,
["SVG-logo"] = 4000,
["SVK"] = 4500,
["SVN"] = 4300,
["SWE"] = 12000,
["Sandbox_other"] = 108000,
["Saturday"] = 2500,
["Saved_book"] = 58000,
["Sc"] = 3000,
["Schlüsselconverter"] = 13000,
["School_block"] = 27000,
["School_disambiguation"] = 3100,
["Schoolblock"] = 20000,
["Schooldis"] = 2500,
["Schoolip"] = 14000,
["Scientist_icon"] = 15000,
["Scientist_icon2"] = 15000,
["Sclass-"] = 26000,
["Sclass/core"] = 28000,
["Sclass2-"] = 7800,
["Script/Hebrew"] = 7200,
["Script/Nastaliq"] = 11000,
["Script/styles_hebrew.css"] = 7200,
["Search_box"] = 34000,
["Search_link"] = 5700,
["Section_link"] = 38000,
["See"] = 9300,
["See_also"] = 152000,
["Seealso"] = 6400,
["Select_skin"] = 3400,
["Self"] = 70000,
["Self-published_inline"] = 3800,
["Self-published_source"] = 5800,
["Self/migration"] = 49000,
["Self2"] = 2900,
["Selfref"] = 2500,
["Sent_off"] = 9900,
["Sentoff"] = 2800,
["Separated_entries"] = 110000,
["Serial_killer_opentask"] = 2200,
["Series_overview"] = 5000,
["Serif"] = 2000,
["Set_category"] = 33000,
["Set_index_article"] = 4700,
["Sets_taxobox_colour"] = 182000,
["Sfn"] = 105000,
["SfnRef"] = 117000,
["Sfnp"] = 12000,
["Sfnref"] = 15000,
["Sfrac"] = 3300,
["SharedIP"] = 7500,
["SharedIPEDU"] = 27000,
["Shared_IP"] = 33000,
["Shared_IP_advice"] = 12000,
["Shared_IP_corp"] = 7000,
["Shared_IP_edu"] = 148000,
["Shared_IP_gov"] = 4000,
["Sharedip"] = 10000,
["Sharedipedu"] = 15000,
["Sherdog"] = 2400,
["Ship"] = 75000,
["Ship/maintenancecategory"] = 75000,
["Ship_index"] = 6500,
["Shipboxflag"] = 16000,
["Shipboxflag/core"] = 16000,
["Shipindex"] = 6200,
["Shipwrecks_navbox_footer"] = 4700,
["Short_description"] = 2600000,
["Short_pages_monitor"] = 11000,
["Short_pages_monitor/maximum_length"] = 11000,
["Shortcut"] = 20000,
["Shortcut/styles.css"] = 20000,
["Should_be_SVG"] = 12000,
["Show_button"] = 2030000,
["Sic"] = 23000,
["Sica"] = 2500,
["Side_box"] = 970000,
["Sidebar"] = 169000,
["Sidebar_games_events"] = 31000,
["Sidebar_with_collapsible_lists"] = 76000,
["Sigfig"] = 3200,
["Significant_figures"] = 3900,
["Significant_figures/rnd"] = 3500,
["Silver02"] = 13000,
["Silver2"] = 39000,
["Silver_medal"] = 4200,
["Single+double"] = 3800,
["Single-innings_cricket_match"] = 2400,
["Single_chart"] = 28000,
["Single_chart/chartnote"] = 28000,
["Single_namespace"] = 137000,
["Singlechart"] = 23000,
["Singles"] = 35000,
["Sister-inline"] = 142000,
["Sister_project"] = 962000,
["Sister_project_links"] = 8800,
["Sisterlinks"] = 3300,
["Skip_to_talk"] = 10000,
["Sky"] = 2400,
["Slink"] = 2900,
["Small"] = 928000,
["Small_Solar_System_bodies"] = 3500,
["Smallcaps"] = 15000,
["Smallcaps/styles.css"] = 17000,
["Smallcaps_all"] = 3600,
["Smalldiv"] = 12000,
["Smaller"] = 87000,
["Smallsup"] = 18000,
["Smiley"] = 34000,
["Snd"] = 18000,
["Snds"] = 5600,
["Soccer_icon"] = 118000,
["Soccer_icon2"] = 118000,
["Soccer_icon4"] = 4900,
["Soccerbase"] = 13000,
["Soccerbase_season"] = 5500,
["Soccerway"] = 57000,
["Sock"] = 42000,
["Sockcat"] = 2200,
["Sockmaster"] = 8500,
["Sockpuppet"] = 200000,
["Sockpuppet/categorise"] = 199000,
["SockpuppetCheckuser"] = 5500,
["Sockpuppet_category"] = 41000,
["Sockpuppet_category/confirmed"] = 19000,
["Sockpuppet_category/suspected"] = 23000,
["Sockpuppetcheckuser"] = 3600,
["Sockpuppeteer"] = 19000,
["Soft_redirect"] = 5700,
["Soft_redirect_protection"] = 7400,
["Softredirect"] = 3000,
["Solar_luminosity"] = 3500,
["Solar_mass"] = 4100,
["Solar_radius"] = 3300,
["Soldier_icon"] = 4000,
["Soldier_icon2"] = 4000,
["Song"] = 7700,
["Songs"] = 19000,
["Songs_category"] = 6900,
["Songs_category/core"] = 6900,
["Sort"] = 101000,
["Sortname"] = 42000,
["Source_check"] = 985000,
["Sourcecheck"] = 985000,
["South_America_topic"] = 2400,
["Sp"] = 203000,
["Space"] = 55000,
["Space+double"] = 3300,
["Spaced_en_dash"] = 45000,
["Spaced_en_dash_space"] = 5700,
["Spaced_ndash"] = 22000,
["Spaces"] = 2520000,
["Spain_metadata_Wikidata"] = 7100,
["Spamlink"] = 11000,
["Spanish_name"] = 22000,
["Spanish_name/text"] = 22000,
["Spanish_name_2"] = 4600,
["Species_Latin_name_abbreviation_disambiguation"] = 2100,
["Species_list"] = 10000,
["Speciesbox"] = 210000,
["Speciesbox/getGenus"] = 210000,
["Speciesbox/getSpecies"] = 210000,
["Speciesbox/hybrid_name"] = 38000,
["Speciesbox/name"] = 210000,
["Speciesbox/parameterCheck"] = 210000,
["Speciesbox/trim"] = 210000,
["Specieslist"] = 3600,
["Spilomelinae-stub"] = 2300,
["Split_article"] = 2900,
["Sport_icon"] = 14000,
["Sport_icon2"] = 14000,
["SportsYearCatUSstate"] = 5300,
["SportsYearCatUSstate/core"] = 5300,
["Sports_links"] = 6800,
["Sports_reference"] = 9400,
["Squad_maintenance"] = 2400,
["Square_bracket_close"] = 82000,
["Square_bracket_open"] = 85000,
["Stack"] = 22000,
["Stack/styles.css"] = 23000,
["StaleIP"] = 2700,
["Standings_Table_End"] = 40000,
["Standings_Table_Entry"] = 40000,
["Standings_Table_Entry/record"] = 40000,
["Standings_Table_Start"] = 40000,
["Standings_Table_Start/colheader"] = 40000,
["Standings_Table_Start/colspan"] = 40000,
["Starbox_astrometry"] = 4400,
["Starbox_begin"] = 4700,
["Starbox_catalog"] = 4500,
["Starbox_character"] = 4400,
["Starbox_detail"] = 4200,
["Starbox_end"] = 4600,
["Starbox_observe"] = 4500,
["Starbox_reference"] = 4500,
["Start-Class"] = 99000,
["Start-date"] = 4600,
["Start_box"] = 7600,
["Start_date"] = 358000,
["Start_date_and_age"] = 86000,
["Start_date_and_years_ago"] = 5600,
["Start_of_course_timeline"] = 4000,
["Start_of_course_week"] = 4100,
["Start_tab"] = 3900,
["Startflatlist"] = 93000,
["Static_IP"] = 11000,
["Station"] = 4900,
["Station_link"] = 5500,
["Stdinchicite"] = 10000,
["Steady"] = 11000,
["Stl"] = 3300,
["Stn"] = 4500,
["Stnlnk"] = 25000,
["Storm_colour"] = 4400,
["StoryTeleplay"] = 2300,
["Str_crop"] = 2300,
["Str_endswith"] = 147000,
["Str_find"] = 680000,
["Str_find0"] = 191000,
["Str_find_long"] = 5600,
["Str_index"] = 14000,
["Str_left"] = 1680000,
["Str_len"] = 771000,
["Str_letter"] = 170000,
["Str_letter/trim"] = 9500,
["Str_mid"] = 4000,
["Str_mid/core"] = 4500,
["Str_number"] = 9900,
["Str_number/trim"] = 25000,
["Str_rep"] = 560000,
["Str_right"] = 62000,
["Str_rightc"] = 377000,
["Str_rightmost"] = 79000,
["Str_sub"] = 17000,
["Str_sub_long"] = 418000,
["Str_sub_new"] = 28000,
["Str_sub_old"] = 445000,
["Str_trim"] = 6000,
["Str_≠_len"] = 23000,
["Str_≤_len"] = 8200,
["Str_≥_len"] = 43000,
["Strfind_short"] = 6400,
["Strikethrough"] = 8700,
["Strlen_quick"] = 4800,
["Strong"] = 19000,
["Structurae"] = 2000,
["Stub-Class"] = 75000,
["Stub_Category"] = 12000,
["Stub_category"] = 16000,
["Stub_documentation"] = 33000,
["Student_editor"] = 27000,
["Student_sandbox"] = 4500,
["Student_table_row"] = 3500,
["Students_table"] = 3500,
["Su"] = 11000,
["Su-census1989"] = 4100,
["Sub"] = 2800,
["Subinfobox_bodystyle"] = 29000,
["Subject_bar"] = 16000,
["Subject_bar/styles.css"] = 16000,
["Suboff"] = 5200,
["Subon"] = 5300,
["Subpage_other"] = 139000,
["Subscription"] = 4400,
["Subscription_required"] = 28000,
["Subsidebar_bodystyle"] = 9600,
["Subst_only"] = 5000,
["Substituted_comment"] = 19000,
["Substr_any"] = 5500,
["Succession_box"] = 116000,
["Succession_links"] = 118000,
["Summer_Olympics_by_year_category_navigation"] = 2400,
["Summer_Olympics_by_year_category_navigation/core"] = 2400,
["Sunday"] = 2500,
["Sup"] = 63000,
["Superimpose2/base"] = 2600,
["Superimpose5"] = 2400,
["Surname"] = 57000,
["Swiss_populations"] = 2400,
["Swiss_populations_NC"] = 3000,
["Swiss_populations_ref"] = 2400,
["Module:SDcat"] = 2310000,
["Module:Science_redirect"] = 218000,
["Module:Science_redirect/conf"] = 218000,
["Module:Section_link"] = 38000,
["Module:See_also_if_exists"] = 44000,
["Module:Separated_entries"] = 1860000,
["Module:Series_overview"] = 5000,
["Module:Settlement_short_description"] = 617000,
["Module:Shortcut"] = 20000,
["Module:Shortcut/config"] = 20000,
["Module:Side_box"] = 978000,
["Module:Sidebar"] = 235000,
["Module:Sidebar_games_events"] = 31000,
["Module:Singles"] = 35000,
["Module:Sort_title"] = 14000,
["Module:Sortkey"] = 159000,
["Module:Sports_career"] = 16000,
["Module:Sports_color"] = 56000,
["Module:Sports_color/baseball"] = 29000,
["Module:Sports_color/basketball"] = 20000,
["Module:Sports_rbr_table"] = 7700,
["Module:Sports_rbr_table/styles.css"] = 7700,
["Module:Sports_reference"] = 9400,
["Module:Sports_results"] = 9000,
["Module:Sports_table"] = 42000,
["Module:Sports_table/WDL"] = 39000,
["Module:Sports_table/WL"] = 2400,
["Module:Sports_table/argcheck"] = 42000,
["Module:Sports_table/sub"] = 42000,
["Module:Sports_table/totalscheck"] = 31000,
["Module:Stock_tickers/NYSE"] = 2200,
["Module:String"] = 8310000,
["Module:String2"] = 249000,
["Module:Su"] = 11000,
["Module:Subject_bar"] = 16000,
}
f03ivyeb8o388xo8sziz72t855rd9fm
Module:Transclusion count/data/T
828
1311
2854
2853
2020-09-29T19:18:20Z
Chrisb
1
1 revision imported
2853
Scribunto
text/plain
return {
["T"] = 270000,
["T1"] = 7900,
["T:TDYK"] = 2800,
["TAFI/Picture_box"] = 2700,
["TAFI/Picture_box/show_picture"] = 2600,
["TBA"] = 3100,
["TCH"] = 2200,
["TCMDb_name"] = 2100,
["TCMDb_title"] = 10000,
["TDMCA"] = 18000,
["TFAFULL"] = 6800,
["TFAIMAGE"] = 3100,
["TFAfooter"] = 7500,
["TFArecentlist"] = 3100,
["THA"] = 3800,
["TOC_bottom"] = 68000,
["TOC_left"] = 3100,
["TOC_left/styles.css"] = 3100,
["TOC_limit"] = 19000,
["TOC_limit/styles.css"] = 20000,
["TOC_right"] = 41000,
["TOC_right/styles.css"] = 41000,
["TOC_top"] = 68000,
["TOClimit"] = 3400,
["TOCright"] = 4900,
["TUR"] = 7500,
["TV.com_episode"] = 6300,
["TV.com_show"] = 6500,
["TVDebutsEndingsAntonym"] = 6200,
["TVQ"] = 2600,
["TWA/Logo/3"] = 54000,
["TWA/Navigation2"] = 5200,
["TWA_nav_inner_black"] = 27000,
["TWP"] = 4600,
["Tab"] = 3800,
["Tag"] = 4700,
["Talk"] = 4200,
["Talk_archive"] = 28000,
["Talk_archive_navigation"] = 16000,
["Talk_header"] = 530000,
["Talk_other"] = 155000,
["Talk_page"] = 4900,
["Talk_page_header"] = 2000,
["Talk_page_of_redirect"] = 12000,
["Talk_page_stalker"] = 10000,
["Talk_page_watcher"] = 2100,
["Talk_quote_block"] = 8400,
["Talk_quote_block/styles.css"] = 8400,
["Talk_quote_inline"] = 62000,
["Talk_quote_inline/styles.css"] = 62000,
["Talkarchive"] = 97000,
["Talkarchivenav"] = 26000,
["Talkback"] = 69000,
["Talkheader"] = 132000,
["Talkpage"] = 5700,
["Talkquote"] = 5900,
["Talkspace_detect"] = 366000,
["Tan"] = 3100,
["Tasks"] = 662000,
["Taxobox"] = 182000,
["Taxobox/Error_colour"] = 441000,
["Taxobox/core"] = 441000,
["Taxobox/species"] = 61000,
["Taxobox_colour"] = 512000,
["Taxobox_name"] = 122000,
["Taxon_info"] = 282000,
["Taxon_italics"] = 210000,
["Taxonbar"] = 434000,
["Taxonbar/candidate"] = 409000,
["Taxonomy"] = 395000,
["Taxonomy/Acanthomorpha"] = 11000,
["Taxonomy/Acanthopterygii"] = 11000,
["Taxonomy/Acari"] = 2300,
["Taxonomy/Actinopteri"] = 20000,
["Taxonomy/Actinopterygii"] = 20000,
["Taxonomy/Aculeata"] = 2100,
["Taxonomy/Adephaga"] = 7400,
["Taxonomy/Afrophidia"] = 2500,
["Taxonomy/Alethinophidia"] = 2900,
["Taxonomy/Amniota"] = 34000,
["Taxonomy/Amphibia"] = 7900,
["Taxonomy/Amphiesmenoptera"] = 40000,
["Taxonomy/Anartioptera"] = 3000,
["Taxonomy/Angiosperms"] = 89000,
["Taxonomy/Animalia"] = 222000,
["Taxonomy/Anthophila"] = 3100,
["Taxonomy/Antliophora"] = 9200,
["Taxonomy/Anura"] = 6800,
["Taxonomy/Apocrita"] = 7400,
["Taxonomy/Apoditrysia"] = 36000,
["Taxonomy/Apoidea"] = 3600,
["Taxonomy/Arachnida"] = 15000,
["Taxonomy/Arachnomorpha"] = 15000,
["Taxonomy/Araneae"] = 12000,
["Taxonomy/Araneoidea"] = 2400,
["Taxonomy/Araneomorphae"] = 11000,
["Taxonomy/Archaeplastida"] = 95000,
["Taxonomy/Archosauria"] = 5200,
["Taxonomy/Archosauria/skip"] = 4100,
["Taxonomy/Arctiinae"] = 5800,
["Taxonomy/Arctiini"] = 3600,
["Taxonomy/Arthropoda"] = 112000,
["Taxonomy/Artiodactyla"] = 2100,
["Taxonomy/Ascomycota"] = 2600,
["Taxonomy/Asilomorpha"] = 2600,
["Taxonomy/Asparagales"] = 12000,
["Taxonomy/Asteraceae"] = 4100,
["Taxonomy/Asterales"] = 4900,
["Taxonomy/Asterids"] = 24000,
["Taxonomy/Asteroideae"] = 3000,
["Taxonomy/Australaves"] = 10000,
["Taxonomy/Avemetatarsalia"] = 4100,
["Taxonomy/Aves"] = 17000,
["Taxonomy/Aves/skip"] = 17000,
["Taxonomy/Batrachia"] = 7600,
["Taxonomy/Batrachomorpha"] = 8500,
["Taxonomy/Bilateria"] = 218000,
["Taxonomy/Bivalvia"] = 2000,
["Taxonomy/Bombycoidea"] = 2200,
["Taxonomy/Boreoeutheria"] = 12000,
["Taxonomy/Brachycera"] = 7800,
["Taxonomy/Bulbophyllinae"] = 2000,
["Taxonomy/Bulbophyllum"] = 2000,
["Taxonomy/Caenogastropoda"] = 9800,
["Taxonomy/Caenophidia"] = 2500,
["Taxonomy/Calyptratae"] = 2600,
["Taxonomy/Campanulids"] = 6800,
["Taxonomy/Carabidae"] = 6800,
["Taxonomy/Caraboidea"] = 6800,
["Taxonomy/Caryophyllales"] = 3100,
["Taxonomy/Cephalopoda"] = 2400,
["Taxonomy/Cerambycidae"] = 2400,
["Taxonomy/Chelicerata"] = 15000,
["Taxonomy/Chordata"] = 82000,
["Taxonomy/Chrysomelidae"] = 2300,
["Taxonomy/Chrysomeloidea"] = 4800,
["Taxonomy/Cladotheria"] = 14000,
["Taxonomy/Cnidaria"] = 2600,
["Taxonomy/Coelolepida"] = 40000,
["Taxonomy/Coleoptera"] = 22000,
["Taxonomy/Colubroides"] = 2500,
["Taxonomy/Commelinids"] = 10000,
["Taxonomy/Condylognatha"] = 4800,
["Taxonomy/Conoidea"] = 6100,
["Taxonomy/Core_eudicots"] = 56000,
["Taxonomy/Crambidae"] = 2400,
["Taxonomy/Cucujiformia"] = 9800,
["Taxonomy/Curculionoidea"] = 2300,
["Taxonomy/Cyclorrhapha"] = 4000,
["Taxonomy/Cyperaceae"] = 3000,
["Taxonomy/Cyprinidae"] = 3700,
["Taxonomy/Cypriniformes"] = 4700,
["Taxonomy/Cypriniphysae"] = 4700,
["Taxonomy/Cyprinoidea"] = 3700,
["Taxonomy/Dendrobieae"] = 3600,
["Taxonomy/Deuterostomia"] = 82000,
["Taxonomy/Diaphoretickes"] = 97000,
["Taxonomy/Diapsida"] = 14000,
["Taxonomy/Dicondylia"] = 92000,
["Taxonomy/Dikarya"] = 3600,
["Taxonomy/Dinosauria"] = 3500,
["Taxonomy/Dinosauriformes"] = 3500,
["Taxonomy/Dinosauromorpha"] = 3500,
["Taxonomy/Diptera"] = 9000,
["Taxonomy/Ditrysia"] = 39000,
["Taxonomy/Dracohors"] = 3500,
["Taxonomy/Ecdysozoa"] = 112000,
["Taxonomy/Elpistostegalia"] = 43000,
["Taxonomy/Embryophytes"] = 93000,
["Taxonomy/Embryophytes/Plantae"] = 93000,
["Taxonomy/Endopterygota"] = 80000,
["Taxonomy/Entelegynae"] = 2800,
["Taxonomy/Eotetrapodiformes"] = 43000,
["Taxonomy/Epidendroideae"] = 5700,
["Taxonomy/Erebidae"] = 8800,
["Taxonomy/Eremoneura"] = 4000,
["Taxonomy/Ericales"] = 3100,
["Taxonomy/Euarchontoglires"] = 5400,
["Taxonomy/Eudicots"] = 58000,
["Taxonomy/Eufalconimorphae"] = 10000,
["Taxonomy/Eugnathostomata"] = 64000,
["Taxonomy/Eukaryota"] = 323000,
["Taxonomy/Eulepidoptera"] = 39000,
["Taxonomy/Eumetabola"] = 85000,
["Taxonomy/Eumetazoa"] = 221000,
["Taxonomy/Euphorbia"] = 2400,
["Taxonomy/Euphorbiaceae"] = 3900,
["Taxonomy/Euphorbieae"] = 2400,
["Taxonomy/Euphorbiinae"] = 2400,
["Taxonomy/Euphorbioideae"] = 2700,
["Taxonomy/Eureptilia"] = 14000,
["Taxonomy/Euteleostomi"] = 43000,
["Taxonomy/Eutheria"] = 13000,
["Taxonomy/Euthyneura"] = 2500,
["Taxonomy/Exafroplacentalia"] = 4500,
["Taxonomy/Fabaceae"] = 3900,
["Taxonomy/Fabales"] = 4300,
["Taxonomy/Fabids"] = 10000,
["Taxonomy/Ferungulata"] = 3900,
["Taxonomy/Filozoa"] = 222000,
["Taxonomy/Fungi"] = 3900,
["Taxonomy/Gastropoda"] = 16000,
["Taxonomy/Geadephaga"] = 6900,
["Taxonomy/Gekkota"] = 2300,
["Taxonomy/Gelechioidea"] = 3400,
["Taxonomy/Gentianales"] = 5800,
["Taxonomy/Geometridae"] = 4900,
["Taxonomy/Geometroidea"] = 5000,
["Taxonomy/Glires"] = 3900,
["Taxonomy/Glossata"] = 40000,
["Taxonomy/Gnathostomata"] = 64000,
["Taxonomy/Graminid_clade"] = 3500,
["Taxonomy/Hemiptera"] = 4800,
["Taxonomy/Heterobranchia"] = 2600,
["Taxonomy/Heteroneura"] = 39000,
["Taxonomy/Heteroptera"] = 3000,
["Taxonomy/Hexapoda"] = 93000,
["Taxonomy/Holomycota"] = 3900,
["Taxonomy/Holotheria"] = 14000,
["Taxonomy/Holozoa"] = 222000,
["Taxonomy/Hyloidea"] = 3300,
["Taxonomy/Hymenoptera"] = 7700,
["Taxonomy/Hymenopterida"] = 7700,
["Taxonomy/Inopinaves"] = 12000,
["Taxonomy/Insecta"] = 92000,
["Taxonomy/Lamiaceae"] = 2100,
["Taxonomy/Lamiales"] = 6200,
["Taxonomy/Lamiids"] = 13000,
["Taxonomy/Larentiinae"] = 2400,
["Taxonomy/Laurasiatheria"] = 6500,
["Taxonomy/Leotiomyceta"] = 2400,
["Taxonomy/Lepidoptera"] = 40000,
["Taxonomy/Lepidosauria"] = 10000,
["Taxonomy/Lepidosauromorpha"] = 11000,
["Taxonomy/Life"] = 327000,
["Taxonomy/Lissamphibia"] = 7900,
["Taxonomy/Lophotrochozoa"] = 22000,
["Taxonomy/Macroheterocera"] = 19000,
["Taxonomy/Magnoliids"] = 4700,
["Taxonomy/Malpighiales"] = 7000,
["Taxonomy/Malvids"] = 18000,
["Taxonomy/Mammalia"] = 14000,
["Taxonomy/Mammaliaformes"] = 14000,
["Taxonomy/Mammaliaformes/skip"] = 14000,
["Taxonomy/Metapterygota"] = 90000,
["Taxonomy/Mollusca"] = 21000,
["Taxonomy/Monocots"] = 25000,
["Taxonomy/Muroidea"] = 2300,
["Taxonomy/Muscomorpha"] = 4700,
["Taxonomy/Myoglossata"] = 40000,
["Taxonomy/Myomorpha"] = 2400,
["Taxonomy/Myrtaceae"] = 3800,
["Taxonomy/Myrtales"] = 5900,
["Taxonomy/Myrtoideae"] = 3800,
["Taxonomy/Neoaves"] = 16000,
["Taxonomy/Neobatrachia"] = 6100,
["Taxonomy/Neodiapsida"] = 14000,
["Taxonomy/Neogastropoda"] = 8500,
["Taxonomy/Neognathae"] = 17000,
["Taxonomy/Neolepidoptera"] = 39000,
["Taxonomy/Neoptera"] = 90000,
["Taxonomy/Neopterygii"] = 20000,
["Taxonomy/Nephrozoa"] = 218000,
["Taxonomy/Noctuidae"] = 2400,
["Taxonomy/Noctuoidea"] = 12000,
["Taxonomy/Obazoa"] = 226000,
["Taxonomy/Obtectomera"] = 28000,
["Taxonomy/Oestroidea"] = 2400,
["Taxonomy/Olfactores"] = 65000,
["Taxonomy/Ophidia"] = 3300,
["Taxonomy/Opisthokonta"] = 226000,
["Taxonomy/Opisthothelae"] = 12000,
["Taxonomy/Orchidaceae"] = 8400,
["Taxonomy/Orchidoideae"] = 2600,
["Taxonomy/Ornithodira"] = 4100,
["Taxonomy/Orthoptera"] = 2700,
["Taxonomy/Orthopterida"] = 3000,
["Taxonomy/Ostariophysi"] = 7400,
["Taxonomy/Osteichthyes"] = 20000,
["Taxonomy/Otophysi"] = 7300,
["Taxonomy/Ovalentaria"] = 4400,
["Taxonomy/Palaeoptera"] = 2100,
["Taxonomy/Panarthropoda"] = 112000,
["Taxonomy/Pancrustacea"] = 95000,
["Taxonomy/Panorpida"] = 49000,
["Taxonomy/Panorthoptera"] = 2700,
["Taxonomy/Papilionoidea"] = 4400,
["Taxonomy/ParaHoxozoa"] = 221000,
["Taxonomy/Paraneoptera"] = 5300,
["Taxonomy/Passeri"] = 7300,
["Taxonomy/Passerida"] = 4900,
["Taxonomy/Passeriformes"] = 9300,
["Taxonomy/Passeroidea"] = 2400,
["Taxonomy/Percomorpha"] = 8400,
["Taxonomy/Pezizomycotina"] = 2500,
["Taxonomy/Phytophaga"] = 7100,
["Taxonomy/Piperaceae"] = 2900,
["Taxonomy/Piperales"] = 3000,
["Taxonomy/Piperoideae"] = 2900,
["Taxonomy/Placentalia"] = 13000,
["Taxonomy/Plantae"] = 93000,
["Taxonomy/Poaceae"] = 3500,
["Taxonomy/Poales"] = 8500,
["Taxonomy/Polyneoptera"] = 3800,
["Taxonomy/Polyorthoptera"] = 3000,
["Taxonomy/Polyphaga"] = 15000,
["Taxonomy/Polysporangiophytes"] = 92000,
["Taxonomy/Polysporangiophytes/Plantae"] = 92000,
["Taxonomy/Protostomia"] = 136000,
["Taxonomy/Psittacopasserae"] = 10000,
["Taxonomy/Pterygota"] = 92000,
["Taxonomy/Pyraloidea"] = 4200,
["Taxonomy/Ranoidea"] = 2100,
["Taxonomy/Reptilia"] = 14000,
["Taxonomy/Reptiliomorpha"] = 34000,
["Taxonomy/Rhipidistia"] = 43000,
["Taxonomy/Rodentia"] = 3800,
["Taxonomy/Romeriida"] = 14000,
["Taxonomy/Rosales"] = 2200,
["Taxonomy/Rosids"] = 28000,
["Taxonomy/Rubiaceae"] = 4200,
["Taxonomy/Rubioideae"] = 3000,
["Taxonomy/Saccharomyceta"] = 2500,
["Taxonomy/Salientia"] = 6800,
["Taxonomy/Salticidae"] = 2200,
["Taxonomy/Salticinae"] = 2000,
["Taxonomy/Sapindales"] = 2100,
["Taxonomy/Sarcopterygii"] = 43000,
["Taxonomy/Sauria"] = 13000,
["Taxonomy/Saurischia"] = 2400,
["Taxonomy/Sauropsida"] = 18000,
["Taxonomy/Schizophora"] = 4000,
["Taxonomy/Scrotifera"] = 5800,
["Taxonomy/Serpentes"] = 3300,
["Taxonomy/Siluriformes"] = 2300,
["Taxonomy/Spermatophyta"] = 90000,
["Taxonomy/Spermatophytes/Plantae"] = 90000,
["Taxonomy/Spiralia"] = 23000,
["Taxonomy/Squamata"] = 10000,
["Taxonomy/Stegocephalia"] = 43000,
["Taxonomy/Superasterids"] = 27000,
["Taxonomy/Superrosids"] = 29000,
["Taxonomy/Synapsida"] = 15000,
["Taxonomy/Tachinidae"] = 2200,
["Taxonomy/Tactopoda"] = 112000,
["Taxonomy/Teleostei"] = 20000,
["Taxonomy/Teleostomi"] = 63000,
["Taxonomy/Telluraves"] = 12000,
["Taxonomy/Tetrapoda"] = 42000,
["Taxonomy/Tetrapodomorpha"] = 43000,
["Taxonomy/Theria"] = 14000,
["Taxonomy/Tortricidae"] = 2400,
["Taxonomy/Tortricoidea"] = 2400,
["Taxonomy/Toxicofera"] = 4800,
["Taxonomy/Tracheophyta"] = 92000,
["Taxonomy/Tracheophytes/Plantae"] = 92000,
["Taxonomy/Trechnotheria"] = 14000,
["Taxonomy/Tribosphenida"] = 14000,
["Taxonomy/Trochida"] = 2300,
["Taxonomy/Trochoidea"] = 2300,
["Taxonomy/Ungulata"] = 2300,
["Taxonomy/Unicalcarida"] = 7500,
["Taxonomy/Unikonta"] = 226000,
["Taxonomy/Vertebrata"] = 65000,
["Taxonomy/Vetigastropoda"] = 3600,
["Taxonomy/Virus"] = 2600,
["Taxonomy/Zatheria"] = 14000,
["Taxonomy/Zoosporia"] = 3900,
["Taxonomy/nobreak"] = 395000,
["Taxonomy_key"] = 71000,
["Taxonomy_preload"] = 74000,
["Tb"] = 14000,
["Tcmdb_title"] = 8700,
["Team_appearances_list"] = 12000,
["Team_roster_navbox"] = 30000,
["Technical"] = 3700,
["TelevisionWikiProject"] = 5300,
["Television_episode_redirect_handler"] = 2400,
["Television_episode_short_description"] = 11000,
["Template"] = 3200,
["Template-Class"] = 13000,
["TemplateData_header"] = 12000,
["Template_category"] = 26000,
["Template_for_discussion/dated"] = 44000,
["Template_link_with_link_off"] = 9300,
["Template_link_with_linked_braces"] = 9700,
["Template_link_with_parameters"] = 71000,
["Template_link_with_subst"] = 24000,
["Template_link_with_subst_and_parameters"] = 6900,
["Template_other"] = 4510000,
["Template_parameter_usage"] = 12000,
["Template_parameter_value"] = 4400,
["Template_reference_list"] = 6000,
["Template_shortcut"] = 2600,
["TennisEventInfo"] = 5700,
["Tennis_events"] = 10000,
["Tennis_icon"] = 2500,
["Tennis_icon2"] = 2500,
["Testcases_notice"] = 3100,
["Tfd_links"] = 4700,
["Tfm/dated"] = 33000,
["Thank_you"] = 3900,
["The_Africa_Destubathon_banner"] = 2000,
["The_edit-summary_field"] = 9900,
["Their"] = 9500,
["They_have"] = 13000,
["Thin_space"] = 3300,
["Thinsp"] = 2200,
["Third-party"] = 7900,
["This_is_a_new_user"] = 4500,
["Thoroughbred_racing"] = 5000,
["Thursday"] = 2500,
["Tick"] = 69000,
["Time/JST_offset"] = 95000,
["Time_ago"] = 143000,
["Title_case"] = 5000,
["Title_decade"] = 20000,
["Title_disambig_text"] = 207000,
["Title_without_disambig"] = 3300,
["Title_year"] = 162000,
["Tl"] = 4940000,
["Tl2"] = 2000,
["Tlc"] = 765000,
["Tld"] = 123000,
["Tlf"] = 9300,
["Tlg"] = 48000,
["Tlp"] = 71000,
["Tls"] = 29000,
["Tlsp"] = 6900,
["Tlu"] = 11000,
["Tlx"] = 2640000,
["Tlxs"] = 3700,
["Tmbox"] = 2740000,
["Tn"] = 12000,
["Tnull"] = 7000,
["To_do"] = 8000,
["Tocright"] = 6500,
["Todo"] = 3500,
["Tomorrow"] = 3700,
["Tone"] = 9000,
["Tone-cmn"] = 2300,
["Toolbar"] = 298000,
["Tooltip"] = 34000,
["Top-Class"] = 15000,
["Top-importance"] = 15000,
["Top_icon"] = 61000,
["Totd"] = 3800,
["Totd_nav"] = 4900,
["Tp"] = 2300,
["Tps"] = 9500,
["Tpw"] = 2000,
["Tq"] = 60000,
["Track_gauge"] = 21000,
["Track_listing"] = 92000,
["Tracking_category"] = 2500,
["Tracklist"] = 37000,
["Trademark"] = 8600,
["Trademarked"] = 5700,
["TrainsWikiProject"] = 40000,
["Trans"] = 3500,
["Transclude"] = 26000,
["Transclude_lead_excerpt"] = 2700,
["Transl"] = 37000,
["Translated"] = 16000,
["Translated_page"] = 66000,
["Translation"] = 7200,
["Translation/Base"] = 2400,
["Translation/Information"] = 2100,
["Translation/Summary"] = 2100,
["Tree_chart"] = 7500,
["Tree_chart/end"] = 7500,
["Tree_chart/start"] = 7500,
["Trim"] = 1520000,
["Trim_brackets"] = 4100,
["Trim_quotes"] = 23000,
["Trunc"] = 6600,
["Tuesday"] = 2500,
["Tv.com_episode"] = 5800,
["Tv.com_show"] = 6300,
["Twitter"] = 17000,
["TwoLegResult"] = 4200,
["TwoLegStart"] = 3100,
["TwoLeg_start"] = 4200,
["Two_digit_year"] = 4800,
["Module:TableTools"] = 4490000,
["Module:Table_empty_cell"] = 21000,
["Module:TaxonItalics"] = 513000,
["Module:TaxonList"] = 11000,
["Module:Taxonbar"] = 434000,
["Module:Taxonbar/candidate"] = 409000,
["Module:Taxonbar/conf"] = 434000,
["Module:Taxonbar/exists"] = 409000,
["Module:TeamBracket"] = 9200,
["Module:TeamBracket-Tennis"] = 19000,
["Module:Team_appearances_list"] = 12000,
["Module:Team_appearances_list/data"] = 12000,
["Module:Team_bracket_tracking"] = 14000,
["Module:Team_roster_navbox"] = 31000,
["Module:Television_episode_redirect_handler"] = 2400,
["Module:Television_episode_short_description"] = 13000,
["Module:Television_infoboxes_disambiguation_check"] = 56000,
["Module:TemplatePar"] = 48000,
["Module:Template_parameter_value"] = 4400,
["Module:Template_wrapper"] = 158000,
["Module:Tennis_events_nav"] = 15000,
["Module:Tfd_links"] = 4700,
["Module:Time_ago"] = 143000,
["Module:Tlg"] = 48000,
["Module:Toolbar"] = 1120000,
["Module:Track_gauge"] = 21000,
["Module:Track_gauge/data"] = 21000,
["Module:Track_listing"] = 92000,
["Module:Transclusion_count"] = 3000,
["Module:Tree_chart"] = 7500,
["Module:Tree_chart/data"] = 7500,
["Module:Trim_quotes"] = 34000,
["Module:Type_in_location"] = 89000,
}
5vae0hwr79tvxv3sx89a0l81favuudm
Module:Transclusion count/data/Y
828
911
2054
2053
2020-09-29T19:15:46Z
Chrisb
1
1 revision imported
2053
Scribunto
text/plain
return {
["Y"] = 9500,
["YEAR"] = 4400,
["YYYY_beginnings_or_endings_category_header"] = 3900,
["YYYY_beginnings_or_endings_category_header/core"] = 3900,
["YYYY_in_nationality_sport_category_header"] = 9400,
["YYYY_in_nationality_sport_category_header/inner_core"] = 9400,
["YYYY_in_nationality_sport_category_header/outer_core"] = 9400,
["Year"] = 4000,
["YearInCountryPortalBox"] = 85000,
["YearInCountryPortalBox/make"] = 85000,
["YearInCountryPortalBox/parse"] = 85000,
["YearParamUsageCheck"] = 16000,
["YearParamUsageCheck/core"] = 16000,
["Year_article"] = 6500,
["Year_box"] = 2100,
["Year_box/core"] = 2100,
["Year_box/outer_core"] = 2100,
["Year_by_category"] = 16000,
["Year_by_category/core"] = 16000,
["Year_category"] = 2900,
["Year_category_name"] = 2400,
["Year_category_name/AD_year"] = 2400,
["Year_in_Europe"] = 5200,
["Year_in_Europe/expr"] = 5200,
["Year_in_US_state_category"] = 9300,
["Year_in_US_state_category/core"] = 9300,
["Year_in_continent/expr"] = 6900,
["Year_in_continent/link"] = 6900,
["Year_in_continent_category"] = 3800,
["Year_in_continent_category/core"] = 3800,
["Year_in_country_category"] = 37000,
["Year_in_country_category/inner_core"] = 37000,
["Year_in_country_category/outer_core"] = 37000,
["Year_in_football"] = 2100,
["Year_in_nationality_television_category"] = 2900,
["Year_in_nationality_television_category/core"] = 2900,
["Year_in_region"] = 10000,
["Year_in_region/link"] = 10000,
["Year_in_various_calendars"] = 2800,
["Year_nationality_television_series_debuts_or_endings_category"] = 4400,
["Year_nationality_television_series_debuts_or_endings_category/core"] = 4400,
["Year_nav"] = 2800,
["Year_nav_topic5"] = 6900,
["YearsProject"] = 3700,
["Years_or_months_ago"] = 47000,
["Yel"] = 12000,
["Yes"] = 7600,
["Yes2"] = 7600,
["YesNo-Yes"] = 57000,
["Yesno"] = 11900000,
["Yesno-no"] = 1340000,
["Yesno-yes"] = 514000,
["Yo"] = 9900,
["You've_got_mail"] = 9300,
["YouTube"] = 46000,
["Youtube"] = 7500,
["Yy"] = 10000,
["Yycat"] = 2700,
["Yyend"] = 10000,
["Yytop"] = 10000,
["Module:Year_in_various_calendars"] = 2800,
["Module:Yesno"] = 22600000,
}
7qffxbpm5d5rr8igikxpbdarm9es08t
Module:Trim quotes
828
1628
4904
4903
2020-10-11T05:39:05Z
Chrisb
1
1 revision imported
4903
Scribunto
text/plain
local p = {}
function p._trim(s)
if s then
if s:match([[^(['"]).*%1$]]) then return p._trim(string.sub(s,2,-2)) else return s end
else
return ""
end
end
function p.trim(frame)
local s = (frame.args['s'] or frame.args[1]) or (frame:getParent().args['s'] or frame:getParent().args[1])
return p._trim(s)
end
return p
s3q0pg1nqmwo84ax2ivegivqa64dwfk
Module:Unsubst
828
1321
2874
2873
2020-09-29T19:18:22Z
Chrisb
1
1 revision imported
2873
Scribunto
text/plain
local checkType = require('libraryUtil').checkType
local p = {}
local BODY_PARAM = '$B'
local specialParams = {
['$params'] = 'parameter list',
['$aliases'] = 'parameter aliases',
['$flags'] = 'flags',
['$B'] = 'template content'
}
function p.main(frame, body)
-- If we are substing, this function returns a template invocation, and if
-- not, it returns the template body. The template body can be specified in
-- the body parameter, or in the template parameter defined in the
-- BODY_PARAM variable. This function can be called from Lua or from
-- #invoke.
-- Return the template body if we aren't substing.
if not mw.isSubsting() then
if body ~= nil then
return body
elseif frame.args[BODY_PARAM] ~= nil then
return frame.args[BODY_PARAM]
else
error(string.format(
"no template content specified (use parameter '%s' from #invoke)",
BODY_PARAM
), 2)
end
end
-- Sanity check for the frame object.
if type(frame) ~= 'table'
or type(frame.getParent) ~= 'function'
or not frame:getParent()
then
error(
"argument #1 to 'main' must be a frame object with a parent " ..
"frame available",
2
)
end
-- Find the invocation name.
local mTemplateInvocation = require('Module:Template invocation')
local name = mTemplateInvocation.name(frame:getParent():getTitle())
-- Combine passed args with passed defaults
local args = {}
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
else
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
end
-- Trim parameters, if not specified otherwise
if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then
for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end
end
-- Pull information from parameter aliases
local aliases = {}
if frame.args['$aliases'] then
local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' )
for k, v in ipairs( list ) do
local tmp = mw.text.split( v, '%s*>%s*' )
aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2])
end
end
for k, v in pairs( aliases ) do
if args[k] and ( not args[v] or args[v] == '' ) then
args[v] = args[k]
end
args[k] = nil
end
-- Remove empty parameters, if specified
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then
local tmp = 0
for k, v in ipairs( args ) do
if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then
tmp = k
else
break
end
end
for k, v in pairs( args ) do
if v == '' then
if not (type(k) == 'number' and k < tmp) then args[k] = nil end
end
end
end
-- Order parameters
if frame.args['$params'] then
local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {}
for k, v in ipairs(params) do
v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v
if args[v] then tmp[v], args[v] = args[v], nil end
end
for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end
args = tmp
end
return mTemplateInvocation.invocation(name, args)
end
p[''] = p.main -- For backwards compatibility
return p
dnfbu3ol9y1rn4f58ap519pwafevpgq
Module:Yesno
828
872
1976
1975
2020-09-29T19:15:36Z
Chrisb
1
1 revision imported
1975
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
swdskn7svew8i9wuydn9uj5l3r2ghcs
Module:Yesno/doc
828
912
2056
2055
2020-09-29T19:15:47Z
Chrisb
1
1 revision imported
2055
wikitext
text/x-wiki
{{High-use|all-pages = yes}}
{{used in system}}
{{Module rating|protected}}
This module provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the <code>true</code> and <code>false</code> boolean values, wikicode templates can only express boolean values through strings such as "yes", "no", etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns <code>nil</code> values as <code>nil</code>, to allow for distinctions between <code>nil</code> and <code>false</code>. The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions. If it is passed input that it does not recognise as boolean or <code>nil</code>, it is possible to specify a default value to return.
== Syntax ==
<syntaxhighlight lang="lua">yesno(value, default)</syntaxhighlight>
<code>value</code> is the value to be tested. Boolean input or boolean-style input (see below) always evaluates to either <code>true</code> or <code>false</code>, and <code>nil</code> always evaluates to <code>nil</code>. Other values evaluate to <code>default</code>.
== Usage ==
First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages. For normal wiki pages you can use {{tl|yesno}} instead.
<syntaxhighlight lang="lua">
local yesno = require('Module:Yesno')
</syntaxhighlight>
Some input values always return <code>true</code>, and some always return <code>false</code>. <code>nil</code> values always return <code>nil</code>.
<syntaxhighlight lang="lua">
-- These always return true:
yesno('yes')
yesno('y')
yesno('true')
yesno('t')
yesno('1')
yesno(1)
yesno(true)
-- These always return false:
yesno('no')
yesno('n')
yesno('false')
yesno('f')
yesno('0')
yesno(0)
yesno(false)
-- A nil value always returns nil:
yesno(nil)
</syntaxhighlight>
String values are converted to lower case before they are matched:
<syntaxhighlight lang="lua">
-- These always return true:
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')
-- These always return false:
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')
</syntaxhighlight>
You can specify a default value if yesno receives input other than that listed above. If you don't supply a default, the module will return <code>nil</code> for these inputs.
<syntaxhighlight lang="lua">
-- These return nil:
yesno('foo')
yesno({})
yesno(5)
yesno(function() return 'This is a function.' end)
-- These return true:
yesno('foo', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)
-- These return "bar":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')
</syntaxhighlight>
Note that the blank string also functions this way:
<syntaxhighlight lang="lua">
yesno('') -- Returns nil.
yesno('', true) -- Returns true.
yesno('', 'bar') -- Returns "bar".
</syntaxhighlight>
Although the blank string usually evaluates to false in wikitext, it evaluates to true in Lua. This module prefers the Lua behaviour over the wikitext behaviour. If treating the blank string as false is important for your module, you will need to remove blank arguments at an earlier stage of processing.<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Lua metamodules]]
}}</includeonly>
dhytvcquvmn6g5oi98dlhqfl75cqf8v